/* ==================================================================
   hOps — ühtne kujundus v2  (2026-09)
   Põhimõte: üks värvide, suuruste ja vahede komplekt (allpool :root).
   Kõik plokid kasutavad samu väärtusi — ära kirjuta PHP-sse inline
   font-size / color / padding väärtusi, vaid kasuta klasse.

   Mõõdud:   vahe plokkide vahel 14px · kasti sisu 18px · nurk 10px (kast)
             6px (nupp, väli) · nupu ja välja kõrgus 36px (väike 30px)
   Kiri:     11 silt · 12 detail · 13 tabel/nupp · 14 põhitekst
             16 kasti pealkiri · 22 lehe pealkiri · 24 KPI number
   ================================================================== */

:root {
    /* Bränd */
    --navy: #1B2A41;          /* logo, lehe pealkirjad, aktiivne menüü */
    --aktsent: #245A96;       /* lingid ja nupud */
    --aktsent-tume: #1B4575;
    --aktsent-hele: #E8EFF8;  /* toonis nupu taust */
    --aktsent-hele-2: #D6E3F3;

    /* Neutraalid */
    --taust: #F4F6F8;         /* lehe taust */
    --pind: #FFFFFF;          /* kastid */
    --pind-2: #F8F9FB;        /* tabelipäis, lukus väli */
    --joon: #E3E7EC;          /* kastide ja ridade jooned */
    --joon-tugev: #CFD6DE;    /* väljade ääris */
    --tekst: #1F2733;
    --tekst-2: #4B5563;       /* teisene tekst */
    --tekst-3: #6B7684;       /* sildid, detailid (kontrast >= 4.5:1) */
    --tekst-4: #98A2AF;       /* ikoonid, kohatäide */

    /* Staatused: tekst + taust */
    --punane: #B4483C;   --punane-t: #FBE7E4;
    --kollane: #8A6100;  --kollane-t: #FDF1C7;
    --oranz: #B85C00;    --oranz-t: #FCE6D0;
    --roheline: #2F7D58; --roheline-t: #E0F1E7;
    --sinine-s: #2A64A8; --sinine-t: #E3ECF8;
    --lilla: #6D4AB0;    --lilla-t: #EEE7FB;
    --hall-s: #5F6B78;   --hall-t: #EDF0F3;

    /* Mõõdud */
    --vahe: 14px;
    --vahe-2: 28px;
    --kast-pad: 18px;
    --r-kast: 10px;
    --r-nupp: 6px;
    --h-nupp: 36px;
    --h-nupp-v: 30px;
    --vari: 0 1px 2px rgba(16, 24, 40, .04);
    --vari-ule: 0 12px 32px rgba(16, 24, 40, .16);
    --fookus: 0 0 0 3px rgba(36, 90, 150, .18);

    --font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, Arial, sans-serif;
    --font-pealkiri: 'Space Grotesk', var(--font);

    /* Vanad nimed (kasutusel PHP inline stiilides) — suunatud uutele */
    --sinine: var(--aktsent);
    --sinine-tume: var(--aktsent-tume);
    --hall-taust: var(--taust);
    --hall-joon: var(--joon);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }   /* peidetud element jääb peidetuks ka siis, kui klass annab talle display väärtuse */

/* Kerimisriba ruum on alati broneeritud. Ilma selleta on luhike leht (nt
   Hooned) 15px laiem kui pikk leht (nt Tegevused) ja keskele joondatud
   menuu + sisu hupivad lehte vahetades paar pikslit korvale (Egon 06.10). */
html { scrollbar-gutter: stable; }

body {
    margin: 0;
    font-family: var(--font);
    background: var(--taust);
    color: var(--tekst);
    font-size: 14px;
    line-height: 1.45;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--aktsent); text-decoration: none; }
a:hover { color: var(--aktsent-tume); text-decoration: underline; }

input, textarea, select, button { font-family: inherit; font-size: inherit; }

/* ------------------------------------------------------------------
   PAIGUTUS: külgmenüü + sisu
   ------------------------------------------------------------------ */
/* Menuu + sisu on uks keskele joondatud plokk: 232px menuu + 1556px sisu.
   Laial ekraanil jaab tyhi ruum vordselt molemale poole, mitte ainult
   paremale (Egoni tellimus 06.10). Menuu on sticky, mitte fixed - nii
   liigub ta keskjoondusega automaatselt kaasa. */
.layout {
    display: flex;
    min-height: 100vh;
    align-items: flex-start;
    max-width: 1788px;      /* 232 + 1556 */
    margin: 0 auto;
}

.sidebar {
    width: 232px;
    flex-shrink: 0;
    background: var(--pind);
    color: var(--tekst);
    display: flex;
    flex-direction: column;
    padding: 18px 0;
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-x: hidden;
    overflow-y: auto;
    border-right: 1px solid var(--joon);
    z-index: 100;
}

/* Lehte blokeeriv teade (lehe_teade): nupud paremal ja uhes laiuses nagu mujal */
.teate-teod { display: flex; justify-content: flex-end; align-items: center; gap: 14px; }
.teate-teod .btn { min-width: 140px; flex-shrink: 0; }
.modaal-keha > p:first-child { margin-top: 0; }

/* Vana menyy lukustusnupp on nyyd "tagasi eelmisele lehele" (Egon 06.10):
   vaike umarate servadega ruut logo korval, sees ainult nool. */
.sidebar-tagasi {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; flex-shrink: 0; padding: 0;
    border: 1px solid var(--joon); border-radius: var(--r-nupp);
    background: var(--pind-2); color: var(--tekst-3);
}
.sidebar-tagasi:hover { background: var(--taust); color: var(--tekst); text-decoration: none; }
.sidebar-tagasi svg { display: block; }

/* Logo: alati sõnamärk hOps — kitsas menüüs väike (mahub 64px ribasse), laias suurem */
.sidebar .brand { height: 34px; padding: 0 12px 0 20px; margin-bottom: 12px; display: flex; align-items: center;
    justify-content: space-between; gap: 10px; white-space: nowrap; }
.sidebar .brand .hops-logo { font-size: 24px !important; }

.sidebar-label { white-space: nowrap; }

.sidebar-nav { flex: 1; display: flex; flex-direction: column; gap: 2px; margin-top: 8px; padding: 0 8px; }
.sidebar-nav a {
    display: flex;
    align-items: center;
    gap: 12px;
    height: 38px;
    padding: 0 13px;
    color: var(--tekst-2);
    font-size: 13px;
    font-weight: 500;
    border-radius: var(--r-nupp);
    white-space: nowrap;
}
.sidebar-nav a svg { flex-shrink: 0; color: var(--tekst-4); transition: color .15s; }
.sidebar-nav a:hover { background: var(--taust); text-decoration: none; color: var(--tekst); }
.sidebar-nav a:hover svg { color: var(--tekst-2); }
.sidebar-nav a.aktiivne { background: var(--aktsent-hele); color: var(--navy); font-weight: 600; }
.sidebar-nav a.aktiivne svg { color: var(--aktsent); }

/* Kliendi ja hoone valik on uks ruhm: nad on teineteise kulge ja menuulingid
   nende kulge (Egoni soov 07.10). Varem oli brandi ja valikute vahel 36 px,
   valikute vahel 14 ja menuuni veel 14 - menuu algas alles 202 px pealt. */
.sidebar-hoone-kontekst { padding: 0 16px; overflow: hidden; }
.sidebar > .sidebar-hoone-kontekst { margin: 6px 0 0; }
.sidebar > .sidebar-hoone-kontekst + .sidebar-hoone-kontekst { margin-top: 2px; }
.sidebar > .sidebar-nav { margin-top: 10px; }
.sidebar-hoone-silt, .sidebar-hoone-vorm { display: flex; align-items: center; gap: 9px; font-size: 12px; font-weight: 600; color: var(--tekst-2); padding: 3px 0; }
.sidebar-hoone-silt svg, .sidebar-hoone-vorm svg { color: var(--tekst-3); flex-shrink: 0; }
.sidebar-hoone-kontekst select {
    flex: 1; width: 100%;
    font-size: 12px; font-weight: 600;
    height: 32px; padding: 0 8px;
    border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp);
    background: var(--pind-2); color: var(--tekst-2);
}

.sidebar-user { padding: 14px 20px 0; margin-top: 12px; border-top: 1px solid var(--joon); font-size: 13px; color: var(--tekst-3); overflow: hidden; white-space: nowrap; }
.sidebar-user .roll-badge { margin: 6px 0 10px; display: inline-block; }
.sidebar-logout { display: block; color: var(--aktsent); margin-top: 6px; font-size: 13px; }
.sidebar-logout:hover { color: var(--aktsent-tume); }

/* Menyy on tavalises voos (sticky), seega sisu ei vaja enam margin-left'i. */
.main { flex: 1; min-width: 0; margin-left: 0; }

/* Sisu algab alati samast vasakust servast (ka kitsamad vormilehed) */
.container {
    /* Uks laius koigile lehtedele (Egoni tellimus 25.09): 1500px sisu + 2 x 28px
       polster. Varem oli see ainult Eelarve lehel ja teised olid kitsamad -
       lehte vahetades huppas kaartide serv. */
    max-width: 1556px;
    margin: 0;
    padding: 24px 28px 64px;
}
.container > .tookask-sisu,
.container > .leht { margin-left: 0 !important; margin-right: auto !important; }

/* ------------------------------------------------------------------
   KIRI
   ------------------------------------------------------------------ */
h1 {
    font-family: var(--font-pealkiri);
    font-size: 22px;
    font-weight: 600;
    line-height: 1.25;
    letter-spacing: -.01em;
    margin: 0 0 16px;
    color: var(--navy);
    text-transform: none;
}
h2 {   /* sektsiooni silt kastide kohal */
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--tekst-3);
    margin: var(--vahe-2) 0 10px;
}
h3 {   /* kasti silt */
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--tekst-3);
    margin: 0 0 10px;
}
.muted { color: var(--tekst-3); font-size: 13px; }
.right { text-align: right; }
.mt-0 { margin-top: 0; }

.breadcrumb { font-size: 12px; color: var(--tekst-3); margin-bottom: 6px; }
.breadcrumb a { color: var(--tekst-2); }

/* ------------------------------------------------------------------
   KAST ja RUUDUSTIK
   ------------------------------------------------------------------ */
.card {
    background: var(--pind);
    border: 1px solid var(--joon);
    border-radius: var(--r-kast);
    box-shadow: var(--vari);
    padding: var(--kast-pad);
    margin-bottom: var(--vahe);
    min-width: 0;
}
.card > :last-child { margin-bottom: 0; }

.grid { display: grid; gap: var(--vahe); margin-bottom: var(--vahe); }
.grid > .card { margin-bottom: 0; }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 800px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }

/* Lehe päis: pealkiri vasakul, nupud paremal */
.lehe-pais { display: flex; align-items: center; justify-content: flex-start; gap: var(--vahe); flex-wrap: wrap; margin-bottom: 16px; }
.lehe-pais h1 { margin: 0; }
.lehe-pais > :first-child { margin-right: auto; }   /* kõik nupud koos paremale */
.lehe-pais .lehe-pais-tekst { min-width: 0; }
.lehe-pais .lehe-pais-tekst p { margin: 4px 0 0; }

/* ------------------------------------------------------------------
   NUPUD — üks kõrgus, üks nurk, tavakiri (mitte SUURTÄHED)
   .btn            toonis põhinupp (sinine)
   .btn-esmane     täidetud — lehe/kasti peamine tegevus (max 1 kastis)
   .btn-hall       teisene
   .btn-roheline   lõpetamine/kinnitamine
   .btn-punane     kustutamine
   .btn-small      väike (tabeliread, kitsad kastid)
   ------------------------------------------------------------------ */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: var(--h-nupp);
    padding: 0 16px;
    line-height: 1;
    background: var(--aktsent-hele);
    color: var(--aktsent);
    border: 1px solid transparent;
    border-radius: var(--r-nupp);
    font-size: 13px;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    white-space: nowrap;
    cursor: pointer;
    text-decoration: none;
    transition: background .12s, color .12s;
}
.btn:hover { background: var(--aktsent-hele-2); color: var(--aktsent-tume); text-decoration: none; }
.btn:focus-visible { outline: none; box-shadow: var(--fookus); }
.btn:disabled, .btn[disabled] { opacity: .5; cursor: not-allowed; }
.btn-esmane { background: var(--aktsent); color: #fff; }
.btn-esmane:hover { background: var(--aktsent-tume); color: #fff; }
.btn-hall { background: var(--hall-t); color: var(--tekst-2); }
.btn-hall:hover { background: #E1E5EA; color: var(--tekst); }
.btn-punane { background: var(--punane-t); color: var(--punane); }
.btn-punane:hover { background: #F7D5D0; color: #963A30; }
.btn-roheline { background: var(--roheline-t); color: var(--roheline); }
.btn-roheline:hover { background: #CDE8D8; color: #246746; }
.btn-small { height: var(--h-nupp-v); padding: 0 12px; font-size: 12px; }
.btn-lisa { flex-shrink: 0; }
.btn-lisa svg, .btn svg { flex-shrink: 0; }

.icon-btn {
    background: transparent; border: none; padding: 5px; cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: var(--r-nupp); vertical-align: middle; color: var(--tekst-4);
}
.icon-btn:hover { background: var(--hall-t); color: var(--tekst); }
.icon-btn.icon-muuda { color: var(--tekst-4); }
.icon-btn.icon-kustuta { color: var(--tekst-4); }
.icon-btn.icon-kustuta:hover { color: var(--punane); background: var(--punane-t); }
.rea-toimingud { display: inline-flex; align-items: center; gap: 2px; }
.hover-rida:hover .rea-toimingud .icon-btn { color: var(--tekst-2); }
.toimingu-veerg { width: 32px; text-align: center; white-space: nowrap; }

/* Rea-ikoonid: nähtavad, kuid vaiksed; kustutamine punaseks alles hiire all */
[class$="-toimingud"] { opacity: 1 !important; }
[class$="-toimingud"] .icon-btn { color: var(--tekst-4); }
tr:hover [class$="-toimingud"] .icon-btn { color: var(--tekst-2); }
[class$="-toimingud"] button.icon-btn:hover,
[class$="-toimingud"] .icon-kustuta:hover { color: var(--punane) !important; background: var(--punane-t); }
.manus-kustuta-vorm { opacity: .6 !important; }
.manus-rida:hover .manus-kustuta-vorm { opacity: 1 !important; }

/* ------------------------------------------------------------------
   STAATUSED JA MÄRGID
   ------------------------------------------------------------------ */
.badge {
    display: inline-flex; align-items: center; justify-content: center;
    height: 22px; padding: 0 10px; min-width: 88px;
    border-radius: 999px;
    font-size: 12px; font-weight: 600; line-height: 1; white-space: nowrap;
}
.staatus-punane  { background: var(--punane-t);  color: var(--punane); }
.staatus-kollane { background: var(--kollane-t); color: var(--kollane); }
.staatus-oranz   { background: var(--oranz-t);   color: var(--oranz); }
.staatus-roheline{ background: var(--roheline-t);color: var(--roheline); }
.staatus-sinine  { background: var(--sinine-t);  color: var(--sinine-s); }
.staatus-hall    { background: var(--hall-t);    color: var(--hall-s); }
.staatus-lilla   { background: var(--lilla-t);   color: var(--lilla); }
.badge-intsident { background: var(--lilla-t); color: var(--lilla); }
.badge-vastuvoetud { background: var(--roheline-t); color: var(--roheline); }
.badge-aastahooldus { background: var(--sinine-t); color: var(--sinine-s); }
/* Ootel: plaanitud aeg on kaes, aga keegi ei ole tood toosse votnud (Egon 29.10) */
.badge-ootel { background: var(--oranz-t); color: var(--oranz); }

/* „UUS“ — aktiveerimata koopia. Kaob hetkel, kui kava aktiveeritakse. */
.uus-silt {
    display: inline-flex; align-items: center; height: 16px; padding: 0 6px;
    margin-left: 6px; vertical-align: middle;
    border-radius: 999px; background: var(--sinine-t); color: var(--sinine-s);
    font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
    line-height: 1; white-space: nowrap;
}

.roll-badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; background: var(--hall-t); color: var(--tekst-2); }

.marker {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 16px; height: 16px; padding: 0 4px;
    border-radius: 8px; font-size: 9px; font-weight: 700; line-height: 1; letter-spacing: .02em;
    flex-shrink: 0; cursor: help; vertical-align: middle; position: relative; top: -1px;
}
.marker-intsident { background: var(--lilla-t); color: var(--lilla); }
.marker-vastuvoetud { background: var(--roheline-t); color: var(--roheline); }
.marker-kinnitamisel { background: var(--hall-t); color: var(--hall-s); }
.marker-lahtine { background: var(--punane-t); color: var(--punane); }
.marker-aastahooldus { background: var(--sinine-t); color: var(--sinine-s); }

/* ------------------------------------------------------------------
   VORMID — kõik väljad 36px, sama ääris ja fookus
   ------------------------------------------------------------------ */
.form-row { margin-bottom: var(--vahe); min-width: 0; }
.form-row label, .silt {
    display: block; margin-bottom: 5px;
    font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em;
    color: var(--tekst-3);
}
.form-row input[type=text], .form-row input[type=email], .form-row input[type=password],
.form-row input[type=date], .form-row input[type=number], .form-row input[type=tel],
.form-row input[type=url], .form-row input[type=search], .form-row select, .form-row textarea,
.modal-sisu input[type=text], .modal-sisu input[type=number], .modal-sisu input[type=date], .modal-sisu select,
.card input[type=text]:not(.pealkirja-otsing), .card input[type=email], .card input[type=date], .card input[type=number], .card select:not(.pealkirja-otsing), .card textarea {
    width: 100%;
    height: var(--h-nupp);
    padding: 0 10px;
    border: 1px solid var(--joon-tugev);
    border-radius: var(--r-nupp);
    background: var(--pind);
    color: var(--tekst);
    font-size: 14px;
    font-family: inherit;
    transition: border-color .12s, box-shadow .12s;
}
.form-row textarea, .card textarea { height: auto; min-height: 84px; padding: 8px 10px; line-height: 1.45; }
.form-row input:focus, .form-row select:focus, .form-row textarea:focus,
.card input:not(.pealkirja-otsing):focus, .card select:not(.pealkirja-otsing):focus, .card textarea:focus, .modal-sisu input:focus, .modal-sisu select:focus {
    outline: none; border-color: var(--aktsent); box-shadow: var(--fookus);
}
input[readonly], input:disabled, select:disabled, textarea[readonly] { background: var(--pind-2) !important; color: var(--tekst-2); }
.form-row .help { font-size: 12px; color: var(--tekst-3); margin-top: 4px; }
input[type=checkbox], input[type=radio] { accent-color: var(--aktsent); width: 16px; height: 16px; }

/* Failivalik brauseri enda nupu asemel meie nupu stiilis */
input[type=file] { font-size: 13px; color: var(--tekst-3); }
input[type=file]::file-selector-button {
    height: var(--h-nupp-v); padding: 0 12px; margin-right: 10px;
    border: none; border-radius: var(--r-nupp);
    background: var(--hall-t); color: var(--tekst-2);
    font: 600 12px var(--font); cursor: pointer;
}
input[type=file]::file-selector-button:hover { background: #E1E5EA; }

form.inline { display: inline; }

/* ------------------------------------------------------------------
   TEATED
   ------------------------------------------------------------------ */
.flash { padding: 10px 14px; border-radius: var(--r-nupp); margin-bottom: 16px; font-size: 14px; }
.flash-ok { background: var(--roheline-t); color: var(--roheline); }
.flash-viga { background: var(--punane-t); color: var(--punane); }
.flash-teated {
    position: fixed; top: 18px; left: 50%; transform: translateX(-50%);
    z-index: 1100; display: flex; flex-direction: column; gap: 8px; align-items: center;
    width: max-content; max-width: calc(100vw - 40px); pointer-events: none;
}
.flash-teated .flash {
    margin: 0; padding: 12px 20px; border-radius: 8px; font-weight: 500;
    box-shadow: var(--vari-ule); border: 1px solid rgba(0,0,0,.05);
    pointer-events: auto; cursor: pointer;
    animation: flash-sisse .2s ease-out; transition: opacity .35s, transform .35s;
}
.flash-teated .flash.peidus { opacity: 0; transform: translateY(-8px); }
@keyframes flash-sisse { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
@media print { .flash-teated { display: none; } }

/* ------------------------------------------------------------------
   TABELID
   Tabel elab oma kastis: kui ei mahu, kerib kast (mitte ei lähe üle
   ääre). Päis jääb kastis kerides nähtavale.
   ------------------------------------------------------------------ */
table { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
th, td { text-align: left; padding: 9px 10px; border-bottom: 1px solid var(--joon); vertical-align: middle; }
th {
    background: var(--pind-2);
    font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em;
    color: var(--tekst-3); white-space: nowrap;
}
tr:last-child td { border-bottom: none; }
tr:hover td { background: #F7F9FC; }

.card:has(> table), .card:has(> form > table), .card:has(> .tabel-keri) {
    padding: 0;
    /* Kerib leht, mitte kast — nii ei ole kunagi kahte kerimisriba korraga (23.09) */
    overflow-x: auto;
    overflow-y: visible;
}
.card:has(> table) > :not(table):not(form), .card:has(> form > table) > :not(form) { margin-left: var(--kast-pad); margin-right: var(--kast-pad); }
.card:has(> table) > :not(table):not(form):first-child { margin-top: var(--kast-pad); }
.card:has(> table) > :not(table):not(form):last-child { margin-bottom: var(--kast-pad); }
.card:has(> table) th:first-child, .card:has(> table) td:first-child,
.card:has(> form > table) th:first-child, .card:has(> form > table) td:first-child { padding-left: var(--kast-pad); }
.card:has(> table) th:last-child, .card:has(> table) td:last-child,
.card:has(> form > table) th:last-child, .card:has(> form > table) td:last-child { padding-right: var(--kast-pad); }

table tr:first-child th {
    position: sticky !important; top: 0; z-index: 30;
    background: var(--pind-2);
    box-shadow: inset 0 -1px 0 var(--joon);
}
.eelarve-tabel tr:first-child th.kuu-veerg, .hoolduskava-tabel tr:first-child th.kuu-veerg { background: #F2F5F9; }

.andmetabel { width: 100%; min-width: 0; table-layout: auto; }
/* .eelarve-tabel / .hoolduskava-tabel laius: vt assets/eelarve-tabel.css */
table.andmetabel { display: table; }
.andmetabel th { position: relative; }
.andmetabel th, .andmetabel td { overflow: hidden; text-overflow: ellipsis; }
.andmetabel td { white-space: normal; word-break: normal; overflow-wrap: normal; }
.andmetabel .raha-veerg, .andmetabel .kaetud-veerg, .raha-veerg { text-align: right; white-space: nowrap; }
.hoolduskavad-tabel { table-layout: auto; }
.hoolduskavad-tabel th { position: relative; }
.hoolduskavad-tabel th, .hoolduskavad-tabel td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.eelarve-tabel .kuu-veerg, .hoolduskava-tabel .kuu-veerg { font-size: 12px; }
.kokku-rida { background: var(--pind-2); font-weight: 600; }
.kokku-rida td { padding-top: 10px; padding-bottom: 10px; border-top: 1px solid var(--joon-tugev); }
/* Summad: link ilmub alles hiire all */
.eelarve-tabel td a, .hoolduskava-tabel td a { color: inherit; }
.eelarve-tabel td a:hover, .hoolduskava-tabel td a:hover { color: var(--aktsent); }

/* Tabelipäise otsing ja sorteerimine (assets/tabelivaade.js) */
.pais-sisu { display: flex; align-items: center; gap: 4px; }
.pais-nimi { white-space: nowrap; }
.otsingu-kast { position: relative; display: inline-block; width: 100%; }
.pealkirja-otsing {
    width: 100%; margin-left: -6px; padding: 3px 20px 3px 6px;
    font-family: inherit; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em;
    color: var(--tekst-3); border: none; border-bottom: 1px solid transparent; border-radius: 0; background: transparent;
}
.pealkirja-otsing:hover { border-bottom-color: var(--joon-tugev); }
.pealkirja-otsing::placeholder { color: var(--tekst-3); opacity: 1; text-transform: uppercase; }
.pealkirja-otsing:focus { outline: none; border-bottom-color: var(--aktsent); color: var(--tekst); }
select.pealkirja-otsing { padding: 3px 4px; min-width: 90px; cursor: pointer; }
.otsingu-ikoon { position: absolute; right: 7px; top: 50%; width: 8px; height: 8px; border: 1.5px solid var(--tekst-4); border-radius: 50%; transform: translateY(-65%); pointer-events: none; }
.otsingu-ikoon::after { content: ''; position: absolute; width: 1.5px; height: 5px; background: var(--tekst-4); right: -2.5px; bottom: -4px; transform: rotate(45deg); }
.sordi-ikoon { cursor: pointer; color: var(--tekst-4); flex-shrink: 0; user-select: none; font-size: 12px; }
.sordi-ikoon.aktiivne { color: var(--aktsent); }
@media print { .pealkirja-otsing, .sordi-ikoon, .laiuse-kaepide { display: none !important; } }

/* Kasutaja tabelivaade */
.vaate-nupp { display: inline-flex; align-items: center; padding: 4px; border: none; background: transparent; color: var(--tekst-4); border-radius: 4px; cursor: pointer; vertical-align: middle; }
.vaate-nupp:hover { color: var(--aktsent); background: var(--aktsent-hele); }
@media print { .vaate-nupp { display: none; } }
.veeru-rida { display: flex; align-items: center; gap: 8px; padding: 6px; border-radius: 6px; }
.veeru-rida:hover { background: var(--taust); }
.veeru-rida.lohistan { opacity: .45; }
.veeru-rida.sihtmark { box-shadow: inset 0 2px 0 var(--aktsent); }
.veeru-rida input[type="checkbox"] { margin: 0; cursor: pointer; }
.veeru-pide { color: var(--tekst-4); cursor: grab; user-select: none; letter-spacing: -2px; }
.veeru-nimi { font-size: 13px; color: var(--tekst-2); }
.laiuse-kaepide { position: absolute; top: 0; right: -3px; width: 7px; height: 100%; cursor: col-resize; user-select: none; z-index: 2; }
.laiuse-kaepide:hover { background: linear-gradient(to right, transparent 2px, var(--aktsent-hele-2) 2px, var(--aktsent-hele-2) 4px, transparent 4px); }

/* ------------------------------------------------------------------
   SAKID, AVATAV PLOKK, MODAALAKEN
   ------------------------------------------------------------------ */
.tab-nav { display: flex; gap: 4px; margin-bottom: 16px; border-bottom: 1px solid var(--joon); }
.tab-nav a { padding: 9px 14px; font-size: 14px; font-weight: 500; color: var(--tekst-2); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tab-nav a:hover { color: var(--tekst); text-decoration: none; }
.tab-nav a.active { color: var(--navy); border-bottom-color: var(--aktsent); font-weight: 600; }

details.lisa-uus { margin: var(--vahe-2) 0 var(--vahe); }
details.lisa-uus > summary { cursor: pointer; font-size: 16px; font-weight: 600; list-style: none; display: inline-flex; align-items: center; gap: 8px; color: var(--tekst); }
details.lisa-uus > summary::-webkit-details-marker { display: none; }
details.lisa-uus > summary::before { content: "▸"; font-size: 12px; color: var(--tekst-3); display: inline-block; transition: transform .15s; }
details.lisa-uus[open] > summary::before { transform: rotate(90deg); }
details.lisa-uus > summary:hover { color: var(--aktsent); }
details.lisa-uus .card { margin-top: 12px; }

.modal-varjund { position: fixed; inset: 0; background: rgba(16, 24, 40, .45); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 20px; }
.modal-varjund[hidden] { display: none !important; }
.modal-sisu { background: var(--pind); border-radius: 12px; padding: 24px; max-width: 520px; width: 100%; box-shadow: var(--vari-ule); }
.modaal { overflow-y: auto; }
.modaal .modal-sisu { max-height: calc(100vh - 40px); overflow-y: auto; padding: 0; text-align: left; }
.modaal .modal-sisu.modal-lai { max-width: 820px; }
.modaal-pais { position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 24px 14px; background: var(--pind); border-bottom: 1px solid var(--joon); border-radius: 12px 12px 0 0; z-index: 1; }
.modaal-pais h2 { margin: 0; font-size: 16px; font-weight: 600; text-transform: none; letter-spacing: 0; color: var(--tekst); }
.modaal-keha { padding: 20px 24px 24px; }
.modaal-keha > .form-row:last-of-type { margin-bottom: 0; }
.modaal-sulge { border: none; background: transparent; color: var(--tekst-4); font-size: 22px; line-height: 1; padding: 2px 6px; border-radius: 6px; cursor: pointer; }
/* Kerimisriba ei tohi akna umardatud nurki kinni katta (muidu on vasakud nurgad kumerad, paremad kandilised) */
.modaal .modal-sisu { scrollbar-width: thin; scrollbar-color: var(--joon-tugev) transparent; }
.modaal .modal-sisu::-webkit-scrollbar { width: 10px; }
.modaal .modal-sisu::-webkit-scrollbar-track { background: transparent; }
.modaal .modal-sisu::-webkit-scrollbar-thumb { background: var(--joon-tugev); border-radius: 8px;
    border: 3px solid transparent; background-clip: padding-box; }
.modaal .modal-sisu::-webkit-scrollbar-thumb:hover { background: var(--tekst-4); background-clip: padding-box; border: 3px solid transparent; }
.modaal-sulge:hover { background: var(--taust); color: var(--tekst); }
body.modaal-avatud { overflow: hidden; }

/* ------------------------------------------------------------------
   SISSELOGIMINE
   ------------------------------------------------------------------ */
.login-wrap { max-width: 380px; margin: 90px auto; background: var(--pind); padding: 32px; border-radius: 12px; border: 1px solid var(--joon); box-shadow: var(--vari); }
.login-wrap h1 { text-align: center; }
.login-wrap .btn { width: 100%; }
.login-logo { text-align: center; margin-bottom: 26px; }
.login-tunnuslause { margin-top: 8px; font-family: var(--font-pealkiri); font-weight: 600; font-size: 14px; letter-spacing: .01em; color: #8A94A3; }
.login-tunnuslause b { font-weight: 600; color: var(--navy); }

/* ------------------------------------------------------------------
   LEHE ERIPLOKID
   ------------------------------------------------------------------ */
.kinnituste-plokk { display: flex; flex-direction: column; gap: 6px; margin: 0 0 14px; }
.kinnituste-plokk > div { display: flex; gap: 12px; align-items: baseline; font-size: 14px; }
.kinnituste-plokk .silt { width: 150px; flex-shrink: 0; margin: 0; }

.roll-valik { width: 100%; height: 30px; padding: 0 6px; font-size: 12px; color: var(--tekst-2); background: var(--pind-2); border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); cursor: pointer; }
.roll-valik:hover { border-color: var(--aktsent-hele-2); }

.susteem-valik-rida.valitud-susteem, .hk-valik-rida.valitud-susteem { background: var(--aktsent-hele); color: var(--aktsent-tume); font-weight: 600; }
.hk-valik-rida:hover { background: var(--aktsent-hele); }

.kulurea-vorm { display: flex; flex-direction: column; gap: var(--vahe); }
.kulurea-grupp { display: flex; gap: var(--vahe); flex-wrap: wrap; }
.kulurea-grupp .form-row { flex: 1; min-width: 190px; margin: 0; }
.kulurea-vorm input[type="text"], .kulurea-vorm input[type="number"], .kulurea-vorm select { width: 100%; height: var(--h-nupp); }
.kulurea-vorm #prog_maks { background: var(--pind-2); color: var(--tekst-3); }
.kulurea-nupud { display: flex; gap: 8px; justify-content: flex-end; border-top: 1px solid var(--joon); padding-top: var(--vahe); }
.kulurea-vorm .periood-rida { display: flex; gap: 8px; align-items: center; }
.kulurea-vorm .periood-rida input[type="number"] { width: 90px; }

/* Menüü kohandamine */
.menuu-vaate-nupp { opacity: .7; }
.menuu-vaate-nupp:hover { opacity: 1; }
.menuu-vaate-aken { position: fixed; left: 8px; bottom: 90px; z-index: 120; background: var(--pind); border: 1px solid var(--joon); border-radius: var(--r-kast); box-shadow: var(--vari-ule); padding: 10px 12px; font-size: 12px; min-width: 200px; color: var(--tekst-2); }
.menuu-vaate-read { display: flex; flex-direction: column; gap: 3px; margin: 8px 0; max-height: 300px; overflow-y: auto; }
.menuu-vaate-rida { display: flex; align-items: center; gap: 6px; cursor: grab; padding: 3px 4px; border-radius: 4px; }
.menuu-vaate-rida:hover { background: var(--aktsent-hele); }
.menuu-vaate-rida input { width: auto; }
.menuu-vaate-taasta { color: var(--aktsent); text-decoration: none; font-size: 11px; }

/* Abipaneel */
.abi-nupp { position: fixed; right: 20px; bottom: 20px; z-index: 140; width: 40px; height: 40px; border-radius: 50%; border: none; background: var(--navy); color: #fff; font-size: 17px; font-weight: 700; cursor: pointer; box-shadow: 0 4px 14px rgba(16,24,40,.22); }
.abi-nupp:hover { background: var(--aktsent); }
.abi-paneel { position: fixed; right: 20px; bottom: 70px; z-index: 140; width: 340px; max-height: 70vh; display: flex; flex-direction: column; background: var(--pind); border: 1px solid var(--joon); border-radius: 12px; box-shadow: var(--vari-ule); padding: 12px 14px; }
.abi-paneel[hidden] { display: none; }
.abi-pais { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.abi-paneel input { width: 100%; height: 34px; }
.abi-tulemused { overflow-y: auto; margin: 10px 0; display: flex; flex-direction: column; gap: 10px; }
.abi-kirje { border-bottom: 1px solid var(--joon); padding-bottom: 8px; }
.abi-kirje:last-child { border-bottom: none; }
.abi-grupp { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--tekst-4); }
.abi-pealkiri { font-size: 13px; font-weight: 600; color: var(--tekst); margin: 2px 0; }
.abi-tekst { font-size: 12px; color: var(--tekst-3); line-height: 1.45; }
.abi-tekst a { white-space: nowrap; }
.abi-tyhi { font-size: 12px; color: var(--tekst-4); }
.abi-juhend { font-size: 12px; }
@media print { .abi-nupp, .abi-paneel { display: none !important; } }

/* ------------------------------------------------------------------
   UUED ÜHISKOMPONENDID (kasuta PHP-s inline stiilide asemel)
   ------------------------------------------------------------------ */
/* KPI kast:  <div class="card kpi"><h3>Kulunud</h3><div class="kpi-vaartus">213 538 €</div></div> */
.kpi { padding: 14px var(--kast-pad) 16px; }
.kpi h3 { margin-bottom: 6px; }
.kpi-vaartus { font-family: var(--font-pealkiri); font-size: 24px; font-weight: 600; line-height: 1.15; color: var(--navy); font-variant-numeric: tabular-nums; }
.kpi-vaartus small { font-family: var(--font); font-size: 13px; font-weight: 600; color: var(--aktsent); margin-left: 4px; }
.kpi-vaartus.pos { color: var(--roheline); }
.kpi-vaartus.neg { color: var(--punane); }

/* Loendi rida kastis:  <a class="loend-rida" href="..">
      <span class="loend-tekst">Pealkiri<span class="loend-detail">23.09.2026</span></span>
      <span class="loend-lopp">…märgid… <span class="badge staatus-kollane">Töös</span></span></a> */
.loend { display: flex; flex-direction: column; }
.loend-rida { display: flex; justify-content: space-between; align-items: center; gap: 10px; min-height: 48px; padding: 7px 0; border-bottom: 1px solid var(--joon); color: var(--tekst); text-decoration: none; }
.loend-rida:last-child { border-bottom: none; }
.loend-rida:hover { text-decoration: none; background: linear-gradient(90deg, transparent, #F7F9FC 12%, #F7F9FC 88%, transparent); }
.loend-tekst { min-width: 0; font-size: 14px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.loend-detail { display: block; font-size: 12px; font-weight: 400; color: var(--tekst-3); margin-top: 1px; }
.loend-lopp { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.loend-tyhi { color: var(--tekst-3); font-size: 13px; padding: 6px 0; }

/* Kasti päis: silt vasakul, link/nupp paremal */
.kasti-pais { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.kasti-pais h3 { margin: 0; }
.kasti-pais a { font-size: 12px; font-weight: 600; }

/* ------------------------------------------------------------------
   LÄBIV LEHE RUUDUSTIK (<div class="leht">) — 4 võrdset veergu.
   Väljad, kastid ja nupud joonduvad üle lehe; nupp on 4. veerus.
   ------------------------------------------------------------------ */
/* Lehe laius: KOIK lehed on sama laiad nagu Eelarve, et kaartide servad
   jaaksid lehte vahetades samale joonele (Egoni tellimus 25.09). Laiuse annab
   .container (max-width 1480px) - siin oma piiri ei ole. */
.leht { max-width: 1500px; --l-joon: var(--joon); --l-silt: var(--tekst-3); --l-tekst: var(--tekst); }
.leht h1 { margin: 0 0 4px; }
.leht > p.muted { margin: 0 0 16px; font-size: 13px; }
.leht h2 { margin: 22px 0 8px; }
.leht .card { padding: var(--kast-pad); margin: 0; }
.leht .flash { margin: 0 0 var(--vahe); }
.ruut { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--vahe); align-items: end; }
.ruut + .ruut { margin-top: var(--vahe); }
.r-2 { grid-column: span 2; }
.r-3 { grid-column: span 3; }
.r-4 { grid-column: 1 / -1; }
.r-viimane { grid-column: 4; }
.leht .form-row { margin: 0; min-width: 0; }
.leht .form-row input:not([type=checkbox]):not([type=radio]), .leht .form-row select { width: 100%; height: var(--h-nupp); }
.leht .ruut .btn { width: 100%; height: var(--h-nupp); margin: 0; }
.leht .detail { font-size: 12px; color: var(--tekst-3); margin-top: 2px; }
.leht .hoiatus { color: var(--punane); }
.leht .ylevaade { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 0; }
.leht .ylevaade > div { padding: 14px var(--kast-pad); border-right: 1px solid var(--joon); min-width: 0; }
.leht .ylevaade > div:last-child { border-right: none; }
.leht .ylevaade .vaartus { font-size: 16px; font-weight: 600; color: var(--tekst); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.leht .rida { padding: 11px 0; border-bottom: 1px solid var(--joon); font-size: 13px; color: var(--tekst); align-items: center; }
.leht .rida:first-child { padding-top: 0; }
.leht .rida + .rida { margin-top: 0; }
.leht .rida > div { min-width: 0; overflow-wrap: anywhere; }
.leht .rida strong { font-weight: 600; }
.leht .nupud { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.leht .nupud form { margin: 0; }
.leht .nupud .btn { width: 100%; height: 34px; }
.leht .card > .ruut:not(.rida):first-child { margin-top: 0; }
.leht .lisa-vorm { margin-top: var(--vahe); }
.leht .card > p.muted:first-child { margin: 0 0 var(--vahe); }
@media (max-width: 800px) {
    .ruut, .leht .ylevaade { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .r-3, .r-viimane { grid-column: 1 / -1; }
    .leht .ylevaade > div:nth-child(2) { border-right: none; }
    .leht .ylevaade > div:nth-child(-n+2) { border-bottom: 1px solid var(--joon); }
}

/* ==================================================================
   TÖÖKÄSU LEHT (põhjaleht) — vt KUJUNDUSJUHEND.md 2.8
   ================================================================== */
.tookask-sisu { max-width: 1500px; margin: 0 !important; display: flex; flex-direction: column; gap: var(--vahe); }
.tookask-sisu > * { margin-top: 0; margin-bottom: 0; }
.tk-pais { display: flex; flex-direction: column; gap: 6px; }
.tk-pealkiri { display: flex; align-items: center; gap: 12px; }
.tk-pealkiri h1 { margin: 0; }
.tk-pealkiri .badge { height: 24px; padding: 0 12px; min-width: 0; }
.tk-meta { font-size: 13px; color: var(--tekst-3); }
.tk-meta strong { color: var(--tekst); font-weight: 600; }

/* Sammuriba */
.sammud { display: flex; align-items: center; padding: 16px 22px; }
.samm { display: flex; align-items: center; gap: 10px; min-width: 0; }
.samm-punkt { width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; border: 1.5px solid var(--joon-tugev); color: var(--tekst-4); box-sizing: border-box; }
.samm-nimi { font-size: 13px; font-weight: 500; color: var(--tekst-3); }
.samm-aeg { font-size: 12px; color: var(--tekst-3); }
.samm.tehtud .samm-punkt { background: var(--roheline); border-color: var(--roheline); color: #fff; }
.samm.tehtud .samm-nimi { color: var(--tekst); }
.samm.praegu .samm-punkt { background: var(--aktsent); border-color: var(--aktsent); color: #fff; box-shadow: 0 0 0 4px var(--aktsent-hele); }
.samm.praegu .samm-nimi { color: var(--navy); font-weight: 600; }
.samm-joon { flex-grow: 1; height: 2px; min-width: 20px; margin: 0 12px; background: var(--joon); }
.samm-joon.tehtud { background: var(--roheline); }

/* Ülaosa: vasak kast = 1 veerg, parem pool = 3 veergu, alumised servad kohakuti */
.tk-ulemine { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: var(--vahe) !important; align-items: stretch; margin: 0 !important; }
.tk-ulemine > .tk-muuda { grid-column: 1; display: flex; flex-direction: column; margin: 0; }
.tk-muuda .tk-valjad { display: flex; flex-direction: column; gap: var(--vahe); flex-grow: 1; }
.tk-muuda .tk-valjad .form-row { margin: 0; }
.tk-muuda > .btn, .tk-muuda form > .btn { width: 100%; margin-top: var(--kast-pad); }
.tk-parem { grid-column: 2 / -1; display: flex; flex-direction: column; gap: var(--vahe); min-width: 0; }
.tk-parem > .card { margin: 0; }
.tk-parem > .card:last-child { flex-grow: 1; display: flex; flex-direction: column; justify-content: center; }

/* Järgmine samm (parema veeru viimane kast) */
.jargmine-samm { background: #FBFCFE; border-color: var(--aktsent-hele); }
.jargmine-samm .ruut-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--vahe); align-items: center; }
.jargmine-samm .silt-aktsent { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--aktsent); margin-bottom: 4px; }
.jargmine-samm .pealkiri { font-size: 14px; font-weight: 600; }
.jargmine-samm .ruut-3 > :first-child { grid-column: span 2; min-width: 0; }
.jargmine-samm .btn { width: 100%; }

/* Manused tekstilinkidena */
.manused-loend { display: flex; flex-wrap: wrap; gap: 6px 20px; font-size: 13px; }
.manused-loend a { display: inline-flex; align-items: center; gap: 6px; }

/* Faili lohistusala (asendab brauseri "Choose files") */
.faili-ala { position: relative; height: var(--h-nupp); display: flex; align-items: center; gap: 8px; padding: 0 10px;
    border: 1px dashed var(--joon-tugev); border-radius: var(--r-nupp); font-size: 13px; color: var(--tekst-3); cursor: pointer; }
.faili-ala:hover, .faili-ala.lohistan { border-color: var(--aktsent); background: var(--aktsent-hele); }
.faili-ala input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.faili-ala b { color: var(--aktsent); font-weight: 600; }

/* Täislaiad kastid: silt + kirjeldus vasakul, nupp 4. veerus */
.ruut .kirjeldus { grid-column: span 3; min-width: 0; }
.ruut .kirjeldus h3 { margin-bottom: 4px; }
.ruut .kirjeldus p { margin: 0; font-size: 13px; color: var(--tekst-2); }
.ruut > .btn { width: 100%; }
.ruut + .vihje, .card > .vihje { font-size: 12px; color: var(--tekst-3); margin-top: 8px; }
.ruut.keskel { align-items: center; }
.vorm-sisu { display: contents; }

/* ==================================================================
   AJUTISED PARANDUSED lehtede oma ümbristele (lisa v2 paigaldusel):
   vanad lehed tsentreerisid sisu (margin: 0 auto) — nüüd algavad
   kõik samast vasakust servast. Kaob, kui lehe <style> plokid on eemaldatud.
   ================================================================== */
.container > [class$="-sisu"], .container > .hf { margin-left: 0 !important; margin-right: auto !important; }

/* Roll menüü all kasutaja nime juures */
.sidebar-roll { display: block; font-size: 12px; color: var(--tekst-3); margin-top: 2px; }

/* ==================================================================
   TÖÖKÄSU LEHT — lisad (tõstetud lehe oma <style> plokist, v2 muutujatega)
   ================================================================== */
.tookask-sisu .form-row { margin: 0; }
.tookask-sisu .card > h3 + .ruut, .tookask-sisu .card > h3 + form > .ruut:first-of-type { margin-top: 0; }
.tk-muuda .tk-valjad .form-row > div { min-height: 22px; font-size: 14px; color: var(--tekst); }
.tk-muuda > form > .btn { width: 100%; margin-top: var(--kast-pad); }
.jargmine-samm .ruut-3 > form { margin: 0; }
.link-nupp { background: none; border: none; padding: 0; margin-left: 4px; color: var(--aktsent); font: inherit; font-size: 13px; cursor: pointer; }
/* Järgmise sammu kastis võib peanupu all olla teine tee sama sammu juurde
   (nt "Võta töösse saatmata") - tekstina, nupu all, mitte selgituse sees. */
.jargmine-samm .samm-tegevused { display: flex; flex-direction: column; align-items: center; gap: 7px; }
.jargmine-samm .samm-tegevused > form { margin: 0; width: 100%; }
.jargmine-samm .samm-tegevused .link-nupp { margin-left: 0; width: 100%; text-align: center; }
.link-nupp:hover { color: var(--aktsent-tume); text-decoration: underline; }

/* Manused: üks rida faili kohta tekstilingina, kustutamine hiire all */
.manus-rida { display: inline-flex; align-items: center; gap: 4px; }
.manus-rida .icon-btn { width: 22px; height: 22px; font-size: 12px; color: var(--tekst-4); }
.manus-rida .icon-btn:hover { color: var(--punane); background: var(--punane-t); }

/* Pikk kirjeldus: 4 rida, ülejäänu "Näita rohkem" lingiga */
.tk-kirjeldus { margin: 10px 0 0; white-space: pre-line; font-size: 14px; color: var(--tekst-2);
    display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.tk-kirjeldus.lahti { display: block; -webkit-line-clamp: unset; }
.tk-rohkem { font-size: 12px; }

/* Checklist: tavakiri, rida vähemalt 36px */
.checklist-plokk { border: 1px solid var(--joon); border-radius: var(--r-nupp); padding: 0 14px; background: var(--pind-2); }
.checklist-rida { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 6px 0; border-bottom: 1px solid var(--joon);
    flex-wrap: wrap; font-size: 14px; color: var(--tekst); }
.checklist-rida:last-child { border-bottom: none; }
.checklist-toggle-grp { display: flex; gap: 4px; flex-shrink: 0; }
.checklist-btn { width: 30px; height: 30px; border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); background: var(--pind);
    color: var(--tekst-4); font-weight: 700; cursor: pointer; line-height: 1; }
.checklist-btn-ok.aktiivne { background: var(--roheline-t); border-color: var(--roheline); color: var(--roheline); }
.checklist-btn-ei.aktiivne { background: var(--punane-t); border-color: var(--punane); color: var(--punane); }
.checklist-nimi { flex: 1; min-width: 120px; }
.checklist-mark { width: 18px; text-align: center; font-weight: 700; color: var(--tekst-4); }
.checklist-mark.ok { color: var(--roheline); }
.checklist-mark.ei { color: var(--punane); }
.checklist-markus { flex-basis: 100%; margin: 2px 0 4px 28px; }
.checklist-markus textarea { min-height: 44px; }
.checklist-plokk + .ruut { margin-top: var(--vahe); }

/* Kommentaarid */
.kommentaar-rida { padding: 10px 0; border-bottom: 1px solid var(--joon); font-size: 14px; }
.kommentaar-rida:first-of-type { padding-top: 0; }
.kommentaar-toimingud { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; }
.kommentaar-tekst-vaade { margin-top: 4px; color: var(--tekst-2); }
.kommentaar-muuda-vorm { margin-top: 8px; }

/* Tegevuste logi: veerud joondatud (kuupäev · kes · mis · detail) */
.logi-rida { display: grid; grid-template-columns: 130px 170px 200px minmax(0, 1fr); gap: 12px; align-items: baseline;
    padding: 8px 0; border-bottom: 1px solid var(--joon); font-size: 13px; }
.logi-rida:last-child { border-bottom: none; }
.logi-aeg { white-space: nowrap; color: var(--tekst-3); }
.logi-tegija { color: var(--tekst); }
.logi-tegevus { color: var(--tekst-2); }
.logi-detail { color: var(--tekst-3); overflow-wrap: anywhere; }

@media (max-width: 900px) {
    .tk-ulemine { grid-template-columns: minmax(0, 1fr) !important; }
    .tk-ulemine > .tk-muuda, .tk-parem { grid-column: 1 / -1; }
    .sammud { flex-wrap: wrap; gap: 10px; }
    .samm-joon { display: none; }
    .logi-rida { grid-template-columns: 130px minmax(0, 1fr); }
    .logi-tegevus, .logi-detail { grid-column: 2; }
}

/* ------------------------------------------------------------------
   HÜPIKAKNA JALUS JA VALIKUNIMEKIRI (vt juhend 2.11)
   ------------------------------------------------------------------ */
.modaal-pais h2 .muted { font-weight: 400; margin-left: 4px; }
.modaal-keha { padding: 20px 24px; }
.modaal-jalus { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 24px; border-top: 1px solid var(--joon); background: var(--pind); position: sticky; bottom: 0; border-radius: 0 0 12px 12px; }
.modaal-jalus .btn { min-width: 110px; }
.valik-loend { max-height: 320px; overflow-y: auto; border: 1px solid var(--joon); border-radius: var(--r-nupp); margin-top: 8px; }
.valik-rida { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 12px; font-size: 14px; color: var(--tekst);
    border-bottom: 1px solid var(--joon); cursor: pointer; text-transform: none; letter-spacing: 0; font-weight: 400; margin: 0; }
.valik-rida:last-child { border-bottom: none; }
.valik-rida:hover { background: #F7F9FC; }
.valik-rida input { margin: 0; flex-shrink: 0; }
.valik-rida:has(input:checked) { background: var(--aktsent-hele); color: var(--navy); font-weight: 600; }
.valik-rida .valik-detail { margin-left: auto; font-size: 12px; color: var(--tekst-3); font-weight: 400; }
.valik-rida.loo-uus { color: var(--aktsent); font-weight: 600; }

/* Jalus vormi sees (vorm on .modaal-keha sees): venib akna servast servani ja jääb alla kinni */
.modaal-keha .modaal-jalus { margin: 20px -24px -20px; }
.modaal-jalus .jalus-vasak { margin-right: auto; }
.modaal-jalus .jalus-nupud { display: flex; gap: 8px; }
.modaal-keha > form > .form-row:last-of-type { margin-bottom: 0; }

/* Kõik päisega aknad: polster tuleb päisest, kehast ja jalusest (mitte kaardist) — joon ja sisu kohakuti */
.modal-varjund > .modal-sisu:has(> .modaal-pais) { padding: 0; max-height: calc(100vh - 40px); overflow-y: auto; text-align: left; }
.valik-rida .valik-nimi { min-width: 0; }
.valik-loend + .vihje, .valik-loend ~ .vihje { font-size: 12px; color: var(--tekst-3); margin-top: 8px; }

/* Faili lohistusala sildi sees: tavakiri (mitte välja sildi SUURTÄHED) ja väljadega samal kõrgusel */
.form-row label.faili-ala { display: flex; margin: 0; font-size: 13px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--tekst-3); }
.form-row label.faili-ala b { font-weight: 600; }

/* ------------------------------------------------------------------
   HOOLDUSKAVA CHECKLIST (vt juhend 2.12)
   ------------------------------------------------------------------ */
.checklist-pais { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--vahe); margin-bottom: 12px; }
.checklist-pealkiri { font-size: 16px; font-weight: 600; color: var(--tekst); }
.cl-tooriba { display: flex; align-items: center; gap: var(--vahe); margin-bottom: 10px; }
.cl-otsing { flex-grow: 1; height: var(--h-nupp); padding: 0 10px 0 34px; border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); font-size: 14px;
    background: var(--pind) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%236B7684' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 11px center; }
.cl-otsing:focus { outline: none; border-color: var(--aktsent); box-shadow: var(--fookus); }
.cl-loend { border: 1px solid var(--joon); border-radius: 8px; overflow-y: auto; max-height: 560px; }
.cl-grupp { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; height: 32px; padding: 0 12px; background: var(--pind-2);
    border-bottom: 1px solid var(--joon); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--tekst-3); }
.cl-rida { display: flex; align-items: center; gap: 12px; width: 100%; height: 44px; padding: 0 12px 0 10px; margin: 0; border: none; border-bottom: 1px solid var(--joon);
    background: var(--pind); text-align: left; font: inherit; }
.cl-rida:hover { background: #F9FAFC; }
.cl-rida.lohistan { opacity: .5; }
.cl-vali { display: flex; align-items: center; gap: 12px; flex-grow: 1; min-width: 0; height: 100%; margin: 0; cursor: pointer; text-transform: none; letter-spacing: 0; font-weight: 400; }
.cl-vali input[type=checkbox] { margin: 0; flex-shrink: 0; }
.cl-pide { width: 12px; flex-shrink: 0; color: var(--tekst-4); cursor: grab; letter-spacing: -2px; user-select: none; }
.cl-rida:not(.valitud) .cl-pide { visibility: hidden; }
.cl-nimi { flex-grow: 1; min-width: 0; font-size: 14px; font-weight: 400; color: var(--tekst-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cl-rida.valitud .cl-nimi { color: var(--tekst); }
.cl-rida:not(.valitud) .lyliti { display: none; }
.cl-uus { color: var(--aktsent); font-weight: 600; font-size: 14px; }

/* Kaheosaline lüliti (segmented control) */
.lyliti { display: inline-flex; padding: 2px; border-radius: 7px; background: var(--hall-t); flex-shrink: 0; }
.lyliti label { display: inline-flex; align-items: center; height: 26px; padding: 0 12px; border-radius: 5px; margin: 0;
    font-size: 12px; font-weight: 500; color: var(--tekst-3); text-transform: none; letter-spacing: 0; cursor: pointer; white-space: nowrap; }
.cl-tooriba .lyliti label { height: 30px; padding: 0 14px; font-size: 13px; }
.lyliti input { position: absolute; opacity: 0; width: 0; height: 0; }
.lyliti label:has(input:checked) { background: var(--pind); color: var(--tekst); font-weight: 600; box-shadow: 0 1px 2px rgba(16,24,40,.12); }
.cl-rida .lyliti label:has(input[value="1"]:checked) { color: var(--aktsent); }
.lyliti label:has(input:focus-visible) { box-shadow: var(--fookus); }

/* Checklist hoolduskava vormi sees */
.checklist { margin: var(--vahe-2) 0 var(--vahe); }
.checklist.ilma-aasta .cl-aasta { display: none !important; }
.cl-rida[hidden], .cl-grupp[hidden] { display: none !important; }
.cl-otsing::-webkit-search-cancel-button { cursor: pointer; }

/* ==================================================================
   TÖÖLAUD
   ================================================================== */
.leht.toolaud { max-width: 1500px; }
.leht.toolaud .grid > .card { margin: 0; }
.loend-ava { font-size: 12px; font-weight: 600; color: var(--aktsent); }
.loend-rida:hover .loend-ava { color: var(--aktsent-tume); }
.toolaua-tabel { width: 100%; }
.toolaua-tabel tbody tr { cursor: pointer; }
.toolaua-tabel td a { color: var(--tekst); font-weight: 500; }
.toolaua-tabel td a:hover { color: var(--aktsent); }
.nowrap { white-space: nowrap; }

/* ------------------------------------------------------------------
   KLIKITAVAD TABELIREAD (vt juhend 2.13)
   ------------------------------------------------------------------ */
tr[data-href] { cursor: pointer; }
tr[data-href]:hover td { background: #F2F6FC; }
tr[data-href]:active td { background: var(--aktsent-hele); }
tr[data-href] td:first-child a, tr[data-href] .rea-link { font-weight: 600; }
.tabeli-tooriba { display: flex; justify-content: flex-end; align-items: center; gap: 8px; padding: 10px var(--kast-pad); border-bottom: 1px solid var(--joon); background: var(--pind); position: sticky; left: 0; }
.card:has(> .tabeli-tooriba) > .tabeli-tooriba { margin: 0 !important; }
.tabeli-tooriba .vaate-nupp { width: auto; height: var(--h-nupp-v); padding: 0 12px; gap: 6px; background: var(--hall-t); color: var(--tekst-2); font-size: 12px; font-weight: 600; border-radius: var(--r-nupp); }
.tabeli-tooriba .vaate-nupp:hover { background: #E1E5EA; color: var(--tekst); }

/* Pliiatsi veerg — praegu kasutusel pole; jäetud alles, kui on vaja tagasi panna */
.icon-btn { width: 28px; height: 28px; padding: 0; }
.icon-btn svg { width: 16px; height: 16px; }
.icon-btn.icon-muuda:hover { background: var(--aktsent-hele); color: var(--aktsent) !important; }
th.toimingu-veerg, td.toimingu-veerg { position: sticky; left: 0; z-index: 5; width: 44px; min-width: 44px; padding-left: 8px !important; padding-right: 8px !important; text-align: center; background: var(--pind); }
table tr:first-child th.toimingu-veerg { z-index: 31; background: var(--pind-2); }

/* Rea pliiats jääb peidetuna alles (rea klõps kasutab seda); tühi toimingute veerg peidetakse */
.rea-pliiats { display: none !important; }
table.ilma-toimingud tr:not(.rida-avatud-panel):not(.lisarida) > :first-child { display: none; }
td .rea-link { color: var(--aktsent); font-weight: 600; }
td .rea-link:hover { color: var(--aktsent-tume); }
.tabeli-tooriba + table, .tabeli-tooriba + .andmetabel { margin-top: 0; }
.tabeli-tooriba .vaate-nupp svg { flex-shrink: 0; }
table.ilma-toimingud tr:not(.rida-avatud-panel):not(.lisarida) > :nth-child(2) { padding-left: var(--kast-pad); }

/* ==================================================================
   HOOLDUSKAVA VORM (juhend 2.9): üks 4-veeruline ruudustik
   ================================================================== */
.hk-kood { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; }
.hk-ruut { align-items: start; grid-auto-flow: row dense; }
.hk-ruut .form-row, .hk-ruut .ruut .form-row, .hk-ruut .ruut > div { margin: 0; min-width: 0; }
.hk-ruut .help, .hk-ruut .vihje { font-size: 12px; color: var(--tekst-3); margin: 6px 0 0; }
.hk-ruut .ruut { gap: var(--vahe); }
/* Klikitav valikukast, mis näeb välja nagu väli (süsteem, varasemad hooldused) */
.valikukast { display: flex; align-items: center; justify-content: space-between; gap: 8px; height: var(--h-nupp); padding: 0 10px;
    border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); background: var(--pind); color: var(--tekst); font-size: 14px; cursor: pointer; text-decoration: none; }
.valikukast:hover { border-color: var(--aktsent); text-decoration: none; color: var(--tekst); }
.valikukast:focus-visible { outline: none; box-shadow: var(--fookus); }
.valikukast svg { color: var(--tekst-4); flex-shrink: 0; }
.hk-lukus .valikukast { background: var(--pind-2); color: var(--tekst-2); cursor: default; }
/* "+ Lisa" väikese lingina sildi real */
.form-row label .silt-link { margin-left: 6px; text-transform: none; letter-spacing: 0; font-weight: 600; font-size: 12px; }
/* Märkeruudud väljade all ühes joones */
.valja-linnuke-rida { display: flex; align-items: center; gap: 6px 10px; flex-wrap: wrap; margin-top: 8px; font-size: 13px; color: var(--tekst-2); }
.form-row label.valja-linnuke, .valja-linnuke { display: inline-flex; align-items: center; gap: 8px; margin: 8px 0 0; font-size: 13px; font-weight: 400;
    text-transform: none; letter-spacing: 0; color: var(--tekst-2); cursor: pointer; }
.valja-linnuke-rida .valja-linnuke { margin: 0; }
.valja-linnuke input[type=checkbox] { width: 16px !important; height: 16px !important; margin: 0; flex-shrink: 0; accent-color: var(--aktsent); }
.sagedus-muu { display: flex; gap: 6px; margin-top: 6px; }
.sagedus-muu input { width: 80px !important; flex-shrink: 0; }
.sagedus-muu select { flex: 1; min-width: 0; }
/* Otsingu rippvalik välja all */
.rippvalik { position: absolute; z-index: 70; left: 0; right: 0; top: 100%; margin-top: 4px; padding: 4px; max-height: 220px; overflow-y: auto;
    background: var(--pind); border: 1px solid var(--joon); border-radius: var(--r-nupp); box-shadow: var(--vari-ule); }
.rippvalik .hk-valik-rida, .rippvalik .firma-rida { padding: 8px 10px !important; border-radius: 4px; font-size: 14px !important; cursor: pointer; }
.rippvalik .hk-valik-rida:hover { background: var(--aktsent-hele); }
.info-kast { background: var(--pind-2); border: 1px solid var(--joon); border-radius: var(--r-nupp); padding: 10px 14px; margin-bottom: var(--vahe); font-size: 13px; color: var(--tekst-2); }
.hk-nupud { margin-top: var(--vahe); }
.hk-lukus .silt-link { display: none; }   /* lukus kaval tüüpi lisada/muuta ei saa */

/* Linnukesed võrdsete lahtritena samas 4 veeru ruudustikus (nt kontakti hooned) */
.linnukesed { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px var(--vahe); }
.form-row label.linnuke, .linnuke { display: flex; align-items: center; gap: 8px; height: var(--h-nupp); padding: 0 10px; margin: 0;
    border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); background: var(--pind); cursor: pointer;
    font-size: 13px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--tekst);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.linnuke input { width: 16px !important; height: 16px !important; margin: 0; flex: none; accent-color: var(--aktsent); }
.linnuke:has(input:checked) { border-color: var(--aktsent); background: var(--aktsent-hele); }
.leht .ylevaade .vaartus.hoiatus, .leht .detail.hoiatus { color: var(--punane); }
@media (max-width: 800px) { .linnukesed { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Teadete leht */
.teadaanne.loetud { opacity: .55; }
.teadaanne .loend-tekst { white-space: normal; }
.teadaande-sisu { display: block; margin-top: 6px; font-size: 13px; font-weight: 400; color: var(--tekst-2); }
.loend-rida form.loend-lopp { margin: 0; }

/* ==================================================================
   PARANDUSED PÄRAST KONTROLLI 22.09 (vt juhend jaotis 4)
   ================================================================== */
/* Järgmise sammu nupp täpselt sama laiusega ja kohakuti teiste 4. veeru nuppudega */
.jargmine-samm .ruut-3 { grid-template-columns: minmax(0, 1fr) calc((100% + 10px) / 3 - 9.5px); }
.jargmine-samm .ruut-3 > :first-child { grid-column: auto; }

/* Eelarve tabelid: ei kerita kasti sees (kaks tabelit ühel lehel) — kogu tabel ja kokku-rida on nähtaval */
.card:has(> .eelarve-tabel), .card:has(> .hoolduskava-tabel),
.card:has(> form > .eelarve-tabel), .card:has(> form > .hoolduskava-tabel) { max-height: none; overflow: visible; }

/* Summade punktiirjoon ainult hiire all (klõps vahetab lühikese/täpse summa) */
.raha-toggle { border-bottom: none !important; text-decoration: none !important; cursor: pointer; }
tr:hover .raha-toggle, .kpi .raha-toggle:hover { border-bottom: 1px dotted var(--tekst-4) !important; }

/* Sektsioonipäised: sama vahe igal lehel (28 px üles, 10 px alla).
   NB: .lehe-pais sees olev h2 jääb välja — seal annab vahe juba ümbris ise ja
   see !important kirjutas üle .lehe-pais > :first-child { margin-right: auto },
   mille tõttu sektsiooni nupp ("Lisa süsteem", "Lisa seade") jäi pealkirja
   kõrvale vasakule, mitte rea paremasse serva (Egoni märkus 06.10). */
.container h2:not(.modaal-pais h2):not(.card h2):not(.lehe-pais h2):not(.hkv-pais h2) { margin: var(--vahe-2) 0 10px !important; }
/* Nummerdatud kasti pealkiri on kasti sees — tema kohale ei kuulu tyhja riba (Egon 06.10) */
.hkv-pais h2 { margin: 0 !important; }
.lehe-pais h2 { margin: 0; }
.container h2 + .card, .container h2 + div > .card:first-child { margin-top: 0; }

/* Tegevuste nimed algavad alati suure tähega (andmetes on osa väikese tähega) */
.cl-nimi::first-letter { text-transform: uppercase; }


/* Hüpikakna valikunimekiri: rida on flex, raadionupp teksti keskjoonel, tavakiri 14 px.
   (.form-row label reegel tegi read varem suurtähtedes 11 px plokiks) */
.valik-loend label.valik-rida, .form-row .valik-loend label.valik-rida { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 12px; margin: 0;
    font-size: 14px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--tekst); }
.valik-loend label.valik-rida input { margin: 0; flex-shrink: 0; }
.valik-loend label.valik-rida .valik-detail { margin-left: auto; font-size: 12px; color: var(--tekst-3); }
.marker-kk { background: var(--sinine-t); color: var(--sinine-s); }

/* Hoone/aasta valik lehe päises pealkirja kõrval (säästab eraldi rea) */
.pais-valik { display: flex; gap: 8px; margin: 0; }
.pais-valik select { height: var(--h-nupp); padding: 0 32px 0 10px; border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp);
    background-color: var(--pind); font-size: 14px; color: var(--tekst); min-width: 160px; }
.lehe-pais .pais-valik { margin-right: auto; }
.lehe-pais > :first-child:has(+ .pais-valik) { margin-right: 0; }
.pais-nupud { display: flex; gap: 8px; align-items: center; }

/* Tegevuste kataloog: kaks veergu, rida on muudetav tekstiväli */
.tegevused-veerud { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
.tegevus-item { position: relative; min-width: 0; min-height: 40px; display: flex; align-items: center; padding-right: 64px; border-bottom: 1px solid var(--joon); }
.tegevus-item form:first-child { flex: 1; min-width: 0; margin: 0; }
.tegevus-item input[type=text] { width: 100%; height: 34px; padding: 0 8px; border: 1px solid transparent; border-radius: var(--r-nupp); background: transparent;
    font-size: 14px; color: var(--tekst); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.tegevus-item input[type=text][readonly], .tegevus-item input[type=text]:disabled { background: transparent !important; color: var(--tekst) !important; }
.tegevus-item.muudan input[type=text] { border-color: var(--joon-tugev); background: var(--pind) !important; }
.tegevus-item input[type=text]::first-letter { text-transform: uppercase; }
.tegevus-toimingud { position: absolute; right: 0; top: 50%; transform: translateY(-50%); display: inline-flex; gap: 2px; }
@media (max-width: 700px) { .tegevused-veerud { grid-template-columns: minmax(0, 1fr); } }
tr.mitteaktiivne-rida td { opacity: .5; }

/* Kustutamine (vt juhend 2.14) */
.kirje-jalus { display: flex; align-items: center; justify-content: space-between; gap: var(--vahe); margin-top: var(--vahe); padding-top: var(--vahe); border-top: 1px solid var(--joon); }
.kirje-jalus-parem { display: flex; gap: 8px; }
.btn-punane-taidetud { background: var(--punane); color: #fff; }
.btn-punane-taidetud:hover { background: #963A30; color: #fff; }
.modal-sisu.oht .modaal-pais h2 { color: var(--punane); }
.oht-tekst { margin: 0; font-size: 14px; line-height: 1.5; color: var(--tekst); }
.flash-tagasi { display: flex; align-items: center; gap: 16px; background: var(--navy); color: #fff; }
.tagasi-nupp { border: none; background: none; color: #9CC3F0; font: 600 14px var(--font); cursor: pointer; padding: 0; }
.tagasi-nupp:hover { color: #fff; text-decoration: underline; }
.kinnita-aken .modal-sisu { max-width: 460px; }
.kirje-jalus-ruut { padding-top: var(--vahe); border-top: 1px solid var(--joon); }
.kirje-jalus-ruut .btn-punane { grid-column: 1; }

/* Lehe sakid (nt Hoolduskavad | Hoolduskava tüübid) */
.lehe-sakid { display: flex; gap: 4px; margin: -4px 0 var(--vahe); border-bottom: 1px solid var(--joon); }
.lehe-sakid a { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 14px; margin-bottom: -1px;
    border-bottom: 2px solid transparent; font-size: 14px; font-weight: 500; color: var(--tekst-2); text-decoration: none; }
.lehe-sakid a:hover { color: var(--aktsent); text-decoration: none; }
.lehe-sakid a.aktiivne { color: var(--navy); font-weight: 600; border-bottom-color: var(--aktsent); }
.lehe-sakid a span { font-size: 12px; font-weight: 600; color: var(--tekst-3); background: var(--hall-t); border-radius: 999px; padding: 1px 7px; }
.lehe-sakid a.aktiivne span { color: var(--aktsent); background: var(--aktsent-hele); }
/* Sakikaart: kast, mis hoiab ainult lehe sakke (nt Klient | Seaded). Sakid on
   kasti SEES, nii et esimene kast algab ikka samalt kõrguselt. */
/* NB: .leht .card seab polsterduse (0,2,0), seega siin peab olema vahemalt sama kaal */
.card.sakikaart, .leht .card.sakikaart { padding: 0 var(--kast-pad); }
.sakikaart .lehe-sakid { margin: 0; border-bottom: 0; }

/* Hoolduskava tüüpide tabel: nimi on otse muudetav */
.tyybid-tabel td { vertical-align: middle; }
.tyyp-nimi { display: flex; gap: 8px; align-items: center; margin: 0; }
.tyyp-nimi input { flex: 1; min-width: 200px; height: 32px; padding: 0 8px; border: 1px solid transparent; border-radius: var(--r-nupp); background: transparent; font-size: 14px; color: var(--tekst); }
.tyyp-nimi input:hover { border-color: var(--joon); }
.tyyp-nimi input:focus { border-color: var(--aktsent); background: var(--pind); outline: none; box-shadow: var(--fookus); }
.tyyp-tegevus { width: 1%; white-space: nowrap; text-align: right; }

/* .leht lehtedel: kastide vahel alati 14 px (varem 0 – kastid kleepusid kokku) */
.leht > .card + .card, .leht > .card + form, .leht > form + .card, .leht > .lehe-sakid + .card { margin-top: var(--vahe) !important; }
/* .leht lehtedel tabelikast ilma polstrita – tabeli tekst algab samast joonest (kast + 18 px) nagu teistes kastides */
.leht .card:has(> table), .leht .card:has(> form > table) { padding: 0 !important; }

/* Hoolduskava tüübid: nimi näeb välja nagu tekst, väljaks muutub hiire all / klõpsates */
.card:has(.tyyp-nimi) { max-height: none !important; overflow: visible !important; }
.tyyp-nimi input[type=text] { height: 32px !important; border-color: transparent !important; background: transparent !important; padding: 0 8px !important; margin-left: -9px; font-weight: 500; }
tr:hover .tyyp-nimi input[type=text], .tyyp-nimi input[type=text]:focus { border-color: var(--joon-tugev) !important; background: #fff !important; }
.card:has(.tyyp-nimi) tr > td:last-child, .card:has(.tyyp-nimi) tr > th:last-child { text-align: right; width: 150px; }
.card:has(.tyyp-nimi) td:last-child form.inline .btn { opacity: 0; transition: opacity .12s; }
.card:has(.tyyp-nimi) tr:hover td:last-child form.inline .btn,
.card:has(.tyyp-nimi) td:last-child form.inline:focus-within .btn { opacity: 1; }
.tyybid-tabel th.arv, .tyybid-tabel td.arv { text-align: right; width: 130px; }
.tyybid-tabel th.arv .pais-sisu { justify-content: flex-end; }

/* Infomull: väike „i“ sildi kõrval, selgitus ilmub hiire all / fookusega (ka telefonis puudutusega) */
.infomull { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px; margin-left: 4px;
    border-radius: 50%; background: var(--hall-t); color: var(--tekst-3); font: 700 10px/1 var(--font, inherit); font-style: normal;
    text-transform: none; letter-spacing: 0; vertical-align: 1px; cursor: help; }
.infomull:hover, .infomull:focus { background: var(--aktsent-hele); color: var(--aktsent); outline: none; }
.infomull::after { content: attr(data-info); position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%); z-index: 90;
    width: max-content; max-width: 260px; padding: 8px 10px; border-radius: var(--r-nupp); background: var(--navy); color: #fff;
    font-size: 12px; font-weight: 400; line-height: 1.45; text-align: left; white-space: normal; box-shadow: var(--vari-ule);
    opacity: 0; visibility: hidden; transition: opacity .12s; pointer-events: none; }
.infomull:hover::after, .infomull:focus::after { opacity: 1; visibility: visible; }

/* ==================================================================
   JUHEND (juhend.php)
   ================================================================== */
.leht.juhend { max-width: 1500px; }
.juhend .card > h2:first-child { margin-top: 0; }
.juhend .card h2 { font-size: 16px; margin: 22px 0 8px; }
.juhend p, .juhend li { line-height: 1.6; color: var(--tekst-2); font-size: 14px; }
.juhend ul, .juhend ol { margin: 6px 0 10px; padding-left: 20px; }
.juhend li + li { margin-top: 4px; }
.juhend-vool { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 10px 0 14px; font-size: 13px; }
.juhend-vool span { background: var(--aktsent-hele); color: var(--aktsent); border-radius: 999px; padding: 4px 12px; white-space: nowrap; font-weight: 500; }
.juhend-vool i { font-style: normal; color: var(--tekst-4); }
.juhend-tabel { width: 100%; border-collapse: collapse; margin: 8px 0 14px; }
.juhend-tabel th, .juhend-tabel td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--joon); font-size: 13px; vertical-align: top; }
.juhend-tabel th { position: static !important; box-shadow: none; background: none; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--tekst-3); }
.juhend-tabel td:first-child { width: 150px; font-weight: 600; color: var(--tekst); }
.juhend .card:has(> .juhend-tabel), .juhend .card:has(> table) { padding: var(--kast-pad) !important; }
@media print {
    .sidebar, .abi-nupp, .abi-paneel, .breadcrumb, .juhend-nupud .btn, .pikk-juhend, .flash { display: none !important; }
    .main, .container, .leht.juhend { margin: 0 !important; padding: 0 !important; max-width: 100% !important; }
    .juhend .card { border: none; box-shadow: none; padding: 0 !important; }
    body { background: #fff; }
    .juhend h1 { font-size: 20px; }
    .juhend .card h2 { font-size: 14px; margin: 12px 0 4px; }
    .juhend p, .juhend li, .juhend-tabel td { font-size: 11px; line-height: 1.4; }
}

/* Kulurea vorm („Lisa kulurida“ aken): üks 4-veeruline ruudustik, kõik väljad 36 px, ülemised servad kohakuti */
.kulurea-vorm .kulurea-grupp { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: var(--vahe) !important; align-items: start; }
.kulurea-vorm .kulurea-grupp > * { min-width: 0 !important; width: auto !important; flex: none !important; margin: 0 !important; grid-column: auto !important; }
.kulurea-vorm .kulurea-grupp:has(> :nth-child(2):last-child) > * { grid-column: span 2 !important; }
.kulurea-vorm .kulurea-grupp > :only-child { grid-column: 1 / -1 !important; }
.kulurea-vorm .form-row label { height: 16px; line-height: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 5px; }
.modal-sisu .kulurea-vorm .form-row input:not([type=checkbox]), .modal-sisu .kulurea-vorm .form-row select,
.kulurea-vorm .form-row input:not([type=checkbox]), .kulurea-vorm .form-row select { height: var(--h-nupp) !important; min-height: var(--h-nupp) !important; }
.kulurea-vorm .periood-rida { display: flex !important; width: 100%; gap: 8px; }
.kulurea-vorm .periood-rida input[type=number] { flex: 1 1 auto; width: auto !important; min-width: 0; }
.kulurea-vorm .sagedus-puudub { height: var(--h-nupp) !important; display: inline-flex; align-items: center; gap: 6px; padding: 0 10px; border-radius: var(--r-nupp);
    font-size: 12px; text-transform: none; letter-spacing: 0; white-space: nowrap; flex-shrink: 0; }
/* Sildi täpsustus sulgudes („(valikuline)“, „(kuni 25 tähemärki)“) – hall, tavakiri, sama suurus */
.form-row label span, .form-row label small { font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--tekst-4); font-size: 11px; }

/* Kulurea vormi märkeruut välja all ja infomull sildis ei lõigata ära */
.kulurea-vorm .form-row label.valja-linnuke { height: auto; line-height: 1.3; overflow: visible; margin: 8px 0 0; }
.kulurea-vorm .form-row label:has(.infomull) { overflow: visible; }
.kulurea-vorm .form-row input:disabled { background: var(--pind-2) !important; color: var(--tekst-4) !important; }
/* Eelarve: kinnised paneelid on lehel olemas, aga peidus */
tr.rida-avatud-panel[hidden] { display: none !important; }
form.salvestan { opacity: .6; pointer-events: none; transition: opacity .1s; }

/* .ruut sees ei tohi välja kastil olla alumist vahet – muidu jääb nupp väljast 14 px madalamale */
.ruut > .form-row { margin: 0 !important; }

/* Tegevuste kataloog (tegevused.php): nimed tähestikus veergudena ülevalt alla, tekstina;
   ✎ ja ✕ ilmuvad rea kohal, muutmisel muutub rida väljaks */
.tegevused-veerud { display: block !important; column-count: 2; column-gap: var(--vahe-2); }
.tegevused-veerud .tegevus-item { break-inside: avoid; height: 40px; align-items: center; gap: 6px; border-bottom: 1px solid var(--joon); }
.tegevused-veerud .tegevus-item form { flex: 1; min-width: 0; }
.tegevused-veerud .tegevus-item input[type=text] { width: 100%; height: 32px !important; }
.tegevused-veerud .tegevus-item input[readonly] { border-color: transparent !important; background: transparent !important; padding-left: 0 !important; cursor: default; box-shadow: none !important; }
.tegevused-veerud .tegevus-item.muudan input[type=text] { padding-left: 8px !important; border-color: var(--aktsent) !important; box-shadow: var(--fookus) !important; }
.tegevused-veerud .tegevus-item .tegevus-toimingud { opacity: 0 !important; transition: opacity .12s; flex-shrink: 0; }
.tegevused-veerud .tegevus-item:hover .tegevus-toimingud,
.tegevused-veerud .tegevus-item:focus-within .tegevus-toimingud,
.tegevused-veerud .tegevus-item.muudan .tegevus-toimingud { opacity: 1 !important; }
.tegevused-veerud .tegevus-item:hover { background: #F9FAFC; }
@media (max-width: 800px) { .tegevused-veerud { column-count: 1; } }

/* Ühekordse töökäsu lisamise aken (includes/uus_tookask.php, varem intsidendid.php lehel) */
#lisa-intsident .modal-lai { max-width: 1180px; }
#lisa-intsident .form-row { min-width: 0; }
#eelarve_siht_otsing { width: 100%; box-sizing: border-box; }
#siht_soovitused .siht-rida > span:first-of-type { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.siht-raha { margin-left: auto; padding-left: 14px; font-size: 12px; color: var(--tekst-2); white-space: nowrap; }
.siht-raha-tyhi { color: var(--tekst-4); }
.valitud-failid { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.valitud-failid li { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--tekst-2); background: var(--pind-2); border-radius: var(--r-nupp); padding: 5px 8px; }
.valitud-failid li span { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.faili-eemalda { background: none; border: none; color: var(--punane); cursor: pointer; font-size: 13px; line-height: 1; padding: 2px 4px; border-radius: 4px; }
.faili-eemalda:hover { background: var(--punane-t); }

/* Veergude valik („Veerud“) – üks lahendus kõigil lehtedel (vt juhend 2.18).
   Paneel avaneb tabeli kasti sees paremal ja lükkab tabeli kitsamaks – ei kata veerge ega päist. */
.tabeli-sisu { display: flex; align-items: stretch; min-width: 0; }
.tabeli-sisu > .tabeli-keri { flex: 1 1 auto; min-width: 0; overflow-x: auto; }
.veerupaneel { display: none; width: 260px; flex-shrink: 0; border-left: 1px solid var(--joon); background: var(--pind-2);
    padding: 14px var(--kast-pad); position: sticky; top: 0; align-self: flex-start; max-height: calc(100vh - 150px); overflow-y: auto; }
.vaade-lahti .veerupaneel { display: block; }
.veerupaneel-pais { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.veerupaneel-pais h3 { margin: 0; }
.veerupaneel .vihje { font-size: 12px; color: var(--tekst-3); margin: 0 0 10px; }
.veerupaneel .veeru-rida { height: 32px; padding: 0 6px; margin: 0 -6px; gap: 8px; }
.veerupaneel-jalus { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--joon); display: flex; flex-direction: column; gap: 6px; font-size: 12px; }
.veerupaneel-jalus .muted { font-size: 12px; }
.vaate-nupp[aria-expanded="true"] { background: var(--aktsent-hele) !important; color: var(--aktsent) !important; }

/* Täitmata kulukirjed: „Lahtine“ märk rea lõpus on üleliigne (kõik read on lahtised) ja näeb välja nagu teine nupp */
div:has(> .badge.staatus-oranz + a.btn-small) > .badge { display: none; }

/* Veergude paneel tabeli kasti kõrval: kast ja paneel on ühises reas (.vaate-rida),
   nii kehtivad tabelikasti reeglid (.card:has(> table)) edasi ja miski ei nihku */
.vaate-rida { display: flex; gap: var(--vahe); align-items: flex-start; }
.vaate-rida > .card { flex: 1 1 auto; min-width: 0; }
.vaate-rida > .veerupaneel { display: block; width: 260px; flex-shrink: 0; background: var(--pind); border: 1px solid var(--joon);
    border-radius: var(--r-kast); box-shadow: var(--vari); padding: 14px var(--kast-pad); position: sticky; top: 16px;
    max-height: calc(100vh - 32px); overflow-y: auto; }
.veerupaneel .veeru-rida { display: flex; align-items: center; cursor: grab; border-radius: 6px; font-weight: 400; text-transform: none; letter-spacing: 0; }
.veerupaneel .veeru-rida input { width: 16px; height: 16px; accent-color: var(--aktsent); }
.veerupaneel .veeru-nimi { font-size: 13px; color: var(--tekst); }
.veerupaneel-jalus a { font-weight: 600; }
.vaate-staatus:empty { display: none; }
@media (max-width: 900px) { .vaate-rida { flex-direction: column; } .vaate-rida > .veerupaneel { width: 100%; position: static; } }

/* Infomulli selgitus: peidus olles ei võta ruumi (varem tekitas nähtamatu selgitus aknas
   külgsuunas kerimise, nt „Lisa kulurida“). Kuvatakse välja all; ekraani serva lähedal
   joondub JS-iga vasakule/paremale, et ei läheks üle serva. */
.infomull::after { display: none; top: calc(100% + 8px); bottom: auto; }
.infomull:hover::after, .infomull:focus::after { display: block; }
.infomull.serv-parem::after { left: auto; right: -6px; transform: none; }
.infomull.serv-vasak::after { left: -6px; transform: none; }
.modaal .modal-sisu { overflow-x: hidden; }

/* Töölaua kokkuvõtte kastid on lingid eelarvesse */
a.kpi-link { display: block; color: inherit; text-decoration: none; transition: border-color .12s, box-shadow .12s; }
a.kpi-link:hover { border-color: var(--aktsent); box-shadow: var(--vari-ule); text-decoration: none; color: inherit; }
a.kpi-link:hover h3 { color: var(--aktsent); }
a.kpi-link:focus-visible { outline: none; box-shadow: var(--fookus); }
.kpi-vaartus { white-space: nowrap; }
.kpi-vaartus .raha-sendid { font-size: .62em; font-weight: 500; opacity: .55; margin-left: 1px; }

/* „Lisa kanne“ nähtavamaks (vt juhend 2.20) */
/* 1) Kanded-veerus arvu kõrval väike „+“ nupp */
.kanded-lahter { display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; white-space: nowrap; }
/* padding-bottom: 2px - "+" glyyfi tint istub fondis 1px allpool kasti
   keskme; polster lukab rea 1px ules, nii et rist on tapselt keskel
   (motdetud 20px ja 22px nupul, Egon 07.10). */
.kanne-lisa { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 6px; border: 1px solid var(--joon-tugev);
    background: var(--pind); color: var(--aktsent); font-size: 15px; font-weight: 600; line-height: 1; cursor: pointer; text-decoration: none; padding: 0 0 2px; }
.kanne-lisa:hover { background: var(--aktsent); border-color: var(--aktsent); color: #fff; text-decoration: none; }
/* 2) Avatud rea päis: pealkiri vasakul, „+ Lisa kanne“ paremal */
.rida-avatud-pais { display: flex; align-items: center; justify-content: space-between; gap: var(--vahe); margin-bottom: 10px; }
/* 3) Tühi kuu kuude ribal on klikitav */
.kuud-avatud td.kuu-tuhi { cursor: pointer; color: var(--tekst-4); }
.kuud-avatud td.kuu-tuhi:hover { background: var(--aktsent-hele); color: var(--aktsent); }
.kuud-avatud td.kuu-tuhi:hover::after { content: " +"; font-weight: 700; }
/* 4) Kannete read: tegevused paremal ja hiire all (nagu mujal) */
.kanne-rida .kanne-toimingud { opacity: 0; transition: opacity .12s; }
.kanne-rida:hover .kanne-toimingud, .kanne-rida:focus-within .kanne-toimingud { opacity: 1; }

/* Kannete rea tegevused paremal (✎ ✕), ✕ punaseks alles hiire all */
.kanne-rida .kande-veerg-toiming { flex: 0 0 64px; text-align: right; overflow: visible; }
.kanne-toimingud { display: inline-flex; gap: 2px; align-items: center; }
.kanne-rida .kande-veerg-summa { text-align: right; padding-right: 18px; }
.kanne-rida .kande-veerg-muudetud, .kanne-rida .kande-veerg-muudetud span { color: var(--tekst-3); }
.pais-tegevus { margin-left: 8px; }
.rida-avatud-pais h3 a:hover { color: var(--aktsent) !important; }

/* ==================================================================
   PRINTIMINE / PDF — kogu tabel mahub paberile, midagi ei kerita
   (ekraanil kerib tabel kastis; printides peab kõik olema näha)
   ================================================================== */
@page raport { size: A4 landscape; margin: 10mm; }
@media print {
    html, body { background: #fff !important; }
    .sidebar, .sidebar-tagasi, .abi-nupp, .abi-paneel, .breadcrumb, .flash, .flash-teated, .tabeli-tooriba, .veerupaneel,
    .lehe-pais .btn, .lehe-pais select, .pais-valik, .modal-varjund, .kirje-jalus { display: none !important; }
    .main, .container, .leht, [class$="-sisu"] { margin: 0 !important; padding: 0 !important; max-width: none !important; width: auto !important; }
    body:has(.raport-kast) .main { page: raport; }
    /* Kastid: kõrguse piirang ja kerimine maha */
    .card { max-height: none !important; overflow: visible !important; box-shadow: none !important; border: none !important;
        padding: 0 !important; margin: 0 0 8mm !important; }
    .vaate-rida { display: block !important; }
    /* Tabel mahutatakse lehe laiusesse: kasutaja veerulaiused ja kleepuv päis ei kehti */
    table { width: 100% !important; font-size: 9pt; }
    table[data-tv] tr > * { width: auto !important; min-width: 0 !important; max-width: none !important; }
    table tr:first-child th { position: static !important; box-shadow: none !important; }
    th, td { padding: 3pt 5pt !important; white-space: normal !important; overflow: visible !important; text-overflow: clip !important; }
    th { font-size: 7.5pt; }
    tr { break-inside: avoid; }
    td a { color: inherit !important; text-decoration: none !important; }
    .toimingu-veerg, .laiuse-kaepide, .pealkirja-otsing, .otsingu-kast input, .sordi-ikoon { display: none !important; }
    .badge, .marker { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    h1 { font-size: 16pt; margin: 0 0 4mm; }
}

/* ==================================================================
   SISSELOGIMINE (login.php) – vt juhend 2.21
   ================================================================== */
.login-leht { min-height: 100vh; display: flex; flex-direction: column; align-items: center; background: var(--taust); padding: 0 20px; box-sizing: border-box; }
.login-keskel { flex-grow: 1; display: flex; flex-direction: column; justify-content: center; width: 100%; max-width: 400px; gap: 28px; padding: 40px 0 0; }
.login-leht .login-logo { text-align: center; margin: 0; }
.login-leht .login-logo .hops-logo { font-size: 40px !important; }
.login-kaart { background: var(--pind); border: 1px solid var(--joon); border-radius: 12px; box-shadow: 0 1px 2px rgba(16,24,40,.04), 0 8px 24px rgba(16,24,40,.06);
    padding: 28px; display: flex; flex-direction: column; gap: 18px; }
.login-kaart h1 { margin: 0; font-size: 20px; }
.login-kaart .tekst { margin: 0; font-size: 14px; line-height: 1.5; color: var(--tekst-2); }
.login-kaart .form-row { margin: 0; }
.login-valjad { display: flex; flex-direction: column; gap: 14px; }
.login-kaart input[type=email], .login-kaart input[type=password], .login-kaart input[type=text] { height: 40px !important; font-size: 15px !important; padding: 0 12px !important; }
.parooli-kast { position: relative; }
.parooli-kast input { padding-right: 44px !important; }
.parooli-naita { position: absolute; right: 4px; top: 4px; width: 32px; height: 32px; border: none; background: none; border-radius: 6px; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--tekst-3); }
.parooli-naita:hover { background: var(--hall-t); color: var(--tekst); }
.login-rida { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.login-rida label { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: 14px; font-weight: 400; color: var(--tekst); text-transform: none; letter-spacing: 0; cursor: pointer; }
.login-rida a, .login-tagasi { font-size: 14px; font-weight: 600; }
.login-tagasi { font-size: 13px; color: var(--tekst-3); align-self: flex-start; }
.login-kaart .btn { width: 100%; height: 42px; font-size: 14px; }
.login-kaart .flash { margin: 0; }
.login-ok { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.login-ok-ikoon { width: 48px; height: 48px; border-radius: 50%; background: var(--roheline-t); color: var(--roheline); display: flex; align-items: center; justify-content: center; }
.login-jalus { padding: 24px 0 28px; display: flex; flex-direction: column; align-items: center; gap: 6px; font-size: 13px; color: var(--tekst-3); }
.login-jalus a { font-weight: 600; }
.login-jalus small { font-size: 12px; color: var(--tekst-4); }

.login-leht .login-tunnuslause { margin-top: 8px; }
.login-kaart .form-row label { margin-bottom: 6px; }
.login-rida input[type=checkbox] { width: 16px; height: 16px; margin: 0; accent-color: var(--aktsent); }
.login-kaart .login-tagasi:hover { color: var(--aktsent); }
@media (max-width: 480px) { .login-kaart { padding: 22px 20px; } }

/* Tööriba nupud sama suured kui „≡ Veerud“ */
.tabeli-tooriba .tooriba-nupp { height: var(--h-nupp-v); padding: 0 12px; font-size: 12px; font-weight: 600; border-radius: var(--r-nupp); width: auto; }

/* Eelarve kanded: terve rida on link muutmisse (nuppe real pole); muutmisel Salvesta · Kustuta · Loobu */
a.kanne-link { color: inherit; text-decoration: none; cursor: pointer; }
a.kanne-link:hover { text-decoration: none; color: inherit; background: var(--aktsent-hele) !important; }
a.kanne-link:hover .kande-veerg-kp { color: var(--aktsent); }
.kanne-muuda-nupud { flex: 0 0 auto !important; display: inline-flex; gap: 6px; justify-content: flex-end; }

/* Lehe päis on igal lehel sama kõrge (nupu/valiku kõrgus), et lehti vahetades sisu ei hüppaks —
   nt töölaua ja eelarve kokkuvõtte kastid on täpselt samal kõrgusel */
.lehe-pais { min-height: var(--h-nupp); }
.lehe-pais h1, .leht .lehe-pais h1 { margin: 0; }

/* Kokkuvõtte kast on igal lehel sama kõrge: .leht lehtedel (töölaud) kirjutas kasti polster
   KPI polstri üle ja kast oli 4 px kõrgem kui eelarve lehel */
.leht .card.kpi { padding: 14px var(--kast-pad) 16px; }
.leht .card.kpi h3 { margin: 0 0 6px; }

/* Alltöövõtja avalik töökäsk telefonis (vt juhend 2.22) – väljad 16 px, et iPhone ei suumiks */
@media (max-width: 600px) {
    input:not([type=checkbox]):not([type=radio]), select, textarea { font-size: 16px !important; min-height: 44px; }
    .btn { min-height: 44px; }
}

/* ==================================================================
   ALLTÖÖVÕTJA TÖÖKÄSK (tookask_avalik.php) — telefon eelkõige, vt juhend 2.22
   ================================================================== */
.av-keha { background: var(--taust); margin: 0; min-height: 100vh; }
.av-riba { position: sticky; top: 0; z-index: 20; height: 56px; display: flex; align-items: center; gap: 12px; padding: 0 16px;
    padding-top: env(safe-area-inset-top, 0px); background: var(--pind); border-bottom: 1px solid var(--joon); }
.av-riba-tekst { font-size: 14px; color: var(--tekst-3); font-weight: 500; }
.av-sisu { max-width: 600px; margin: 0 auto; padding: 16px 16px 140px; box-sizing: border-box; }
.av-sisu .flash { margin: 0 0 12px; }
.av-pais { margin: 4px 0 14px; }
.av-pais .badge { font-size: 12px; }
.av-pealkiri { font-size: 22px; line-height: 1.25; margin: 8px 0 4px; color: var(--navy); }
.av-alapealkiri { font-size: 14px; color: var(--tekst-3); }
.av-kaart { background: var(--pind); border: 1px solid var(--joon); border-radius: 12px; padding: 16px; margin: 0 0 12px; }
.av-jaotis { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--tekst-3); margin: 22px 0 8px; display: flex; align-items: center; gap: 8px; }
.av-tekst { font-size: 15px; line-height: 1.5; color: var(--tekst); margin: 0; }
.av-hall { color: var(--tekst-3); }
.av-kirjeldus { white-space: pre-wrap; }
.av-markus { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--joon); font-size: 14px; color: var(--tekst-2); }
.av-punane { color: var(--punane); }
/* Infokaart */
.av-info { padding: 4px 16px; }
.av-info-rida { display: flex; align-items: center; gap: 12px; min-height: 56px; border-bottom: 1px solid var(--joon); }
.av-info-rida:last-child { border-bottom: none; }
.av-info-ikoon { width: 36px; height: 36px; border-radius: 10px; background: var(--aktsent-hele); color: var(--aktsent); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.av-info-tekst { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-size: 15px; }
.av-info-tekst strong { font-weight: 600; color: var(--tekst); }
.av-info-tekst small { font-size: 13px; color: var(--tekst-3); }
.av-info-nupp { flex-shrink: 0; min-height: 40px; padding: 0 14px; display: inline-flex; align-items: center; border-radius: 8px; border: 1px solid var(--joon-tugev);
    font-size: 14px; font-weight: 600; color: var(--aktsent); text-decoration: none; background: var(--pind); }
.av-info-nupp:active { background: var(--aktsent-hele); }
/* Mida teha */
.av-tegevused-loend { margin: 0; padding-left: 22px; font-size: 15px; line-height: 1.6; }
.av-tegevused-loend li + li { margin-top: 6px; }
.av-kommentaar { margin-top: 12px; padding-left: 10px; border-left: 3px solid var(--joon); font-size: 14px; white-space: pre-wrap; }
.av-kommentaar small { display: block; font-size: 12px; color: var(--tekst-3); margin-top: 2px; }
.av-pildid { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.av-pildid:first-child { margin-top: 0; }
.av-pildid img, .av-pisi { width: 88px; height: 88px; object-fit: cover; border-radius: 8px; border: 1px solid var(--joon); display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; color: var(--tekst-3); background: var(--pind-2); overflow: hidden; }
.av-pisi img { width: 100%; height: 100%; border: none; border-radius: 0; }
.av-fail { font-size: 14px; }
/* Juba ules laaditud fail pildikastis: klikitav, PDF-il tyybi silt. */
.av-pisi.av-olemas { position: relative; overflow: hidden; text-decoration: none; background: var(--pind-2); }
.av-pisi.av-olemas .av-pisi-tyyp { font-size: 12px; font-weight: 700; color: var(--tekst-3); letter-spacing: .04em; }
.av-pisi.av-olemas:hover { border-color: var(--aktsent); }
/* Tagasilükkamine */
.av-tagasi { margin: 18px 0 0; }
.av-tagasi summary { list-style: none; cursor: pointer; font-size: 14px; font-weight: 600; color: var(--tekst-3); text-align: center; padding: 10px; }
.av-tagasi summary::-webkit-details-marker { display: none; }
.av-tagasi[open] summary { color: var(--tekst); }
.av-hoiatus { border-color: var(--punane-t); background: #FDF6F5; }
.av-hoiatus strong { color: var(--punane); }
.av-kirjeldus-kast summary { cursor: pointer; font-weight: 600; font-size: 15px; }
.av-kirjeldus-kast[open] summary { margin-bottom: 10px; }
/* Vormid: 48 px väljad, 16 px kiri (iPhone ei suumi) */
.av-vorm { display: flex; flex-direction: column; gap: 6px; }
.av-vorm label { font-size: 13px; font-weight: 600; color: var(--tekst-2); margin-top: 8px; text-transform: none; letter-spacing: 0; }
.av-vorm label:first-of-type { margin-top: 0; }
.av-sisu input[type=text], .av-sisu input[type=date], .av-sisu input[type=tel], .av-sisu textarea {
    width: 100%; box-sizing: border-box; min-height: 48px; font-size: 16px !important; padding: 10px 12px; border: 1px solid var(--joon-tugev); border-radius: 8px; background: var(--pind); }
.av-sisu textarea { min-height: 96px; }
.av-kulu-rida { display: grid; grid-template-columns: 1fr 1fr 44px; gap: 8px; margin-bottom: 8px; }
.av-kulu-rida input[name="kulu_nimetus[]"] { grid-column: 1 / -1; }
.av-kulu-rida .kulu-kustuta { width: 44px; height: 48px; border: none; background: none; color: var(--tekst-3); font-size: 22px; cursor: pointer; }
.av-lisa-rida { align-self: flex-start; min-height: 44px; border: none; background: none; color: var(--aktsent); font-size: 15px; font-weight: 600; padding: 0; cursor: pointer; }
.av-kokku { display: flex; justify-content: space-between; align-items: center; padding: 10px 0 4px; border-top: 1px solid var(--joon); font-size: 15px; color: var(--tekst-3); }
.av-kokku strong { font-size: 17px; color: var(--tekst); }
/* Checklist */
.av-edenemine { margin-left: auto; font-size: 13px; color: var(--tekst-2); letter-spacing: 0; }
.av-riba-edenemine { height: 6px; background: var(--hall-t); border-radius: 3px; overflow: hidden; margin: -2px 0 10px; }
.av-riba-edenemine span { display: block; height: 100%; background: var(--roheline); transition: width .2s; }
.av-checklist { padding: 4px 12px; }
.av-cl-rida { display: grid; grid-template-columns: 40px 1fr 40px; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--joon); }
.av-cl-rida:last-child { border-bottom: none; }
.av-cl-ruut { width: 40px; height: 40px; border: 2px solid var(--joon-tugev); border-radius: 10px; background: var(--pind); cursor: pointer; padding: 0; position: relative; }
.av-cl-rida.tehtud .av-cl-ruut { background: var(--roheline); border-color: var(--roheline); }
.av-cl-rida.tehtud .av-cl-ruut::after { content: ""; position: absolute; left: 13px; top: 6px; width: 9px; height: 17px; border: solid #fff; border-width: 0 3px 3px 0; transform: rotate(45deg); }
.av-cl-rida.probleem .av-cl-ruut { background: var(--punane); border-color: var(--punane); }
.av-cl-rida.probleem .av-cl-ruut::after { content: "!"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 20px; font-weight: 800; }
.av-cl-nimi { font-size: 15px; line-height: 1.35; cursor: pointer; }
.av-cl-rida.tehtud .av-cl-nimi { color: var(--tekst-3); }
.av-cl-menuu { width: 40px; height: 40px; border: none; background: none; font-size: 20px; color: var(--tekst-3); cursor: pointer; border-radius: 8px; }
.av-cl-menuu:active { background: var(--hall-t); }
.av-cl-probleem { grid-column: 2 / -1; }
.av-cl-probleem input { border-color: var(--punane) !important; }
/* Kaamera */
.av-kaamera { width: 88px; height: 88px; border: 2px dashed var(--joon-tugev); border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 4px; color: var(--aktsent); font-size: 12px; font-weight: 600; cursor: pointer; position: relative; text-transform: none; letter-spacing: 0; margin: 0; }
.av-kaamera input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
/* Tehtud */
.av-valmis { text-align: center; }
.av-valmis-ikoon { width: 56px; height: 56px; border-radius: 50%; background: var(--roheline-t); color: var(--roheline); display: flex; align-items: center; justify-content: center; margin: 4px auto 12px; }
.av-valmis-tekst { font-size: 16px; line-height: 1.5; margin: 0 0 14px; }
.av-kokkuvote { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; text-align: left; }
.av-kokkuvote div { background: var(--pind-2); border-radius: 8px; padding: 10px 12px; }
.av-kokkuvote dt { font-size: 12px; color: var(--tekst-3); }
.av-kokkuvote dd { margin: 2px 0 0; font-size: 16px; font-weight: 600; }
/* Põhinupp allservas kinni */
.av-alumine { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; background: var(--pind); border-top: 1px solid var(--joon);
    padding: 12px 16px calc(10px + env(safe-area-inset-bottom, 0px)); box-shadow: 0 -4px 16px rgba(16,24,40,.06); }
.av-alumine > *, .av-alumine form { max-width: 568px; margin-left: auto; margin-right: auto; }
.av-nupp { display: flex; align-items: center; justify-content: center; width: 100%; height: 52px; border: none; border-radius: 10px; font-size: 16px; font-weight: 700; cursor: pointer; }
.av-nupp-sinine { background: var(--aktsent); color: #fff; }
.av-nupp-roheline { background: var(--roheline); color: #fff; }
.av-nupp-hall { background: var(--hall-t); color: var(--tekst); height: 48px; margin-top: 8px; }
.av-vihje { font-size: 12px; color: var(--tekst-3); text-align: center; margin: 6px 0 0; }
.av-vihje-vasak { text-align: left; margin: 0 0 4px; }

/* ===== ETTEVOTTE MAANDUMISLEHT (firma_avalik.php) =====================
   Alltoovotja naeb siin koiki oma toid. Sama av-* pohi, mis tookasu
   avalikul lehel; siia tuleb ainult nimekiri ja PIN-i valjad.
   Telefoniekraan on esimene sihtmark - rida on uhe sorminaputaiega
   avatav ja kuupaev on fikseeritud laiusega, et nimed algaksid ühelt joonelt. */
.av-tyhi { color: var(--tekst-3); }

/* Kuluread: number sattus Selgituse lahtrisse. Vihje istub rea sees. */
.kulu-vale-koht { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin-top: 8px; padding: 8px 10px; border-radius: 6px;
    background: #FDF1DC; color: #7A5410; font-size: 12px; line-height: 1.4; }
.kulu-vale-koht[hidden] { display: none; }
.kulu-vale-koht .tekst { flex: 1 1 160px; min-width: 0; }
.kulu-vale-koht .kulu-tosta { flex: 0 0 auto; border: 0; border-radius: 6px; padding: 6px 12px;
    background: #E8990C; color: #fff; font: inherit; font-weight: 700; cursor: pointer; }
.kulu-vale-koht .kulu-tosta:hover { background: #cf8709; }

/* Teostuse tagasilukkamine: pohjus kusitakse lehe sees, mitte prompt-aknas. */
.lukka-kast { margin-top: var(--vahe); padding: 12px 14px; border: 1px solid var(--punane-t);
    border-radius: 8px; background: #FDF6F5; }
.lukka-kast[hidden] { display: none; }
.lukka-kast > label { display: block; margin-bottom: 6px; font-size: 12px; font-weight: 600; color: var(--punane); }
.lukka-kast textarea { width: 100%; box-sizing: border-box; margin-bottom: 10px; }
.lukka-kast .lukka-nupud { display: flex; gap: 8px; }
.lukka-kast .help { margin-top: 8px; }

/* ===== QR-KOODI KAART (hoone.php, hoolduskava_vorm.php) ==============
   Pilt vasakul, link ja nupud korval. Kitsal ekraanil lahevad
   ustteise alla ja QR jaab keskele. */
.qr-kaart { display: flex; align-items: flex-start; gap: var(--vahe); }
.qr-kaart > .qr-pilt { flex: 0 0 auto; line-height: 0; }
.qr-kaart > .qr-pilt svg { display: block; border: 1px solid var(--joon); border-radius: 8px; }
.qr-kaart > .qr-sisu { flex: 1 1 auto; min-width: 0; }
.qr-kaart > .qr-sisu .form-row { margin: 0; }
@media (max-width: 620px) {
    .qr-kaart { flex-direction: column; align-items: center; }
    .qr-kaart > .qr-sisu { width: 100%; }
}
/* Lehte tervikuna printides jaab QR alles, muu lehe sisu mitte. */
@media print {
    body * { visibility: hidden; }
    .qr-kaart, .qr-kaart * { visibility: visible; }
    .qr-kaart { position: absolute; left: 0; top: 0; border: 0; }
    .qr-kaart .btn, .qr-kaart .infomull { display: none; }
}

/* Lingi kopeerimise kast: vihjetekst algab sama joone pealt, kust algab
   lingivalja tekst (valja ääris 1 px + sisepolster 10 px), mitte kasti servast.
   Nii on molemad tekstid uhel joonel. Vahe on suurem ja tekst heledam -
   see on korvalmarkus, mitte lingiga vorreldes vordne info (Egon 26.09). */
.firma-link-kast .help {
    margin-top: 10px;
    padding-left: 11px;
    color: var(--tekst-4);
}

/* Lingi kopeerimise rida ettevotte lehel (hooldusfirma.php) */
.firma-jagamine-rida { display: flex; align-items: center; gap: 8px; }
.firma-jagamine-rida input[type="text"] { flex: 1 1 auto; min-width: 0; font-size: 13px; color: var(--tekst-2); }
.firma-jagamine-rida .btn { flex: 0 0 auto; }

/* Kalendrilingi kast (minu_konto.php) - ICS-voog Google'i / Outlooki / iPhone'i */
.firma-link-kast .help { line-height: 1.55; }
.firma-link-kast .help strong { color: var(--tekst-3); font-weight: 600; }
.kal-uus-vorm { display: flex; align-items: center; gap: 12px; margin: 14px 0 0; }
.kal-uus-vorm .btn { flex: 0 0 auto; }
.kal-uus-vorm .detail { color: var(--tekst-4); }
@media (max-width: 767px) { .kal-uus-vorm { flex-direction: column; align-items: flex-start; gap: 8px; } }

.firma-pin-vorm { margin: 14px 0 0; }
.objekt-firma-vali { width: 100%; box-sizing: border-box; height: 44px; margin: 0 0 12px; font-size: 15px; }

/* Tehnik sai too valmis - ettevote peab ta ule vaatama ja summa lisama. */
.av-tehnik-riba { border-color: var(--sinine); background: var(--sinine-t); }
.av-tehnik-riba strong { display: block; margin-bottom: 4px; color: var(--sinine-s); font-size: 15px; }
.av-tehnik-riba .av-tekst { color: var(--sinine-s); font-size: 14px; }
.firma-pin-vali {
    width: 100%; box-sizing: border-box; margin: 0 0 12px;
    height: 52px; text-align: center;
    font-size: 26px; font-weight: 700; letter-spacing: .5em; text-indent: .5em;
    font-variant-numeric: tabular-nums;
}

.firma-arv {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 18px; padding: 0 6px; border-radius: 9px;
    background: var(--hall-t); color: var(--hall-s);
    font-size: 11px; font-weight: 700; letter-spacing: 0;
}

.firma-loend {
    background: var(--pind); border: 1px solid var(--joon); border-radius: 12px;
    overflow: hidden;
}
.firma-rida {
    display: flex; align-items: center; gap: 10px;
    padding: 11px 14px; border-bottom: 1px solid var(--joon);
    color: inherit; text-decoration: none;
}
.firma-rida:last-child { border-bottom: 0; }
a.firma-rida:hover { background: var(--pind-2); }
.firma-rida-lingita { opacity: .65; }

.firma-rida .firma-kp {
    flex: 0 0 auto; width: 74px;
    font-size: 12px; color: var(--tekst-3); font-variant-numeric: tabular-nums;
}
.firma-rida .firma-nimi {
    flex: 1 1 auto; min-width: 0;
    font-size: 14px; font-weight: 600; color: var(--tekst); line-height: 1.3;
}
.firma-rida .firma-nimi small {
    display: block; margin-top: 2px;
    font-size: 12px; font-weight: 400; color: var(--tekst-3);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.firma-rida .badge { flex: 0 0 auto; }

@media (max-width: 420px) {
    /* Kitsal ekraanil laheb kuupaev nime peale, et staatusesilt ara mahuks. */
    .firma-rida { flex-wrap: wrap; }
    .firma-rida .firma-kp { width: auto; order: 1; }
    .firma-rida .badge { order: 2; margin-left: auto; }
    .firma-rida .firma-nimi { order: 3; flex-basis: 100%; }
}
.av-jalus { text-align: center; font-size: 12px; color: var(--tekst-4); padding: 0 16px 120px; }

/* Valiku sisend (kirjuta või vali loetelust): nool paremal nagu rippmenüül */
input.valiku-sisend { padding-right: 32px !important; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238A94A3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center; cursor: pointer; }
input.valiku-sisend:focus { cursor: text; }
.rippvalik .hk-valik-rida.valitud { font-weight: 600; color: var(--aktsent); }
.rippvalik .hk-valik-rida.aktiivne, .rippvalik .hk-valik-rida:hover { background: var(--aktsent-hele); }
#hk_konteiner { max-height: 280px; }
.rippvalik .hk-lisa-rida { color: var(--aktsent); font-weight: 600; border-top: 1px solid var(--joon); margin-top: 4px; }

/* Telefoni lihtsustatud vaade – abiklassid (vt juhend 2.23) */
.ainult-telefon { display: none !important; }
@media (max-width: 767px) {
    .ainult-arvuti { display: none !important; }
    .ainult-telefon { display: revert !important; }
    .sidebar { display: none !important; }
    .main { margin-left: 0 !important; padding-bottom: 90px; }
    .container { padding: 14px 16px 24px; }
    .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ruut { grid-template-columns: 1fr; }
    .ruut > * { grid-column: auto !important; }
    .tk-ulemine { grid-template-columns: 1fr !important; }
    .tk-ulemine > .tk-muuda, .tk-parem { grid-column: auto !important; }
    .alumine-menuu { position: fixed; left: 0; right: 0; bottom: 0; height: 76px; padding-bottom: 14px; box-sizing: border-box; display: flex;
        background: var(--pind); border-top: 1px solid var(--joon); z-index: 200; }
    .alumine-menuu a { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; padding-top: 8px; font-size: 11px; font-weight: 500; color: var(--tekst-3); text-decoration: none; }
    .alumine-menuu a.aktiivne { color: var(--aktsent); font-weight: 600; }
    .ujuv-nupp { position: fixed; right: 16px; bottom: 92px; height: 52px; padding: 0 20px; border-radius: 26px; background: var(--aktsent); color: #fff;
        font-size: 15px; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; box-shadow: 0 6px 18px rgba(36,90,150,.35); z-index: 150; text-decoration: none; }
}

/* ==================================================================
   TELEFONI VAADE (alla 768 px) — ülariba, alumine menüü, lihtsustatud lehed (juhend 2.23)
   ================================================================== */
@media (max-width: 767px) {
    body { -webkit-text-size-adjust: 100%; }
    .mobiil-riba { position: sticky; top: 0; z-index: 180; display: flex !important; align-items: center; gap: 12px; height: 56px; padding: 0 16px;
        padding-top: env(safe-area-inset-top, 0px); background: var(--pind); border-bottom: 1px solid var(--joon); }
    .mobiil-logo { flex-shrink: 0; text-decoration: none; }
    .mobiil-hoone { flex: 1; min-width: 0; margin: 0; }
    .mobiil-hoone select { width: 100%; height: 40px; min-height: 40px; font-size: 15px !important; font-weight: 600; border: none; background-color: var(--pind-2); border-radius: 8px; padding: 0 30px 0 12px; }
    .mobiil-hoone-silt { flex: 1; min-width: 0; font-weight: 600; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .alumine-menuu { display: flex !important; padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px)); height: auto; min-height: 76px; }
    .alumine-menuu svg { display: block; }
    .mm-ikoon { position: relative; display: block; }
    .mm-loendur { position: absolute; top: -4px; right: -10px; min-width: 18px; height: 18px; border-radius: 9px; background: #E8990C; color: #fff;
        font-size: 10px; font-weight: 700; display: flex; align-items: center; justify-content: center; padding: 0 4px; box-sizing: border-box; }
    .mobiil-rohkem { position: fixed; inset: 0; z-index: 190; background: rgba(16,24,40,.35); display: flex !important; align-items: flex-end; }
    .mobiil-rohkem[hidden] { display: none !important; }
    .mobiil-rohkem-leht { width: 100%; background: var(--pind); border-radius: 16px 16px 0 0; padding: 8px 0 96px; }
    .mobiil-rohkem-leht a { display: flex; align-items: center; min-height: 52px; padding: 0 20px; font-size: 16px; font-weight: 500; color: var(--tekst);
        text-decoration: none; border-bottom: 1px solid var(--joon); }
    .mobiil-rohkem-leht a.mobiil-valja { color: var(--punane); }
    .mobiil-markus { font-size: 12px; color: var(--tekst-3); padding: 12px 20px 0; margin: 0; }
    .breadcrumb { display: none; }
    h1 { font-size: 22px; }
    .lehe-pais { min-height: 0; }
    .lehe-pais .pais-valik, .tabeli-tooriba .vaate-nupp { display: none !important; }
    /* Töölaud: 2 KPI kõrvuti, loendid üksteise all */
    .leht.toolaud .toolaud-loendid { grid-template-columns: 1fr !important; }
    .kpi-vaartus { font-size: 19px; white-space: normal; }
    .loend-rida { min-height: 60px; }
    /* Töökäsud */
    .m-tookasud { display: block !important; }
    .m-otsing { width: 100%; height: 44px; font-size: 16px !important; border: 1px solid var(--joon-tugev); border-radius: 10px; padding: 0 14px; box-sizing: border-box; margin-bottom: 10px; }
    .m-filtrid { display: flex; gap: 8px; overflow-x: auto; margin: 0 -16px 12px; padding: 0 16px 2px; scrollbar-width: none; }
    .m-filtrid button { flex-shrink: 0; height: 36px; padding: 0 14px; border-radius: 18px; border: 1px solid var(--joon-tugev); background: var(--pind);
        font-size: 14px; font-weight: 500; color: var(--tekst-2); white-space: nowrap; }
    .m-filtrid button b { font-weight: 700; margin-left: 4px; color: var(--tekst-3); }
    .m-filtrid button.aktiivne { background: var(--navy); border-color: var(--navy); color: #fff; }
    .m-filtrid button.aktiivne b { color: rgba(255,255,255,.75); }
    .m-loend { background: var(--pind); border: 1px solid var(--joon); border-radius: 12px; overflow: hidden; }
    .m-loend .loend-rida { padding: 10px 14px; }
    .m-loend .loend-rida[hidden] { display: none !important; }
    /* Eelarve */
    .m-eelarve { display: block !important; }
    .m-eelarve h2 { margin: 22px 0 8px; }
    .m-kokkuvote { padding: 16px !important; }
    .m-kokku-rida { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; }
    .m-kokku-rida h3 { margin: 0 0 4px; }
    .m-kokku-pr { font-size: 22px; font-weight: 700; color: var(--aktsent); text-align: right; line-height: 1; }
    .m-kokku-pr small { display: block; font-size: 11px; font-weight: 500; color: var(--tekst-3); margin-top: 3px; }
    .m-prognoos { align-items: center; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--joon); font-size: 14px; color: var(--tekst-2); }
    .m-prognoos b { font-size: 18px; }
    .m-prognoos .pos { color: var(--roheline); } .m-prognoos .neg { color: var(--punane); }
    .m-riba { position: relative; display: block; height: 8px; border-radius: 4px; background: var(--hall-t); margin: 10px 0 6px; }
    .m-riba > span { display: block; height: 100%; border-radius: 4px; background: var(--aktsent); }
    .m-riba > i { position: absolute; top: -4px; bottom: -4px; width: 2px; margin-left: -1px; background: var(--navy); border-radius: 1px; }
    .m-riba-suur { height: 10px; margin-top: 14px; }
    .m-riba-selgitus { font-size: 12px; color: var(--tekst-3); }
    .m-kulu-kaart { background: var(--pind); border: 1px solid var(--joon); border-radius: 12px; margin-bottom: 8px; }
    .m-kulu-kaart summary { list-style: none; padding: 14px 16px 12px; cursor: pointer; }
    .m-kulu-kaart summary::-webkit-details-marker { display: none; }
    .m-kulu-pais { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
    .m-kulu-nimi { font-size: 15px; font-weight: 600; min-width: 0; }
    .m-kulu-nimi small { font-weight: 400; color: var(--tekst-3); font-size: 13px; }
    .m-kulu-prognoos { flex-shrink: 0; font-size: 15px; font-weight: 700; }
    .m-kulu-prognoos.pos { color: var(--roheline); } .m-kulu-prognoos.neg { color: var(--punane); }
    .m-kulu-kaart.ees .m-riba > span { background: var(--punane); }
    .m-kulu-summad { display: block; font-size: 13px; color: var(--tekst-3); }
    .m-kuud { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; padding: 0 16px 12px; }
    .m-kuud span { background: var(--pind-2); border-radius: 6px; padding: 6px 2px; text-align: center; font-size: 12px; font-weight: 600; }
    .m-kuud b { display: block; font-size: 10px; font-weight: 600; color: var(--tekst-3); letter-spacing: .04em; }
    .m-kanded { padding: 0 16px 8px; }
    .m-kanded div { display: flex; justify-content: space-between; gap: 10px; padding: 9px 0; border-top: 1px solid var(--joon); font-size: 14px; }
    .m-kanded div span { color: var(--tekst-2); min-width: 0; }
    .m-kulu-lisa { margin: 4px 16px 14px; width: calc(100% - 32px); min-height: 44px; }
    .m-arvuti-markus { font-size: 12px; color: var(--tekst-4); text-align: center; margin: 18px 0 80px; }
    .ujuv-nupp { border: none; cursor: pointer; }
    /* Kande aken alt avaneva lehena */
    #kanne_popup_kate { align-items: flex-end !important; }
    #kanne_popup_kate .modal-sisu { max-width: none !important; width: 100%; margin: 0 !important; border-radius: 16px 16px 0 0; max-height: 90vh; }
    #kanne_popup_kate .ruut { grid-template-columns: 1fr 1fr !important; }
}

/* ===== Telefon: ülariba (.mobiil-riba) peab olema sisu KOHAL, mitte kõrval (13, 22.09) =====
   .mobiil-riba asub .layout sees, mis on rida (flex-direction: row) → riba võttis ~75% laiusest
   ja .main surus paremasse äärde. Telefonis paneme .layout veergu. */
@media (max-width: 767px) {
    .layout { display: flex; flex-direction: column !important; min-height: 100vh; }
    .mobiil-riba { width: 100%; flex: none; box-sizing: border-box; }
    .main { width: 100%; max-width: 100%; min-width: 0; flex: 1 1 auto; margin-left: 0 !important; box-sizing: border-box; }
    html, body { overflow-x: hidden; }
}

/* ===== Meeldetuletus haldurile (töökäsk + hoolduskava), vt juhend 2.24 ===== */
.meeldetuletus { border-top: 1px solid var(--joon); margin-top: 18px; padding-top: 16px; }
.meeld-pais { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.meeld-pais h3 { margin: 0; }
.meeld-valjad { margin-top: 12px; display: flex; flex-direction: column; gap: 14px; }
.meeldetuletus:not(.sees) .meeld-valjad { display: none; }
.meeld-paar { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.meeld-paar .form-row, .meeld-valjad > .form-row { margin: 0; }
.meeld-kanalid { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 13px; }
.meeld-kanalid label { display: inline-flex; align-items: center; gap: 7px; margin: 0; font-size: 13px; font-weight: 400;
    text-transform: none; letter-spacing: 0; color: var(--tekst); cursor: pointer; }
.meeld-kanalid input { width: 16px; height: 16px; margin: 0; accent-color: var(--aktsent); }
.meeld-vihje { font-size: 12px; color: var(--tekst-3); margin-top: 6px; }
.meeldetuletus.sees .meeld-vihje { display: none; }
.meeld-olek { display: flex; align-items: flex-start; gap: 7px; padding: 8px 10px; border-radius: var(--r-nupp);
    font-size: 12px; line-height: 1.4; background: var(--aktsent-hele); color: var(--aktsent); }
.meeld-olek.saadetud { background: #E0F1E7; color: #2F7D58; }
.meeld-olek.hoiatus  { background: #FDF1DC; color: #95650F; }
.meeld-olek svg { flex-shrink: 0; margin-top: 1px; }
.tk-muuda form { display: flex; flex-direction: column; height: 100%; }
.tk-muuda form > .btn:last-child { margin-top: auto; }
.tk-muuda .meeldetuletus + .btn { margin-top: 18px; }

/* Lüliti (sisse/välja): <input type="checkbox" class="luliti"> */
input.luliti { appearance: none; -webkit-appearance: none; position: relative; width: 34px; height: 20px; margin: 0;
    border-radius: 10px; background: var(--joon-tugev); cursor: pointer; flex-shrink: 0; transition: background .15s; }
input.luliti::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%;
    background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.2); transition: left .15s; }
input.luliti:checked { background: var(--aktsent); }
input.luliti:checked::after { left: 16px; }
input.luliti:focus-visible { outline: 2px solid var(--aktsent); outline-offset: 2px; }

/* Kella ikoon päises ja loendis */
.meeld-silt { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--aktsent); white-space: nowrap; }
.meeld-ikoon { display: inline-flex; color: var(--tekst-3); vertical-align: -2px; margin-left: 6px; }

.hk-meeldetuletus { border-top: 1px solid var(--joon); padding-top: var(--vahe); }
.hk-meeld-luliti { display: flex !important; align-items: center; gap: 10px; height: var(--h-nupp); margin: 0 !important; text-transform: none !important;
    letter-spacing: 0 !important; font-size: 14px !important; font-weight: 500 !important; color: var(--tekst) !important; cursor: pointer; }
.hk-meeldetuletus:not(.sees) .ruut > .form-row:not(:first-child), .hk-meeldetuletus:not(.sees) .meeld-kanalid { opacity: .45; }

/* ===== Alltöövõtja töökäsk: maksumus (arve read) ja lepinguline tasu, vt juhend 2.25 ===== */
.av-sisu .kulu-plokk { display: flex; flex-direction: column; gap: 12px; }
.av-sisu .kulu-vihje { font-size: 14px; line-height: 1.45; color: var(--tekst-2); margin-top: -6px; }
.av-sisu .kulu-rida { border: 1px solid var(--joon); border-radius: 10px; background: #F8F9FB; padding: 12px; display: flex; flex-direction: column; gap: 10px; }
.av-sisu .kulu-rida-pais { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 600; color: var(--tekst-3); }
.av-sisu .kulu-rida-pais button { width: 36px; height: 36px; margin: -6px -6px 0 0; border: 0; border-radius: 8px; background: transparent; color: var(--tekst-4); font-size: 20px; cursor: pointer; }
.av-sisu .kulu-rida label, .av-sisu .kulu-plokk .silt { display: block; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--tekst-3); margin: 0 0 6px; }
.av-sisu .kulu-rida input { width: 100%; height: 48px; box-sizing: border-box; font-size: 16px; }
.av-sisu .kulu-arvud { display: grid; grid-template-columns: 96px 1fr 1fr; gap: 8px; align-items: end; }
.av-sisu .kogus-stepper { display: flex; align-items: center; height: 48px; box-sizing: border-box; border: 1px solid var(--joon-tugev); border-radius: 8px; background: #fff; }
.av-sisu .kogus-stepper button { width: 32px; height: 46px; border: 0; background: transparent; color: var(--aktsent); font-size: 20px; font-weight: 600; cursor: pointer; }
.av-sisu .kogus-stepper input { flex: 1; min-width: 0; height: 46px; border: 0 !important; text-align: center; padding: 0; background: transparent; }
.av-sisu .hind-vali { position: relative; }
.av-sisu .hind-vali input { padding-right: 30px; text-align: right; }
.av-sisu .hind-vali::after { content: "€"; position: absolute; right: 12px; bottom: 14px; color: var(--tekst-3); font-size: 15px; pointer-events: none; }
.av-sisu .rea-summa { height: 48px; display: flex; align-items: center; justify-content: flex-end; font-size: 17px; font-weight: 600; color: var(--tekst); white-space: nowrap; }
.av-sisu .kulu-arvud > div:last-child label { text-align: right; }
.av-sisu .lisa-rida-nupp { width: 100%; height: 48px; border: 1.5px dashed var(--joon-tugev); border-radius: 10px; background: #fff; color: var(--aktsent); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; }
.av-sisu .kulu-kokku { border-top: 1px solid var(--joon); padding-top: 12px; display: flex; justify-content: space-between; align-items: baseline; }
.av-sisu .kulu-kokku b { display: block; font-size: 15px; }
.av-sisu .kulu-kokku small { font-size: 12px; color: var(--tekst-3); }
.av-sisu .kulu-kokku .summa { font-family: 'Space Grotesk', sans-serif; font-size: 22px; font-weight: 600; color: var(--navy); white-space: nowrap; }
.av-sisu .leping-info { display: flex; gap: 12px; padding: 14px; border-radius: 10px; background: var(--aktsent-hele); }
.av-sisu .leping-info .ikoon { width: 36px; height: 36px; border-radius: 8px; background: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--aktsent); }
.av-sisu .leping-info .silt { color: var(--aktsent); margin: 0; }
.av-sisu .leping-info .tasu { font-family: 'Space Grotesk', sans-serif; font-size: 24px; font-weight: 600; color: var(--navy); margin: 2px 0 6px; }
.av-sisu .leping-info p { margin: 0; font-size: 14px; line-height: 1.45; color: var(--tekst-2); }
.av-sisu .leping-info.kompakt { padding: 10px 12px; align-items: center; font-size: 14px; color: var(--navy); }
.av-sisu .lisa-rida-vihje { font-size: 12px; color: var(--tekst-3); text-align: center; margin-top: 6px; }
/* Kinnitatud alumine nupuriba ei tohi katta lehe viimast rida (nt „Kokku“) */
body:has(.alumine-riba, .kinnitatud-nupp) { padding-bottom: 140px; }
/* Vastuvotmise riba kommentaarivaljaga. Riba on fikseeritud ekraani all, nii
   et korgema riba puhul peab ka lehe alumine vaba ruum kasvama - muidu jaab
   sisu riba taha peitu. */
.av-alumine .av-kommentaar { width: 100%; box-sizing: border-box; height: 44px; margin: 0 0 8px;
    padding: 0 12px; border: 1px solid var(--joon-tugev); border-radius: 10px;
    background: var(--pind); color: var(--tekst); font-size: 15px; font-family: inherit; }
.av-alumine .av-kommentaar:focus { outline: none; border-color: var(--aktsent); box-shadow: var(--fookus); }
body:has(.alumine-riba.on-kommentaar) { padding-bottom: 196px; }

/* Alltöövõtja kommentaar töö vastuvõtmisel — „Järgmine samm" kastis tema
   sõnad, et nad ei näeks välja nagu programmi enda tekst. */
.jargmine-samm .vv-kommentaar { color: var(--tekst); font-style: italic; }

/* avaliku lehe ühised väljareeglid ei tohi stepperi sisemist välja raamida */
.av-sisu .kogus-stepper input { border: 0 !important; min-height: 46px; padding: 0 !important; background: transparent !important; }
.av-sisu .kulu-rida input[type=text] { min-height: 48px; }

/* Maksumuse rida: ühtlane tumedam hall taust, hinna numbrid ei kattu € märgiga */
.av-sisu .kulu-rida { background: #EDF0F3; border-color: #E0E4E9; }
.av-sisu .kulu-rida .kogus-stepper, .av-sisu .kulu-rida .hind-vali input, .av-sisu .kulu-rida input[name="kulu_nimetus[]"] { background: #fff; }
.av-sisu .hind-vali input { padding-left: 10px !important; padding-right: 28px !important; text-align: right; }
.av-sisu .hind-vali::after { right: 10px; }

/* ===== Eelarve: õhukesed jooned summa all + lüliti „Näita graafikuid“, vt juhend 2.26 ===== */
.summa-joon { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.joon { position: relative; width: 110px; height: 3px; border-radius: 3px; background: #EDF0F3; }
.joon > i { display: block; height: 3px; border-radius: 3px; background: #AEB9C7; max-width: 100%; }
.joon.hoiatus > i { background: #D48C82; }
.joon > b { position: absolute; top: -2px; width: 1px; height: 7px; background: var(--navy); opacity: .55; }
.graafikud-peidus .joon { display: none; }
.graafika-luliti { display: inline-flex; align-items: center; gap: 8px; height: var(--h-nupp-v); padding: 0 10px;
    border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); background: #fff; color: var(--tekst-2);
    font-size: 13px; font-weight: 500; cursor: pointer; }
.graafika-luliti:has(input:checked) { background: var(--aktsent-hele); border-color: var(--aktsent-hele); color: var(--aktsent); }
.graafika-luliti input.luliti { width: 30px; height: 18px; }
.graafika-luliti input.luliti::after { width: 14px; height: 14px; }
.graafika-luliti input.luliti:checked::after { left: 14px; }
/* Kokkuvõtte kasti „Kulunud“ joon (kasti laiune) */
.kpi-joon { margin-top: 10px; }
.kpi-joon .joon { width: 100%; height: 4px; }
.kpi-joon .joon > i { height: 4px; }
.kpi-joon .joon > b { top: -3px; height: 10px; }
.kpi-joon small { display: block; margin-top: 5px; font-size: 11px; color: var(--tekst-3); text-align: right; }

/* ===== Kliendi töölaud: objektikaardid, seisuriba, €/m² võrdlus, vt juhend 2.28 ===== */
.objektid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
@media (min-width: 1600px) { .objektid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 900px)  { .objektid { grid-template-columns: 1fr; } }
.objekt-kaart { display: flex; flex-direction: column; }
.objekt-pais { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.objekt-pais h3 { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 600; color: var(--navy);
    text-transform: none; letter-spacing: 0; }
.objekt-meta { font-size: 12px; color: var(--tekst-3); margin-top: 2px; }
.objekt-kpid { display: flex; gap: 12px; margin-top: 16px; }
.objekt-kpid > div { flex: 1; min-width: 0; }
.objekt-kpid .silt { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--tekst-3); }
.objekt-kpid .arv { font-family: 'Space Grotesk', sans-serif; font-size: 24px; font-weight: 600; color: var(--navy); margin-top: 2px; line-height: 1.1; }
.objekt-kpid .arv.punane { color: #B4483C; }
.objekt-kpid .all { font-size: 12px; color: var(--tekst-3); margin-top: 1px; }
.objekt-seis { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--joon); }
.objekt-seis .pealkiri { display: flex; justify-content: space-between; font-size: 12px; color: var(--tekst-3); margin-bottom: 6px; }
.seisuriba { display: flex; height: 8px; border-radius: 8px; overflow: hidden; background: #EDF0F3; }
.seisuriba > span { display: block; }
.seisuriba .tehtud { background: #2F7D58; } .seisuriba .toos { background: var(--aktsent); }
.seisuriba .plaan { background: var(--joon-tugev); } .seisuriba .ule { background: #B4483C; }
.seisu-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 8px; font-size: 12px; color: var(--tekst-2); }
.seisu-legend span { display: inline-flex; align-items: center; gap: 5px; }
.seisu-legend i { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
.objekt-markus { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border-radius: 8px; font-size: 12px;
    line-height: 1.35; margin-top: 12px; background: #FBE7E4; color: #B4483C; }
.objekt-markus.hoiatus { background: #FDF1DC; color: #95650F; }
.vordlus-rida { display: grid; grid-template-columns: 200px 1fr 90px 150px; gap: 14px; align-items: center;
    padding: 8px 0; border-bottom: 1px solid var(--joon); }
.vordlus-rida .vaartus { text-align: right; font-size: 14px; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; }
.vordlus-rida .alus { text-align: right; font-size: 12px; color: var(--tekst-3); }

/* Objektide leht */
.leht.objektid-leht { max-width: 1500px; }
.pais-otsing { height: var(--h-nupp); min-width: 220px; padding: 0 12px; border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); font-size: 14px; }
.pais-valik-select { height: var(--h-nupp); padding: 0 30px 0 10px; border: 1px solid var(--joon-tugev); border-radius: var(--r-nupp); font-size: 14px; background-color: var(--pind); }
.lehe-pais .pais-otsing { margin-left: auto; }
.hoiatusriba { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 16px; margin-bottom: var(--vahe);
    background: #FBE7E4; border: 1px solid #F3CDC7; border-radius: var(--r-kast); color: #B4483C; font-size: 14px; }
.koondkast .kpi-vaartus { font-size: 24px; }
.koondkast .kpi-vaartus.neg { color: var(--punane); }
.koondkast .ruut > div { min-width: 0; }
.objektid .objekt-kaart[hidden] { display: none !important; }
.objekt-kpid .kpi-joon { margin-top: 8px; }
.vordlus-rida .joon { height: 8px; border-radius: 4px; background: var(--hall-t); overflow: hidden; }
.vordlus-rida .joon > i { display: block; height: 100%; background: var(--aktsent); border-radius: 4px; }
.vordlus-rida:last-of-type { border-bottom: none; }
@media (max-width: 767px) {
    .vordlus-rida { grid-template-columns: 1fr auto; row-gap: 4px; }
    .vordlus-rida .joon { grid-column: 1 / -1; }
    .objekt-kpid { flex-wrap: wrap; }
}

/* ===== Ruutmeetri arvestus ja eelarve sektsioonid, vt juhend 2.32 ===== */
:root { --sek-arvestuses: #7386A6; --sek-majandamine: #C3CBD6; }
.sek-pais { display: grid; grid-template-columns: 1fr 150px 120px 120px 100px; gap: 14px; align-items: center;
    padding: 12px 0 12px 10px; background: #F8F9FB; border-bottom: 1px solid var(--joon-tugev); }
.sek-pais .nimi { display: flex; align-items: center; gap: 9px; font-size: 14px; font-weight: 700; color: var(--navy); }
.sek-pais .vihje { font-size: 12px; color: var(--tekst-3); font-weight: 400; }
.sek-tapp { width: 10px; height: 10px; border-radius: 3px; display: inline-block; flex-shrink: 0; background: var(--sek-arvestuses); }
.sek-tapp.majandamine { background: var(--sek-majandamine); }
.sek-rida { display: grid; grid-template-columns: 1fr 150px 120px 120px 100px; gap: 14px; align-items: center;
    padding: 9px 0 9px 24px; border-bottom: 1px solid var(--joon); }
.sek-kokku { display: grid; grid-template-columns: 1fr 150px 120px 120px 100px; gap: 14px; align-items: baseline;
    padding: 12px 0 12px 10px; border-top: 1px solid var(--joon-tugev); font-weight: 700; color: var(--navy); }
.sek-kokku .lisa { font-size: 13px; font-weight: 400; color: var(--tekst-3); margin-left: 10px; }
.sek-rida .num, .sek-pais .num, .sek-kokku .num { text-align: right; font-variant-numeric: tabular-nums; }
/* linnuke „arvesta ruutmeetri kulusse“ vormis */
.m2-linnuke { display: flex; align-items: center; gap: 9px; height: var(--h-nupp); font-size: 14px; color: var(--tekst); }
.m2-linnuke input { width: 16px; height: 16px; margin: 0; accent-color: var(--aktsent); }
.m2-abi { font-size: 12px; color: var(--tekst-3); margin-top: 5px; }
/* €/m² võrdlus objektide vahel */
.m2-vordlus { display: grid; grid-template-columns: 190px 1fr 92px 120px 90px; gap: 14px; align-items: center;
    padding: 9px 0; border-bottom: 1px solid var(--joon); }
.m2-vordlus .riba { height: 6px; border-radius: 6px; background: #EDF0F3; }
.m2-vordlus .riba > i { display: block; height: 6px; border-radius: 6px; background: var(--sek-arvestuses); }
.m2-vordlus .pea { text-align: right; font-size: 14px; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; }
.m2-vordlus .korval { text-align: right; font-size: 13px; color: var(--tekst-4); font-variant-numeric: tabular-nums; }

/* Sektsioonide päis eelarve tabelis (tabelirida, mitte ruudustik) */
.eelarve-tabel .sek-pais-rida > td, .hoolduskava-tabel .sek-pais-rida > td {
    background: #F8F9FB !important; border-bottom: 1px solid var(--joon-tugev) !important; padding: 10px 10px !important;
    text-align: left !important; white-space: nowrap; }
.sek-pais-rida b { font-size: 13px; color: var(--navy); margin-right: 8px; }
.sek-pais-rida .sek-tapp { margin-right: 8px; vertical-align: 1px; }
.sek-pais-rida .vihje { font-size: 12px; color: var(--tekst-3); margin: 0; display: inline; }
.card > .sek-kokku:first-of-type { border-top: none; }
.sek-kokku .muted { font-weight: 400; }
.m2-vordlus.m2-pais { border-bottom: 1px solid var(--joon-tugev); font-size: 11px; text-transform: uppercase;
    letter-spacing: .05em; color: var(--tekst-3); font-weight: 600; }
.m2-vordlus.m2-pais .pea, .m2-vordlus.m2-pais .korval, .m2-vordlus.m2-pais .alus { font-size: 11px; color: var(--tekst-3); font-weight: 600; }
@media (max-width: 767px) { .m2-vordlus { grid-template-columns: 1fr auto; row-gap: 4px; } .m2-vordlus .riba { grid-column: 1 / -1; } .m2-vordlus.m2-pais { display: none; } }
/* Hoolduskulu / majandamiskulu kokkuvõte eelarve all */
.m2-kokkuvote .m2-tabel { width: 100%; border-collapse: collapse; }
.m2-kokkuvote th { position: static !important; box-shadow: none !important; background: none !important;
    font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--tekst-3); text-align: left; padding: 0 0 8px; }
.m2-kokkuvote td { padding: 10px 0; border-top: 1px solid var(--joon); font-size: 14px; color: var(--tekst); }
.m2-kokkuvote .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.m2-kokkuvote .vihje { display: inline; font-size: 12px; color: var(--tekst-3); margin-left: 6px; }
.m2-kokkuvote .kokku-rida td { border-top: 2px solid var(--joon-tugev); color: var(--navy); }
.m2-kokkuvote .sek-tapp { margin-right: 6px; vertical-align: 1px; }

/* ===== 2. ülevaatuse parandused (kliendi üldvaade, eelarve, töölaud) ===== */
/* 1. Eelarve: joon ei tohi lahtrist välja ulatuda (oli fikseeritud 110 px 71 px lahtris) */
td .joon, .summa-joon .joon { width: 100%; max-width: 110px; margin-left: auto; }
/* 2. Sektsioonirida tabelis (Hoolduskulu / Majandamiskulud) */
tr.sek-pais-rida > td { text-align: left !important; padding: 10px 14px !important; background: #F8F9FB;
    border-top: 1px solid var(--joon-tugev); border-bottom: 1px solid var(--joon); font-size: 13px; color: var(--navy); }
tr.sek-pais-rida .vihje { margin-left: 8px; font-size: 12px; font-weight: 400; color: var(--tekst-3); }
tr.sek-pais-rida .sek-tapp { vertical-align: -1px; margin-right: 8px; }
/* 3. €/m² võrdlus: laiemad veerud, tekst ei murdu */
.m2-vordlus { grid-template-columns: 200px 1fr 100px 170px 120px; }
.m2-vordlus .pea, .m2-vordlus .alus, .m2-vordlus .korval { white-space: nowrap; }
.m2-vordlus.m2-pais > * { align-self: end; line-height: 1.25; }
/* 4. Kliendi üldvaate koondkast: viis võrdset KPI-d ühel joonel */
.koondkast .ruut { grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: start; }
.koondkast .kpi-vaartus small { display: block; font-size: 12px; font-weight: 400; color: var(--tekst-3); margin-top: 2px; }
.koondkast .kpi-joon { margin-top: 10px; }
/* 5. Objekt ilma andmeteta: lühike tühiolek riba ja legendi asemel */
.objekt-kaart.tyhi .objekt-seis { display: none; }
.objekt-kaart .objekt-tyhi { margin-top: 16px; padding: 10px 12px; border-radius: 8px; background: var(--taust);
    font-size: 13px; color: var(--tekst-3); }
.objekt-kaart .objekt-tyhi a { font-weight: 600; }
/* 6. Negatiivne number punaseks ka KPI-kastis */
.kpi-vaartus.neg, .kpi .neg { color: #B4483C; }

.kpi-vaartus.pos { color: #2F7D58; }
.koondkast .kpi-vaartus small { white-space: nowrap; }

/* ===== Objekti töölaud: 9 kasti, järjekord ja 5 rida, vt juhend 2.33 ===== */
.toolaud-ruudustik { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: stretch; }   /* tühi kast võtab kõrval oleva kasti kõrguse (Egon 15.10) */
@media (max-width: 1200px) { .toolaud-ruudustik { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px)  { .toolaud-ruudustik { grid-template-columns: 1fr; } }
.toolaud-kast { min-height: 330px; display: flex; flex-direction: column; }
.toolaud-kast.tyhi { min-height: 96px; }
.toolaud-kast .kasti-pais { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.toolaud-kast .kasti-pais h3 { margin: 0; }
.toolaud-kast .kasti-pais .arv { font-size: 12px; color: var(--tekst-3); margin-left: 8px; font-weight: 400; }
.toolaud-kast .loend-rida { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 5px 0;
    border-bottom: 1px solid var(--joon); }
.toolaud-kast .loend-rida:last-of-type { border-bottom: 0; }
.toolaud-kast .loend-rida .nimi { font-size: 14px; font-weight: 600; color: var(--tekst);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.toolaud-kast .loend-rida .meta { font-size: 12px; color: var(--tekst-3); }
.toolaud-kast .loend-rida > div:first-child { flex-grow: 1; min-width: 0; }
.toolaud-kast .kasti-jalus { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--joon); text-align: center; }
.toolaud-kast .kasti-jalus a { font-size: 13px; font-weight: 600; text-decoration: none; }
.toolaud-kast .kasti-tyhi { font-size: 13px; color: var(--tekst-3); padding: 6px 0 2px; }

/* Eelarve: üks graafikute lüliti lehe päises (tabelite tööribadelt see eemaldada) */
.lehe-pais .graafika-luliti { margin-left: 8px; }
.tabeli-tooriba .graafika-luliti { display: none; }

/* Kellaaja valik vormis: tavaline väli, mitte brauseri oma ilme */
input[type="time"] { height: var(--h-nupp); box-sizing: border-box; padding: 0 10px; border: 1px solid var(--joon-tugev);
    border-radius: var(--r-nupp); background: #fff; font-family: inherit; font-size: 14px; color: var(--tekst); }
input[type="time"]::-webkit-calendar-picker-indicator { opacity: .45; cursor: pointer; }
input[type="time"]::-webkit-datetime-edit { padding: 0; }
input[type="time"]::-webkit-inner-spin-button { display: none; }

.kella-valik { display: flex; gap: 8px; align-items: center; }
.kella-valik select { flex: 1; min-width: 0; }
.kella-valik input[type=time][hidden] { display: none; }
.toolaud-kast .loend-rida .nimi a { color: inherit; }
.toolaud-kast .loend-rida .nimi a:hover { color: var(--aktsent); }
.toolaud-kast .loend-rida .marker { flex-shrink: 0; }
.lehe-pais .graafika-luliti { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--tekst-2); }

/* ===== Akt: töökäsul ja aktide nimekirjas, vt juhend 2.29 ===== */
/* Uhel tookasul voib olla kuni 5 akti — need on uksteise all loendis */
.akt-loend { display: flex; flex-direction: column; gap: 8px; }
.akt-lisarida { display: flex; align-items: center; gap: 10px; margin-top: 2px; }
.akt-lisarida .inline { display: inline; margin: 0; }
.akt-plokk { display: flex; align-items: center; gap: 14px; padding: 14px; border-radius: 8px; }
.akt-plokk.puudub { border: 1.5px dashed var(--joon-tugev); }
.akt-plokk.hilinenud { background: #FDF1DC; }
.akt-plokk.olemas { border: 1px solid var(--joon); background: #F8F9FB; padding: 12px 14px; }
.akt-plokk .sisu { flex-grow: 1; min-width: 0; }
.akt-plokk .sisu b { display: block; font-size: 14px; color: var(--tekst); }
.akt-plokk .sisu small { display: block; font-size: 12px; color: var(--tekst-3); margin-top: 2px; }
.akt-fail { width: 36px; height: 36px; border-radius: 8px; background: #fff; border: 1px solid var(--joon);
    display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--aktsent); }
.akt-silt { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: 999px;
    font-size: 12px; font-weight: 600; background: #F1F3F6; color: var(--tekst-3); }
.akt-silt.hilinenud { background: #FDF1DC; color: #95650F; }

.akt-plokk .btn { flex-shrink: 0; }
.akt-plokk label.btn { cursor: pointer; margin: 0; text-transform: none; letter-spacing: 0; font-weight: 600; }
.akt-plokk form.inline { margin: 0; }
.akt-silt { white-space: nowrap; }
.toolaud-kast .akt-silt { flex-shrink: 0; }
/* Töölaua KPI-kasti alarida (juhend 2.36) */
.kpi-all { font-size: 12px; color: var(--tekst-3); margin-top: 6px; }
.toolaua-tabel td.right, .toolaua-tabel th.right { text-align: right; }
.hoiatusriba .btn-punane { background: var(--punane); color: #fff; border-color: var(--punane); }
/* Objektikaart töölaual: täislaiuses, mitte ruudustikus */
.toolaua-objektid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--vahe); margin-bottom: var(--vahe); }
.objekt-pais-parem { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.toolaua-objektid .objekt-seis { margin-top: 12px; padding-top: 12px; }

/* ===== Üldvaate muudatused 23.09, vt juhend 2.28a ===== */
.objektid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
@media (max-width: 900px) { .objektid { grid-template-columns: 1fr !important; } }
/* €/m² võrdlus: Objekt · riba · Pind · Hooldus · Majandamine */
.m2-vordlus { grid-template-columns: 190px 1fr 100px 120px 140px; }
.m2-vordlus .pind { text-align: right; font-size: 13px; color: var(--tekst-2); white-space: nowrap; }

/* ===== Kliendi töölaud 23.09: rõhutatud kast, read linkidena, ilma hoiatusribata ===== */
.toolaud-kast.rohutatud { border-top: 2px solid #B4483C; }
.toolaud-kast.rohutatud .kasti-pais .arv { display: inline-flex; align-items: center; justify-content: center;
    min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px; background: #FBE7E4; color: #B4483C;
    font-size: 12px; font-weight: 700; margin-left: 0; }
/* kogu rida on link */
a.loend-rida { text-decoration: none; color: inherit; border-radius: 6px; }
a.loend-rida:hover { background: var(--taust); }
a.loend-rida:hover .nimi { color: var(--aktsent); }
a.loend-rida:focus-visible { outline: 2px solid var(--aktsent); outline-offset: 2px; }
/* objekti kaardi päis ilma nuputa */
.objekt-pais .pais-info { font-size: 13px; color: var(--tekst-3); text-align: right; white-space: nowrap; }

/* ===== Eelarve 23.09: tabelite päised, kokku-rida ja alumine kokkuvõte ===== */
/* sektsioonipäised ja sektsiooni kokku-read tabelite sees kaovad */
tr.sek-pais-rida { display: none !important; }
h2 .pais-vihje { margin-left: 8px; font-family: inherit; font-size: 13px; font-weight: 400; color: var(--tekst-3); }
tr.kokku-rida > * { border-top: 1px solid var(--joon-tugev); background: #fff; font-weight: 700; color: var(--navy); }
tr.kokku-rida .lisa { font-size: 13px; font-weight: 400; color: var(--tekst-3); margin-left: 10px; }
/* alumine kokkuvõte */
.m2-kokkuvote { display: flex; gap: 32px; align-items: stretch; }
.m2-kokkuvote .suur { width: 250px; flex-shrink: 0; padding-right: 32px; border-right: 1px solid var(--joon); }
.m2-kokkuvote .suur .arv { font-family: 'Space Grotesk', sans-serif; font-size: 34px; font-weight: 600; color: var(--navy); line-height: 1.1; }
.m2-kokkuvote .suur .all { font-size: 13px; color: var(--tekst-3); margin-top: 4px; }
.m2-kokkuvote .jaotus { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; font-size: 13px; color: var(--tekst-2); }
.m2-kokkuvote .jaotus > div { display: flex; align-items: center; gap: 8px; }
.m2-kokkuvote .jaotus b { margin-left: auto; color: var(--navy); }
.m2-kokkuvote .jaotusriba { margin-top: 4px; height: 8px; }
.m2-kokkuvote table { flex-grow: 1; border-collapse: collapse; }
.m2-kokkuvote th { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--tekst-3);
    padding: 0 0 6px; border-bottom: 1px solid var(--joon); }
.m2-kokkuvote td { padding: 12px 0; border-bottom: 1px solid var(--joon); font-size: 14px; font-variant-numeric: tabular-nums; }
.m2-kokkuvote td.m2 { font-size: 15px; font-weight: 600; color: var(--navy); }
.m2-kokkuvote tr.kokku-rida td { border-bottom: 0; border-top: 1px solid var(--joon-tugev); font-weight: 700; color: var(--navy); }
.m2-kokkuvote .vihje { font-size: 12px; font-weight: 400; color: var(--tekst-3); margin-left: 8px; }
.m2-kokkuvote .muted { color: var(--tekst-4); }
@media (max-width: 1000px) { .m2-kokkuvote { flex-direction: column; gap: 20px; }
  .m2-kokkuvote .suur { width: auto; padding-right: 0; border-right: 0; border-bottom: 1px solid var(--joon); padding-bottom: 16px; } }

/* ===== Eelarve tabel 23.09: joon numbri alla, kitsam nimeveerg (vt juhend 2.37a) ===== */
/* 1. Joon ei tõsta numbrit üles — number jääb teiste numbritega samale joonele,
      joon asetseb absoluutselt lahtri all servas. */
/* td.raha-veerg polster: vt assets/eelarve-tabel.css */
td .summa-joon { display: block; }
td .summa-joon > span { display: block; }           /* number tavalises vooluses */
/* joone asukoht ja laius: vt assets/eelarve-tabel.css jaotis 9 (juhend 5.5) */
/* Kokku-real joont pole, seega ei ole vaja ka selle all olevat ruumi.
   Paisest see reegel EEMALDATI: sealne 4px alumine polster nihutas
   rahaveergude paisetekste 2px allapoole ja need ei olnud enam OTSI ja
   KANDED tekstidega uhel joonel (juhend 5.1: paise polster on uhes kohas,
   assets/eelarve-tabel.css jaotis 3). */
tr.kokku-rida td.raha-veerg { padding-bottom: 4px !important; }


.m2-kokkuvote .jaotusriba > span { background: var(--aktsent); }
.m2-kokkuvote .jaotusriba { background: var(--hall-t); border-radius: 4px; }
.m2-kokkuvote .num { text-align: right; white-space: nowrap; }

/* ===== Kulu liigi valik vormis (hoolduskulu / majanduskulu), vt juhend 2.32a ===== */
.kulu-liik { display: flex; border-radius: var(--r-nupp); overflow: hidden; }
.kulu-liik label { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    height: var(--h-nupp); margin: 0; border: 1px solid var(--joon-tugev); background: #fff; color: var(--tekst-2);
    font-size: 14px; font-weight: 400; text-transform: none; letter-spacing: 0; cursor: pointer; }
.kulu-liik label + label { margin-left: -1px; }
.kulu-liik input { position: absolute; opacity: 0; width: 0; height: 0; }
.kulu-liik label:has(input:checked) { background: var(--aktsent-hele); border-color: var(--aktsent-hele);
    color: var(--aktsent); font-weight: 600; z-index: 1; }
.kulu-liik label:has(input:focus-visible) { outline: 2px solid var(--aktsent); outline-offset: 2px; z-index: 2; }
.kulu-liik .tapp { width: 10px; height: 10px; border-radius: 3px; display: inline-block; background: var(--sek-arvestuses); }
.kulu-liik .tapp.majandus { background: var(--sek-majandamine); }
/* lukus infokast hoolduskava vormis */
.liik-lukus { height: var(--h-nupp); box-sizing: border-box; display: flex; align-items: center; gap: 9px;
    padding: 0 10px; border: 1px solid var(--joon); border-radius: var(--r-nupp); background: #F8F9FB;
    font-size: 14px; color: var(--tekst); }
.liik-lukus .lukk { margin-left: auto; display: inline-flex; color: var(--tekst-3); }

.kulu-liik-tapp { display: inline-block; width: 9px; height: 9px; border-radius: 3px; margin-right: 7px; background: var(--sek-arvestuses); vertical-align: 1px; }
.kulu-liik-tapp.majandus { background: var(--sek-majandamine); }
.liik-lukus .tapp { width: 10px; height: 10px; border-radius: 3px; display: inline-block; background: var(--sek-arvestuses); }
/* ==================================================================
   ÜKS KERIMINE LEHE KOHTA (23.09)
   Tabelikastid ei keri enam eraldi: sisu kerib lehega, päis jääb kleepuvalt
   ekraani ülaserva. Nii ei teki lehe ja kasti kerimisribasid korraga.
   ================================================================== */
.card:has(> table), .card:has(> form > table), .card:has(> .tabel-keri),
.tabeli-sisu > .tabeli-keri, .andmetabel-kast {
    max-height: none !important;
    overflow-y: visible !important;
}
table tr:first-child th { top: 0; }
@media (min-width: 768px) {
    /* Kleepuv päis arvestab telefonivaate ülaribaga; arvutis on see lehe ülaservas */
    table tr:first-child th { top: 0; }
}
.kulurea-nimi-kast .kulu-liik-tapp { flex-shrink: 0; margin-right: 0; vertical-align: 0; }
/* Akt kinnitamise kasti sees (23.09) */
#kinnita h3#akt { margin: var(--vahe) 0 10px; padding-top: var(--vahe); border-top: 1px solid var(--joon); }
#kinnita .akt-plokk { margin-bottom: 0; }

/* ===== Hoolduskava muudatused ja kliendi kinnitus, vt juhend 2.38 ===== */
.muudatuste-logi .rida { display: grid; grid-template-columns: 110px 150px 1fr 190px; gap: 14px;
    align-items: flex-start; padding: 11px 0; border-bottom: 1px solid var(--joon); }
.muudatuste-logi .rida:last-child { border-bottom: 0; }
.muudatuste-logi .mis { font-size: 14px; color: var(--tekst); }
.muudatuste-logi .pohjus { font-size: 12px; color: var(--tekst-3); margin-top: 2px; }
.muudatuste-logi .seis { text-align: right; }
.muudatuste-logi .noole-vana { color: var(--tekst-3); }
/* kinnitust ootav muudatus (kliendi töölaual ja hoolduskava peal) */
.kinnitus-kast { border: 1px solid #F0DFC0; background: #FDF1DC; border-radius: 10px; padding: 14px; }
.kinnitus-kast h4 { margin: 0; font-size: 14px; font-weight: 600; color: var(--navy); }
.kinnitus-kast p { margin: 6px 0 0; font-size: 13px; line-height: 1.5; color: var(--tekst-2); }
.kinnitus-kast .esitaja { font-size: 12px; color: var(--tekst-3); margin-top: 8px; }
.kinnitus-kast .nupud { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
/* valikud modaalis */
.valik-grupp label { display: flex; align-items: flex-start; gap: 10px; padding: 9px 0; margin: 0;
    font-size: 14px; font-weight: 400; color: var(--tekst); text-transform: none; letter-spacing: 0; cursor: pointer; }
.valik-grupp label small { display: block; font-size: 12px; color: var(--tekst-3); margin-top: 2px; }
.valik-grupp input { margin: 2px 0 0; accent-color: var(--aktsent); }
/* „Lükka edasi“ tekstilink planeerimise kastis (2.38) */
.salvesta-rida { display: flex; align-items: center; gap: 14px; }
.lykka-link { font-size: 13px; color: var(--aktsent); }
#l-uue-kava-valjad[hidden] { display: none; }
/* Hoolduskava nuppude rida: kõik nupud ühel joonel, „Muuda hoolduskava“ kustutamise kõrval */
.hk-nupud.kirje-jalus-ruut { align-items: end; }
.hk-nupud.kirje-jalus-ruut > .btn { align-self: end; margin: 0; }
.hk-nupud.kirje-jalus-ruut > [data-modaal="kava-muudatus"] { grid-column: 2; }
/* Hoolduskava nuppude rida: kõik ühel real, ka siis kui mõnel on kindel veerg */
.hk-nupud.kirje-jalus-ruut > * { grid-row: 1; }
/* ===== Eelarve kululiigid (sektsioonid tabelis), vt juhend 2.39 ===== */
tr.liik-pais > * { background: #F8F9FB; border-top: 1px solid var(--joon-tugev); border-bottom: 1px solid var(--joon);
    font-weight: 700; color: var(--navy); padding-top: 11px; padding-bottom: 11px; }
/* NB! ÄRA pane <td>-le display:flex — siis ei ole ta enam tabeli lahter (vt juhend 4e) */
tr.liik-pais > td:first-child,
tr.liik-pais > td.liik-nimi { display: table-cell !important; white-space: nowrap; }
tr.liik-pais > td:first-child > *,
tr.liik-pais > td.liik-nimi > * { vertical-align: middle; }
tr.liik-pais .liik-tapp { margin: 0 4px; }
tr.liik-pais .arv { font-size: 12px; font-weight: 400; color: var(--tekst-3); white-space: nowrap; }
tr.liik-pais .nool { transition: transform .15s; color: var(--tekst-3); }
tr.liik-pais.kinni .nool { transform: rotate(-90deg); }
tr.liik-pais .liik-tapp { width: 9px; height: 9px; border-radius: 3px; display: inline-block; background: var(--sek-majandamine); }
tr.liik-pais .liik-tapp.hooldus { background: var(--sek-arvestuses); }
tr.liik-rida td:first-child { padding-left: 26px; }
/* lohistamine */
.pide { color: var(--tekst-4); font-size: 13px; letter-spacing: 1px; cursor: grab; user-select: none; }
.pide:active { cursor: grabbing; }
tr.lohistan > * { background: #F4F7FB; }
tr.sihtkoht > * { outline: 1px dashed var(--aktsent); outline-offset: -1px; }
/* kululiikide paneel */
.liigid-paneel .rida { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto auto;
    align-items: center; column-gap: 10px; row-gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--joon); }
.liigid-paneel .rida:last-of-type { border-bottom: 0; }
.liigid-paneel .rida .nimi { flex-grow: 1; font-size: 14px; }
.liigid-paneel .rida .arv { font-size: 12px; color: var(--tekst-3); white-space: nowrap; justify-self: end; }
.liigid-paneel .rida .tyhi { font-size: 12px; color: var(--tekst-4); white-space: nowrap; justify-self: end; }
.liigid-paneel .rida .pide { color: var(--tekst-4); cursor: grab; line-height: 1; user-select: none; }
/* Kululiikide aknas on read div-id, mitte tr — pide peab alati näha olema (Egon 16.10) */
.liigid-paneel .rida .pide { opacity: 1 !important; font-size: 15px; color: var(--tekst-3); }
.liigid-paneel .rida .pide:hover { color: var(--aktsent); }
/* nimevaljal peab saama teksti hiirega maalida - rida ise ei tohi olla lohistatav */
.liigid-paneel .liigi-nimi-vorm input { user-select: text; }
.liigid-paneel .jalus { display: flex; align-items: center; justify-content: space-between; gap: 12px;
    flex-wrap: wrap;
    margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--joon); font-size: 12px; color: var(--tekst-3); }


/* =========================================================================
   23.09 — lohistuse kaepide (juhend 4c V5).
   Eelarve tabeli sektsioonirida ja veerulaiused kolisid siit faili
   assets/eelarve-tabel.css (juhend 5.1) - uks omadus, uks koht.
   ========================================================================= */

tr.liik-pais > td:first-child { cursor: pointer; }

/* V5 — üks lohistuse käepide, nähtav ainult rea kohal hõljudes */
.pide,
.lohistuse-kaepide {
    display: inline-block;
    color: var(--tekst-4);
    font-size: 13px;
    letter-spacing: 1px;
    cursor: grab;
    user-select: none;
    opacity: 0;
    transition: opacity .12s;
}
tr:hover > * > .pide,
tr:hover > * > .lohistuse-kaepide,
tr:hover .rea-toimingud .lohistuse-kaepide,
.pide:focus-visible,
.lohistuse-kaepide:focus-visible { opacity: 1; }
.pide:active,
.lohistuse-kaepide:active { cursor: grabbing; }


/* V4 — prognoosi vahe: punane üle eelarve, roheline alla */
.prognoos-vahe { display: block; font-size: 12px; font-weight: 500; margin-top: 2px; }
.prognoos-vahe.neg { color: #B4483C; }
.prognoos-vahe.pos { color: #2F7D58; }

/* =========================================================================
   2.40 — üks eelarve tabel, kululiigi muutmine avatud realt, animatsioon
   ========================================================================= */

/* --- hoolduskavast tuleneva rea silt --- */
.rea-silt {
    display: inline-block; margin-left: 8px; padding: 1px 6px;
    border: 1px solid var(--joon); border-radius: 4px;
    font-size: 10px; line-height: 15px; letter-spacing: .04em; text-transform: uppercase;
    color: var(--tekst-3); background: var(--taust); vertical-align: 2px;
}

/* --- avatud rea päisriba koos kululiigi rippmenüüga --- */
.rida-avatud-kast .rea-pais {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding-bottom: 10px; margin-bottom: 12px; border-bottom: 1px solid var(--joon);
}
.rida-avatud-kast .rea-pais h3 { margin: 0; font-size: 15px; }
.rida-avatud-kast .rea-pais .liik-plokk {
    display: flex; align-items: center; gap: 8px; white-space: nowrap;
}
.rida-avatud-kast .rea-pais .liik-plokk > label {
    font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--tekst-3);
}
select.liik-vali {
    height: var(--h-nupp-v); min-width: 180px; padding: 0 28px 0 10px;
    border: 1px solid var(--joon); border-radius: var(--r-nupp);
    background: #fff; font-size: 13px; color: var(--tekst); cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237386A6' stroke-width='2.5' stroke-linecap='round'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat; background-position: right 8px center;
    transition: border-color .12s, box-shadow .12s;
}
select.liik-vali:hover { border-color: var(--joon-tugev); }
select.liik-vali:focus { outline: 0; border-color: var(--aktsent); box-shadow: 0 0 0 3px var(--aktsent-hele); }
select.liik-vali:disabled { background-color: var(--taust); color: var(--tekst-3); cursor: default; }
.liik-vali-viga { margin-top: 6px; font-size: 12px; color: #B4483C; }

/* --- animatsioon: rida lahkub --- */
tr.rida-lahkub > * {
    opacity: 0; transform: translateX(-6px);
    transition: opacity .26s ease-out, transform .26s ease-out;
}
tr.rida-lahkub.kokku > * {
    padding-top: 0 !important; padding-bottom: 0 !important;
    line-height: 0 !important; border-bottom-width: 0 !important;
    transition: opacity .26s ease-out, transform .26s ease-out,
                padding .2s ease-out .06s, line-height .2s ease-out .06s;
}

/* --- animatsioon: rida saabub uude sektsiooni --- */
@keyframes ridaSaabub {
      0% { opacity: 0; transform: translateY(-4px); }
    100% { opacity: 1; transform: translateY(0); }
}
@keyframes ridaEsile {
      0% { background-color: var(--aktsent-hele); box-shadow: inset 2px 0 0 var(--aktsent); }
     45% { background-color: var(--aktsent-hele); box-shadow: inset 2px 0 0 var(--aktsent); }
    100% { background-color: transparent;        box-shadow: inset 2px 0 0 transparent; }
}
tr.rida-saabub > * {
    animation: ridaSaabub .18s ease-out both, ridaEsile 1.4s ease-out .18s both;
}
tr.rida-saabub.sektsioon-uus > * { animation-delay: 0s, .18s; }

/* --- tagasivõtu teade --- */
.liigutuse-teade {
    position: fixed; left: 20px; bottom: 20px; z-index: 60;
    display: flex; align-items: center; gap: 14px;
    max-width: 360px; padding: 11px 16px;
    background: var(--navy); color: #fff; border-radius: var(--r-kast);
    font-size: 13px; box-shadow: 0 6px 20px rgba(27,42,65,.28);
    animation: ridaSaabub .18s ease-out both;
}
.liigutuse-teade b { font-weight: 600; }
.liigutuse-teade button {
    border: 0; background: none; padding: 0; cursor: pointer;
    color: #9AABC4; font-size: 13px; font-weight: 600; text-decoration: underline;
    white-space: nowrap;
}
.liigutuse-teade button:hover { color: #fff; }

/* --- vähendatud liikumine --- */
@media (prefers-reduced-motion: reduce) {
    tr.rida-lahkub > * { transform: none; transition: opacity .15s linear; }
    tr.rida-lahkub.kokku > * { transition: opacity .15s linear; }
    tr.rida-saabub > * { animation: ridaEsile .6s linear both; }
    .liigutuse-teade { animation: none; }
}


/* 2.43.2 — müra maha: korduv alapealkiri ja „+“ nupp nähtavale alles hõljudes */
.eelarve-tabel .kaetud-veerg .lisa-kanne,
.hoolduskava-tabel .kaetud-veerg .lisa-kanne { opacity: 0; transition: opacity .12s; }
tr:hover .kaetud-veerg .lisa-kanne,
.kaetud-veerg .lisa-kanne:focus-visible { opacity: 1; }
@media (hover: none) { .eelarve-tabel .kaetud-veerg .lisa-kanne { opacity: 1; } }

/* 2.43.2: „+“ kanded-veerus ilmub alles rea kohal (puutetundlikul ekraanil jääb nähtavaks) */
.kanne-lisa { opacity: 0; transition: opacity .12s; }
tr:hover .kanne-lisa, .kanne-lisa:focus-visible { opacity: 1; }
@media (pointer: coarse) { .kanne-lisa { opacity: 1; } }
/* Oranz "+" = kanne puudu (sama rida, mis on Toolaual) - alati nahtav */
.kanne-lisa.puudu { opacity: 1; }
/* Hoolduskavast tulev rida ühendatud eelarve tabelis (juhend 2.43.1) */
.kava-silt { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 10px; background: var(--pind-2);
    border: 1px solid var(--joon); font-size: 10px; font-weight: 600; letter-spacing: .04em; color: var(--tekst-3); vertical-align: 1px; }
/* Kululiikide haldus paneelis (juhend 2.44) */
.liigid-paneel .rida .liigi-nupud { display: inline-flex; align-items: center; gap: 6px; justify-self: end; opacity: 1; }
.liigid-paneel .liigi-salvesta { visibility: hidden; }
.liigid-paneel .rida.muudetud .liigi-salvesta, .liigid-paneel .rida.tehtud .liigi-salvesta { visibility: visible; }
.liigid-paneel .rida.tehtud .liigi-salvesta { background: var(--roheline-t); color: var(--roheline); }
.liigi-nimi-sisend { flex-grow: 1; height: 30px; font-size: 14px; padding: 0 8px; border: 1px solid var(--aktsent); border-radius: 6px; }
/* Kululiigi valik avatud rea sees */
/* Kululiigi valik avatud real: "Lisa kanne" nupu korval, sama korge, ilma kastita.
   NB! .card select on tugevama kaaluga (0,2,1), seega tuleb siin sama kaal anda. */
.rida-avatud-pais .rea-liigi-valik { display: flex; align-items: center; gap: 6px; margin: 0; flex-wrap: nowrap; }
.rida-avatud-pais .rea-liigi-valik label { font-size: 11px; font-weight: 400; text-transform: none; letter-spacing: 0;
    color: var(--tekst-3); line-height: normal; cursor: pointer; white-space: nowrap; }
.card .rea-liigi-valik select, .rida-avatud-kast .rea-liigi-valik select {
    appearance: none; -webkit-appearance: none; -moz-appearance: none;
    height: var(--h-nupp-v); line-height: normal;
    width: auto; min-width: 0; max-width: 220px; flex: 0 0 auto; field-sizing: content;
    margin: 0; padding: 0 15px 0 4px;
    /* aaris box-shadow'na: tegelik aaris nihutaks sisu 1px vorra sildi tekstist korgemale */
    border: 0; border-radius: var(--r-nupp); box-shadow: none; background-color: transparent;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236B7684' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 3px center; background-size: 8px 5px;
    font-family: inherit; font-size: 11px; color: var(--tekst-2); cursor: pointer; text-overflow: ellipsis;
}
.card .rea-liigi-valik select:hover, .card .rea-liigi-valik select:focus,
.rida-avatud-kast .rea-liigi-valik select:hover, .rida-avatud-kast .rea-liigi-valik select:focus {
    background-color: var(--pind-2); box-shadow: inset 0 0 0 1px var(--joon); color: var(--tekst); outline: none; }
.rea-liigi-valik .vihje { display: none; }
/* Kululiikide haldus vormidena (juhend 2.44) */
.liigid-paneel .liigi-nimi-vorm { margin: 0; min-width: 0; }
.liigid-paneel .liigi-nimi-vorm input { width: 100%; height: 32px; font-size: 14px; padding: 0 8px;
    border: 1px solid transparent; border-radius: var(--r-nupp); background: transparent; }
.liigid-paneel .rida:hover .liigi-nimi-vorm input, .liigid-paneel .liigi-nimi-vorm input:focus {
    border-color: var(--joon-tugev); background: var(--pind); }
.liigid-paneel .rida.muudetud .liigi-nimi-vorm input { border-color: var(--aktsent); background: var(--pind); }
/* kustutamise kinnitus avaneb rea alla omaette ribana, et valikud ei aja rida sassi */
.liigid-paneel .liigi-kustuta-vorm { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center;
    gap: 8px; margin: 0; padding: 8px 10px; border-radius: var(--r-nupp); background: var(--punane-t); font-size: 12px; }
.liigid-paneel .liigi-kustuta-vorm[hidden] { display: none; }
.liigid-paneel .liigi-kustuta-vorm .kysimus { color: var(--punane); }
.liigid-paneel .liigi-kustuta-vorm select { height: 28px; font-size: 12px; max-width: 180px; }
.liigid-paneel .liigi-kustuta-vorm .kustuta-nupud { display: inline-flex; gap: 6px; margin-left: auto; }
.liigid-paneel .liigi-kustuta-vorm .btn { min-width: 74px; }
/* Lisamisrida saab terve rea endale ja vihje laheb tema alla. Varem olid nad
   korvuti ning "white-space: nowrap" vihje sot kogu laiuse ara - sisestuskast
   kahanes paari millimeetri peale (Egoni marge 25.09). */
.liigid-paneel .liigi-lisa-vorm { display: flex; gap: 8px; align-items: center; margin: 0;
    flex: 1 1 100%; min-width: 0; }
.liigid-paneel .liigi-lisa-vorm input { flex: 1 1 auto; min-width: 0; width: auto;
    height: 34px; font-size: 14px; padding: 0 10px; border: 1px solid var(--joon-tugev); border-radius: 6px; }
.liigid-paneel .liigi-lisa-vorm .btn { flex: 0 0 auto; white-space: nowrap; }
.liigid-paneel .jalus .vihje { margin: 0; font-size: 11px; color: var(--tekst-3);
    white-space: normal; flex: 1 1 100%; }


/* =========================================================================
   23.09 — eelarve tabeli joondus + menüü objektivalik
   ========================================================================= */
/* 1. Kõik andmerea lahtrid algavad samalt joonelt: nimi, kanded ja summad
      on ühel real; kulu-riba jääb lahtri alla (absoluutne, vt ülal). */
.eelarve-tabel > tbody > tr.hover-rida > td,
.hoolduskava-tabel > tbody > tr.hover-rida > td { vertical-align: top; }

/* 2. Kanded-veerg: number alati parema serva joonel (päise „KANDED“ all).
      „+“ nupp ei võta enam laiust — asub lahtri vasakus servas. */
.eelarve-tabel td.kaetud-veerg, .hoolduskava-tabel td.kaetud-veerg { position: relative; }
.kanded-lahter { display: inline; gap: 0; }
.kaetud-veerg .kanne-lisa { position: absolute; left: 8px; top: 3px;
    width: 20px; height: 20px; margin: 0; }

/* 3. Menüü objektivalik ei tohi kokku pressida (flex-veerus kahanes 21px peale ja lõikas valiku pooleks) */
.sidebar-hoone-kontekst { flex-shrink: 0; }

/* =========================================================================
   Toolaud ja eelarve laiemaks (1500px sisulaius)
   Pohjus: eelarve tabeli loomulik laius on ~1010px + polstrid, mis 1480px
   konteineris jattis tabelikastile liiga vahe ruumi ja tekitas alla
   horisontaalse keriba. Teised lehed jaavad endise laiusega.
   ========================================================================= */
.container:has(> .leht.toolaud),
.container:has(> .eelarve-sisu) { max-width: 1556px; }   /* 1500 + 2 x 28px polster */
.leht.toolaud { max-width: 1500px; }
.eelarve-sisu { max-width: 1500px; }

/* ===== Hoone vorm ja kuluarvestuse näitajad (kujundusjuhend 5.6) =========
   Üks ruudustik kogu vormile. Näitajate read istuvad 1. ja 2. veerus, samadel
   kui Nimi ja Lühend — nii lõpeb koguse kast täpselt Lühendi parema servaga.
   Näitaja NIMI on kliendi ühine, KOGUS on hoone oma. m² on esimene rida ja
   tuleb hoone pinnast, nimi on lukus. */
/* Kaks eraldi kasti korvuti (Egon 07.10): vasakul hoone andmed, paremal
   kuluarvestuse naitajad. Kummalgi oma Salvesta nupp ja oma tegevus.
   Molemas kastis sama ruudustik - lai valja + kitsas valja - nii et kastide
   servad on uhel joonel; kastid venivad uhepikkuseks ja nupurida istub
   molema pohjas (margin-top: auto), nagu mujalgi korvuti kastidel. */
.hoone-kaardid { display: grid; gap: var(--vahe); align-items: stretch; margin-bottom: var(--vahe);
    grid-template-columns: minmax(300px, 1fr) minmax(300px, 1fr); }
.hoone-kaardid > .card { display: flex; flex-direction: column; min-width: 0; margin: 0; }
.hv-pais { font-size: 11px; font-weight: 600; text-transform: uppercase;
    letter-spacing: .05em; color: var(--tekst-3); margin-bottom: 14px; }
.hv-vorm { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; }
/* align-content: space-between - kahes kastis on erinev arv ridu (vasakul
   kolm, paremal naitajate jagu). Nii jaab molema kasti ESIMENE rida ulemise
   serva ja VIIMANE rida alumise serva kulge - ehk "Hoolduskava muudatused" ja
   viimane naitaja lopevad tapselt uhel joonel (Egon 07.10). */
.hv-valjad { display: grid; align-items: end; align-content: space-between; gap: 14px 16px;
    grid-template-columns: minmax(170px, 1fr) 110px; flex: 1 1 auto; }
.hv-valjad > .hv-lai { grid-column: 1 / -1; }
.hv-valjad > .hv-kitsas { grid-column: 2; }
.hv-valjad > .naitaja-nimi  { grid-column: 1; }
.hv-valjad > .naitaja-kogus { grid-column: 2; }
.hv-jalus { display: flex; align-items: center; gap: 14px; margin-top: auto;
    padding-top: 14px; border-top: 1px solid var(--joon); }
.hv-jalus .vihje { margin: 0; min-width: 0; }
.hv-jalus .btn { min-width: 140px; margin-left: auto; flex-shrink: 0; }
.naitaja-lukus { background: var(--pind-2); color: var(--tekst-2); cursor: default; }
@media (max-width: 1000px) {
    .hoone-kaardid { grid-template-columns: 1fr; }
    .hv-valjad { grid-template-columns: minmax(150px, 1fr) 100px; }
}

/* ===== Kliendi lukustus (Egoni tellimus 25.09) ===========================
   Lukk piirab valikut, mitte sisu: lukustatud kohas saab hoone valida ainult
   kliendi nimekirjast. Eesmärk on, et raportis tähendaks sama nimi kõigis
   hoonetes sama asja. */
.lukustus-loend { display: grid; gap: 14px 24px; align-items: start;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
/* Linnuke joondub sildi ESIMESE reaga, mitte kahe rea keskele - muidu ripub
   ta sildi ja selgituse vahel (Egoni marge 25.09). */
.lukustus-rida { display: flex; align-items: flex-start; gap: 10px; margin: 0;
    font-size: 14px; line-height: 1.35; color: var(--tekst); cursor: pointer; }
.lukustus-rida input { width: 16px; height: 16px; accent-color: var(--aktsent); flex-shrink: 0;
    margin-top: 2px; }
.lukustus-rida .detail { display: block; margin-top: 2px; line-height: 1.3; }

/* Lukustatud kulukonto: valik on näha, aga ei ole muudetav */
.kulu-liik.lukus label { cursor: not-allowed; opacity: .75; background: var(--pind-2); }
.kulu-liik.lukus input:checked + .tapp { opacity: 1; }

/* =========================================================================
   KULULIIKIDE LEHT (kululiigid.php) - uks jagatud veerustik.
   Nimi venib, kolm paremat veergu on fikseeritud, nii et nimekastide,
   ridade arvu, Salvesta nuppude ja kustutusristide servad on kohakuti.
   Ka alumine lisamisrida kasutab sama veerustikku (Egoni marge 25.09).
   ========================================================================= */
.kululiigid-leht { --k-arv: 118px; --k-salv: 104px; --k-rist: 30px; }
.kululiigid-leht .rida,
.kululiigid-leht .jalus .liigi-lisa-vorm {
    display: grid;
    grid-template-columns: minmax(0, 1fr) var(--k-arv) var(--k-salv) var(--k-rist);
    align-items: center; column-gap: 12px;
}
.kululiigid-leht .rida { row-gap: 8px; padding: 9px 0; border-bottom: 1px solid var(--joon); }
.kululiigid-leht .rida:last-of-type { border-bottom: 0; }
.kululiigid-leht .rida .arv,
.kululiigid-leht .rida .tyhi { justify-self: end; text-align: right; }
.kululiigid-leht .rida > .btn { width: 100%; }
.kululiigid-leht .kustuta-koht { display: flex; align-items: center; justify-content: flex-end; min-height: 26px; }

/* Lisamisvorm on nyyd loetelu ESIMENE rida (esimese veeru ules), mitte kasti
   jalus. Ta kasutab tapselt sama veerustikku, nii et input on nimeveerus ja
   nupp Salvesta-nupu kohal. */
.kululiigid-leht .liigi-lisa-vorm { margin: 0; }
.kululiigid-leht .liigi-lisa-vorm input[type=text] { grid-column: 1 / 2; width: 100%; min-width: 0;
    height: 34px; font-size: 14px; padding: 0 10px; }
.kululiigid-leht .liigi-lisa-vorm > .btn { grid-column: 3 / -1; width: 100%; white-space: nowrap; }
.kululiigid-leht .liigi-lisa-vorm > .vihje { grid-column: 1 / 2; margin: 0; white-space: normal; }

/* Loetelu kahes veerus (Egoni marge 25.09). Reas on oma sisemine vorrestik,
   nii et veerg ei tohi rida pooleks murda. */
.kululiigid-leht .liigid-veerud { column-count: 2; column-gap: 40px; }
.kululiigid-leht .liigid-veerud > .rida { break-inside: avoid; -webkit-column-break-inside: avoid; }
.kululiigid-leht .liigid-veerud > .rida:last-of-type { border-bottom: 1px solid var(--joon); }
@media (max-width: 1100px) { .kululiigid-leht .liigid-veerud { column-count: 1; } }
@media (max-width: 700px) {
    .kululiigid-leht .rida { grid-template-columns: minmax(0, 1fr) auto; }
    .kululiigid-leht .rida > .btn,
    .kululiigid-leht .liigi-lisa-vorm > .btn { grid-column: auto; width: auto; }
    .kululiigid-leht .kustuta-koht { grid-column: auto; }
}

/* =========================================================================
   PAISE KORGUS - esimese kasti ulaserv on igal lehel tapselt samal joonel
   (Egoni tellimus 25.09). Murdjoon ja pealkirjariba on fikseeritud korgusega,
   olenemata sellest, kas lehel on nuppe, alapealkiri voi mitte midagi.
   ========================================================================= */
:root { --pais-korgus: 44px; --pais-rida: 27px; --pais-alarida: 17px; }

.breadcrumb { height: var(--pais-alarida); line-height: var(--pais-alarida);
    margin: 0 0 7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.lehe-pais,
.tk-pealkiri,
.leht > h1 {
    min-height: var(--pais-korgus);
    margin: 0 0 var(--vahe);
    display: flex; align-items: center; flex-wrap: wrap; gap: var(--vahe);
}
.lehe-pais h1, .tk-pealkiri h1 { line-height: var(--pais-rida); margin: 0; }
.leht > h1 { line-height: var(--pais-rida); }

/* Pealkiri + alapealkiri mahuvad KOKKU samasse ribasse (27 + 17 = 44). */
.lehe-pais .lehe-pais-tekst { display: block; }
.lehe-pais .lehe-pais-tekst h1 { line-height: var(--pais-rida); }
.lehe-pais .lehe-pais-tekst p { margin: 0; font-size: 13px; line-height: var(--pais-alarida); }
.leht > h1:has(+ p.muted) { min-height: 0; height: var(--pais-rida); margin: 0; }
.leht > h1 + p.muted { height: var(--pais-alarida); line-height: var(--pais-alarida);
    font-size: 13px; margin: 0 0 var(--vahe); }

/* Sama reegel ka siis, kui leht ei kasuta .leht klassi, vaid oma wrapperit
   (nt .tegevused-sisu, .raportid-sisu). Siduv on ELEMENT - pealkiri kohe
   murdjoone jarel - mitte see, mis klass wrapperil juhtub olema. Nii jaab
   korgus paika ka uutel lehtedel (Egoni nouue 25.09). */
.breadcrumb + h1 {
    min-height: var(--pais-korgus);
    margin: 0 0 var(--vahe);
    display: flex; align-items: center; flex-wrap: wrap; gap: var(--vahe);
    line-height: var(--pais-rida);
}
.breadcrumb + h1:has(+ p.muted) { min-height: 0; height: var(--pais-rida); margin: 0; display: block; }
.breadcrumb + h1 + p.muted { height: var(--pais-alarida); line-height: var(--pais-alarida);
    font-size: 13px; margin: 0 0 var(--vahe); }
@media (max-width: 767px) {
    .breadcrumb + h1 { min-height: 0; }
    .breadcrumb + h1:has(+ p.muted), .breadcrumb + h1 + p.muted { height: auto; }
}

/* Lehel pole pealkirjariba (nt Hoone, Susteem) - hoiame sama ruumi vabaks. */
/* +7px, sest murdjoone alumine aare kaob siin margin-collapse'i sisse. */
/* .hoone-kaardid on kahe kaardi umbris - tema peab saama sama ulemise
   vahe, muidu algaks hoone lehe esimene kast 58px korgemalt (Egon 07.10). */
.breadcrumb + .card,
.breadcrumb + .hoone-kaardid,
.breadcrumb + form > .card:first-child { margin-top: calc(var(--pais-korgus) + var(--vahe) + 7px); }

/* Tookasu leht on flex-veerg: seal ei liitu aared, vaid tuleb juurde gap.
   Votame vahe maha, et rida oleks sama korge mis mujal. */
.tookask-sisu > .breadcrumb { margin-bottom: calc(7px - var(--vahe)); }
.tookask-sisu > .tk-pealkiri { margin-bottom: 0; }

@media (max-width: 767px) {
    .lehe-pais, .tk-pealkiri, .leht > h1 { min-height: 0; }
    .leht > h1:has(+ p.muted), .leht > h1 + p.muted { height: auto; }
    .breadcrumb + .card, .breadcrumb + .hoone-kaardid,
    .breadcrumb + form > .card:first-child { margin-top: 0; }
}

/* =========================================================================
   ULDVAADE (Egoni marge 25.09):
   - number ja alltekst on sildiga uhel keskteljel
   - toode seisuriba on ohem joon
   - KPI ribas on kuues lahter (hoolduskulu EUR/m2)
   ========================================================================= */
.koondkast .ruut > div,
.objekt-kpid > div { text-align: center; }
.koondkast .ruut > div > h3,
.objekt-kpid .silt { display: block; }
.koondkast .ruut { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.koondkast .kpi-joon, .objekt-kpid .kpi-joon { margin-left: auto; margin-right: auto; }

.seisuriba { height: 4px; border-radius: 4px; }
.seisu-legend i { width: 7px; height: 7px; }

@media (max-width: 1200px) {
    .koondkast .ruut { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 18px; }
}
@media (max-width: 767px) {
    .koondkast .ruut { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Uldvaate kokkuvotte tabelis on uks uhikuveerg iga naitaja kohta ja
   viimane rida naitab naitaja koguse. */
.m2-kokkuvote tr.naitaja-kogus td { border-bottom: 0; border-top: 0; padding: 4px 0 0;
    font-size: 12px; font-weight: 400; color: var(--tekst-3); }
.m2-kokkuvote tr.naitaja-kogus .vihje-rida { color: var(--tekst-4); }
.m2-kokkuvote th .vihje { display: inline-block; margin-left: 4px; white-space: nowrap; text-transform: none; letter-spacing: 0; }
.m2-kokkuvote th.num, .m2-kokkuvote td.num { padding-left: 14px; }
/* Hooldus/majandus jaotusriba: ilma display:block-ita jaab ta inline-elemendiks
   ja sisemine tapitud osa ei paista valja. */
.m2-kokkuvote .jaotusriba { display: block; overflow: hidden; }
.m2-kokkuvote .jaotusriba > span { display: block; height: 100%; border-radius: 4px; }

/* Kokkuvotte plokid: uks iga naitaja kohta (m2, laps, ruum). Varem oli neid
   ainult uks, nuud mitu korvuti - kitsamad, tabel joob nende korval. */
.m2-kokkuvote { flex-wrap: nowrap; gap: 22px; }
.m2-kokkuvote .suur { flex: 0 0 auto; width: 186px; min-width: 0; padding-right: 22px; }
.m2-kokkuvote .suur h3 { white-space: nowrap; }
.m2-kokkuvote .suur .arv { font-size: 26px; white-space: nowrap; }
.m2-kokkuvote .jaotus > div { white-space: nowrap; }
.m2-kokkuvote .jaotus b { font-variant-numeric: tabular-nums; }
.m2-kokkuvote .suur .all { line-height: 1.35; }
.m2-kokkuvote > table { flex: 1 1 0; min-width: 0; }
@media (max-width: 1280px) {
    .m2-kokkuvote { gap: 18px; }
    .m2-kokkuvote .suur { width: 162px; padding-right: 16px; }
    .m2-kokkuvote .suur .arv { font-size: 22px; }
}
@media (max-width: 1000px) {
    .m2-kokkuvote { flex-wrap: wrap; }
    .m2-kokkuvote .suur { flex: 1 1 190px; width: auto; border-right: 0; border-bottom: 1px solid var(--joon); padding-bottom: 14px; }
    .m2-kokkuvote > table { flex: 1 1 100%; }
}

/* =========================================================================
   TEGEVUSTE KATEGOORIAD (kujundusjuhend 6.1). Kategooria tuleb koodist,
   kasutaja ei sisesta midagi - nimekiri on lihtsalt gruppidesse jaotatud
   ja igal grupil on vaike varvitapp.
   ========================================================================= */
.teg-grupp { display: flex; align-items: center; gap: 8px;
    margin: 18px 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--joon);
    font-size: 13px; font-weight: 600; color: var(--tekst-2); }
.teg-grupp:first-of-type { margin-top: 0; }
.teg-grupp .arv { margin-left: auto; font-size: 12px; font-weight: 500; color: var(--tekst-3);
    font-variant-numeric: tabular-nums; }
.teg-tapp { width: 9px; height: 9px; border-radius: 3px; flex-shrink: 0; background: var(--tekst-4); }
/* Kategooria votmed tulevad includes/tegevuse_kategooria.php-st (juhend 6.1) */
.teg-tapp.vent          { background: #3E9BB5; }
.teg-tapp.kute          { background: #C9772F; }
.teg-tapp.elekter       { background: #C7A32E; }
.teg-tapp.vesi          { background: #3A72B8; }
.teg-tapp.ohutus        { background: #B4483C; }
.teg-tapp.turva         { background: #7B5EA7; }
.teg-tapp.koristus      { background: #2F7D58; }
.teg-tapp.hoone         { background: #8A6B4F; }
.teg-tapp.jaatmed       { background: #6E8C3F; }
.teg-tapp.yldine        { background: var(--joon-tugev); }

/* Uldvaate ulemine rida, koondkast ja naitajaplokid kolisid 25.09 faili
   assets/uldvaade.css (kujundusjuhend 8). Siin neid enam ei ole - uks
   tolleallikas, vt juhend 5.1. */

/* =========================================================================
   LEHE SAKID KASTI SEES (Egoni marge 25.09). Varem seisid "Hoolduskavad |
   Hoolduskava tyybid" sakid kasti KOHAL ja lukkasid esimese kasti ulaserva
   teistest lehtedest 44 px madalamale. Nuud on nad kasti esimeses ribas,
   koos "Veerud" nupuga - kasti ulaserv on sama korge mis mujal.
   ========================================================================= */
.tabeli-tooriba.sakiriba { justify-content: flex-start; padding-top: 0; padding-bottom: 0; }
.tabeli-tooriba.sakiriba > .lehe-sakid { margin: 0 auto 0 0; border-bottom: 0; }
.tabeli-tooriba.sakiriba > .lehe-sakid a { height: 42px; margin-bottom: -1px; }
.tabeli-tooriba.sakiriba > .vaate-nupp { flex-shrink: 0; }
/* Polstriga kastis (nt Hoolduskava tyypide lisamisvorm) laheb riba ule kogu
   kasti laiuse, mitte polstri sisse. */
.card:not(:has(> table)):not(:has(> form > table)) > .tabeli-tooriba.sakiriba {
    margin: calc(var(--kast-pad) * -1) calc(var(--kast-pad) * -1) var(--kast-pad) !important;
}
@media (max-width: 767px) {
    .tabeli-tooriba.sakiriba { padding-left: 0; padding-right: 0; overflow-x: auto; }
}

/* =========================================================================
   EELARVE: "JARGMINE" VEERG (Egoni soov 25.09). Naitab hoolduskava ridadel
   jargmise planeeritud hoolduse kuupaeva. Tagasihoidlik: vaike hall kiri,
   mitte esiletostetud. Kuluridadel ja summaridadel on lahter tyhi.
   ========================================================================= */
.eelarve-tabel .jargmine-veerg { width: 54px; min-width: 54px; text-align: right;
    font-size: 11px; font-variant-numeric: tabular-nums; color: var(--tekst-3);
    white-space: nowrap; }
.eelarve-tabel thead .jargmine-veerg { cursor: help; }
/* Kuupaev kahel real: "17-Jul" ja all aastaarv - veerg jaab poole kitsamaks. */
.eelarve-tabel .jargmine-veerg .jhk { display: inline-block; line-height: 1.15; cursor: help; }
.eelarve-tabel .jargmine-veerg .jhk .pv,
.eelarve-tabel .jargmine-veerg .jhk .aa { display: block; }
.eelarve-tabel .jargmine-veerg .jhk .aa { font-size: 10px; color: var(--tekst-4); }
/* Moodunud aeg: pehme merevaik, mitte punane hoiatus. */
.eelarve-tabel .jargmine-veerg .hilineb, .eelarve-tabel .jargmine-veerg .hilineb .aa { color: #b0761f; }

/* Kliendi lehe moodulid (klient.php) - lisalehed, mis ei ole koigil klientidel */
.moodulite-loend { display: flex; flex-direction: column; gap: 10px; }
.mooduli-rida { display: flex; align-items: flex-start; gap: 11px; padding: 11px 13px;
    border: 1px solid var(--joon); border-radius: var(--r-nupp); cursor: pointer; }
.mooduli-rida:hover { border-color: var(--joon-tugev); background: var(--pind-2); }
.mooduli-rida.lukus { cursor: default; opacity: .75; }
.mooduli-rida input { margin: 2px 0 0; flex-shrink: 0; }
.mooduli-tekst { display: flex; flex-direction: column; gap: 2px; }
.mooduli-tekst .nimi { font-size: 14px; font-weight: 600; color: var(--tekst); }
.mooduli-tekst .selgitus { font-size: 12px; color: var(--tekst-3); }

/* =========================================================================
   LOETAVUS JA MENÜÜ (Egoni tellimus 08.10)
   Keskmine kasutaja on 50+ ja ei ole arvutiga väga tugev: menüü tekst
   suuremaks, väljanimed suuremaks ja hall tekst tumedamaks (parem kontrast).
   ========================================================================= */
:root { --tekst-3: #556170; }
.sidebar-nav a { font-size: 14px; }
.form-row label, .silt { font-size: 12px; }

/* Menüü kaks gruppi: igapäevane töö ülal, seadistus all eraldi */
.sidebar-nav.sidebar-seaded { flex: 0 0 auto; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--joon); }
.sidebar-grupp { padding: 2px 13px 6px; font-size: 11px; font-weight: 600; text-transform: uppercase;
    letter-spacing: .05em; color: var(--tekst-3); }
/* Teadete arv Töölaua lingi juures */
.sidebar-nav a .sidebar-loendur { margin-left: auto; min-width: 20px; height: 20px; padding: 0 6px; box-sizing: border-box;
    border-radius: 10px; background: #e8990c; color: #fff; font-size: 11px; font-weight: 600;
    display: inline-flex; align-items: center; justify-content: center; }

/* Pealkirjariba ei murdu arvutis kunagi kahele reale — muidu nihkub esimene
   kast 106 px pealt alla (Egoni püsinõue). Pikk alapealkiri lõigatakse „…“-ga,
   täistekst on hiire all (title). Telefonis jääb murdumine lubatuks. */
@media (min-width: 768px) {
    .lehe-pais { flex-wrap: nowrap; }
    .lehe-pais > .lehe-pais-tekst { min-width: 0; flex: 0 1 auto; }
    .lehe-pais .lehe-pais-tekst h1,
    .lehe-pais .lehe-pais-tekst p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .lehe-pais > :not(.lehe-pais-tekst) { flex-shrink: 0; }
}

/* Eelarve „Lisa kanne“ aken: valik Kanne / Ühekordne töökäsk (Egon 08.10) */
.kanne-liik { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0 0 var(--vahe);
    border: 1px solid var(--joon-tugev, #d5dbe3); border-radius: var(--r-nupp, 6px); overflow: hidden; }
.kanne-liik label { display: flex; align-items: center; justify-content: center; gap: 6px; margin: 0;
    height: 38px; font-size: 14px; font-weight: 600; color: var(--tekst-2); cursor: pointer; text-transform: none; letter-spacing: 0; }
.kanne-liik label + label { border-left: 1px solid var(--joon-tugev, #d5dbe3); }
.kanne-liik input { position: absolute; opacity: 0; pointer-events: none; }
.kanne-liik label:has(input:checked) { background: var(--aktsent); color: #fff; }
.kanne-liik label:has(input:focus-visible) { box-shadow: inset var(--fookus); }
.kanne-liik label:has(input:disabled) { opacity: .45; cursor: not-allowed; }
.kanne-tehtud { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 400; color: var(--tekst);
    text-transform: none; letter-spacing: 0; cursor: pointer; }
.kanne-tehtud input { width: 18px; height: 18px; margin: 0; }

/* =========================================================================
   KOMPAKTNE KIRI KOGU hOps-is (Egon 16.10)
   Sama mõõdustik mis töökäsu lehel: sildid 11px, tekst, väljad, tabelid ja
   nupud 13px, abitekstid 12px. Pealkirjad (h1/h2) ja menüü jäävad samaks.
   Kehtib ainult sisseloginud vaates (.layout); alltöövõtja avalik leht ja
   sisselogimine jäävad suuremaks (telefonis loetavus).
   ========================================================================= */
.layout { font-size: 13px; }
.layout .muted { font-size: 12px; }
.layout .form-row label, .layout .silt { font-size: 11px; letter-spacing: .055em; }
.layout .form-row label span, .layout .form-row label small { font-size: 10.5px; }
.layout .form-row input[type=text], .layout .form-row input[type=email], .layout .form-row input[type=password],
.layout .form-row input[type=date], .layout .form-row input[type=number], .layout .form-row input[type=tel],
.layout .form-row input[type=url], .layout .form-row input[type=search], .layout .form-row select, .layout .form-row textarea,
.layout .modal-sisu input[type=text], .layout .modal-sisu input[type=number], .layout .modal-sisu input[type=date], .layout .modal-sisu select,
.layout .card input[type=text]:not(.pealkirja-otsing), .layout .card input[type=email], .layout .card input[type=date],
.layout .card input[type=number], .layout .card select:not(.pealkirja-otsing), .layout .card textarea { font-size: 13px; }
.layout .form-row .help, .layout .vihje { font-size: 12px; }
.layout .flash { font-size: 13px; }
.layout .tab-nav a, .layout .lehe-sakid a { font-size: 13px; }
.layout .loend-tekst, .layout .jargmine-samm .pealkiri, .layout .kommentaar-rida, .layout .valik-rida,
.layout .valik-loend label.valik-rida, .layout .cl-otsing, .layout .cl-nimi, .layout .cl-uus, .layout .oht-tekst,
.layout .valikukast, .layout .pais-valik select, .layout .tegevus-item input[type=text], .layout .tyyp-nimi input,
.layout .tk-kirjeldus, .layout .kinnituste-plokk > div, .layout .juhend p, .layout .juhend li { font-size: 13px; }
.layout .rippvalik .hk-valik-rida, .layout .rippvalik .firma-rida { font-size: 13px !important; }
.layout .form-row label.valja-linnuke, .layout .valja-linnuke, .layout .form-row label.faili-ala { font-size: 12px; }

/* Alamhoone silt eelarve rea nime jarel (Egon 30.10) */
.ah-silt { display: inline-block; margin-left: 6px; padding: 0 6px; height: 17px; line-height: 17px;
    border-radius: 4px; background: var(--hall-t); color: var(--tekst-2); font-size: 11px; font-weight: 600;
    vertical-align: 1px; white-space: nowrap; }
/* Alamhoone valimata - valik on kohustuslik (Egon 30.10) */
select.ah-puudu { border-color: var(--oranz) !important; background-color: var(--oranz-t) !important; color: var(--oranz); }
/* Eelarve paises: kõik majad / üks maja (Egon 30.10) */
.ah-filter { display: inline-flex; align-items: center; gap: 2px; padding: 3px; background: var(--pind-2);
    border: 1px solid var(--joon); border-radius: 999px; flex-wrap: nowrap; max-width: 100%; overflow-x: auto; }
.ah-filter a { display: inline-flex; align-items: center; height: 26px; padding: 0 12px; border-radius: 999px;
    font-size: 12px; font-weight: 600; color: var(--tekst-2); text-decoration: none; white-space: nowrap; }
.ah-filter a:hover { color: var(--tekst); background: var(--pind); }
.ah-filter a.aktiivne { background: var(--aktsent); color: #fff; }
/* ==================================================================
   TELEFONIVAADE — ühised parandused (Egon 03.11)
   Telefonis ei tohi väljad ega nupud kokku pigistuda: lehtede oma
   mitmeveerulised ruudustikud (nt töökäsu „Lõpeta töö“, hoolduskava
   tasu rida) lähevad ühte veergu, ja andmetabelid muutuvad kaartideks
   (iga rida eraldi plokk, veeru nimi lahtri ees).
   ================================================================== */
@media (max-width: 767px) {
    /* Vormide ruudustik: üks veerg (koondkast ja ülevaade jäävad kaheks) */
    .ruut:not(.koondkast .ruut):not(.ylevaade) { grid-template-columns: minmax(0, 1fr) !important; }
    .ruut > * { grid-column: auto !important; min-width: 0; }
    /* Kõrvuti sildid (Hoolduskulu / Majanduskulu jms) murduvad, mitte ei lõigu */
    .kulu-liik label { min-width: 0; white-space: normal; text-align: center; line-height: 1.25; height: auto !important; min-height: var(--h-nupp); padding-top: 6px; padding-bottom: 6px; }
    .linnukesed { grid-template-columns: minmax(0, 1fr) !important; }
    label.linnuke, .linnukesed label { white-space: normal; min-width: 0; }
    /* Kliendi kaardi lisamisvormid: iga väli oma real */
    .kk-lisa .form-row, .kk-ligipaas-rida .form-row { flex: 1 1 100% !important; min-width: 0 !important; }
    /* Nupud ei tohi teksti ära lõigata */
    .btn { max-width: 100%; }
    /* Akende nupurida: nupud jagavad laiuse, ei lähe akna servast välja */
    .modaal-jalus { flex-wrap: wrap; }
    .modaal-jalus .btn { min-width: 0 !important; flex: 1 1 0; }
    /* Lehel kirjutatud veeru-ulatus (grid-column: 2 / -1) teeks telefonis tühja veeru */
    .grid-2 > [style*="grid-column"] { grid-column: auto !important; }
    /* Süsteemi otsing + lühend + Lisa: otsing oma real */
    div:has(> #susteemi_otsing) { flex-wrap: wrap; }
    #susteemi_otsing { flex: 1 1 100% !important; }
    /* Süsteemide loetelu aknas: nimi oma real, lühend ja nupud selle all */
    #mallid-aken form { flex-wrap: wrap; }
    #mallid-aken input[name="mall_nimi"] { flex: 1 1 100% !important; }
    /* Kasti päis: pealkiri ja parempoolne tekst murduvad eri ridadele, pealkiri ise mitte */
    .kasti-pais { flex-wrap: wrap; row-gap: 4px; }
    .kasti-pais > :first-child { white-space: nowrap; }

    /* Akti plokk: tekst oma real, nupud selle all (enne pigistati tekst sõnahaaval
       kitsaks veeruks ja „Pole vajalik“ läks servast välja) */
    .akt-plokk { flex-wrap: wrap; }
    .akt-plokk .sisu { flex: 1 1 calc(100% - 40px); }
    .akt-plokk > form.inline, .akt-plokk > .btn, .akt-plokk > label.btn { flex: 1 1 100%; }
    .akt-plokk > form.inline .btn { width: 100%; }
    .akt-plokk.olemas > .btn, .akt-plokk.olemas > form.inline { flex: 1 1 0; }
    .akt-lisarida { flex-wrap: wrap; }

    /* Andmetabelid kaartidena (klass m-kaardid pannakse footer.php skriptiga) */
    table.m-kaardid, table.m-kaardid > thead, table.m-kaardid > tbody, table.m-kaardid > tfoot { display: block; width: 100% !important; min-width: 0 !important; }
    table.m-kaardid tr { display: block; padding: 10px 16px; border-bottom: 1px solid var(--joon); }
    table.m-kaardid > thead, table.m-kaardid tr.m-pais { display: none !important; }
    table.m-kaardid > tbody > tr:last-child, table.m-kaardid > tr:last-child { border-bottom: 0; }
    table.m-kaardid td { display: flex; align-items: baseline; gap: 12px; padding: 3px 0 !important; border: 0 !important;
        width: auto !important; min-width: 0 !important; max-width: none !important; height: auto !important;
        white-space: normal !important; text-align: left !important; overflow: visible !important; overflow-wrap: anywhere; }
    table.m-kaardid td[data-silt]::before { content: attr(data-silt); flex: 0 0 96px; font-size: 11px; font-weight: 600;
        letter-spacing: .05em; text-transform: uppercase; color: var(--tekst-3); }
    table.m-kaardid td.m-tyhi { display: none; }
    table.m-kaardid td > input:not([type=checkbox]):not([type=radio]), table.m-kaardid td > select { flex: 1 1 auto; min-width: 0; width: auto !important; }
    table.m-kaardid td:first-child:not([data-silt]) { font-weight: 600; }
    .card:has(> table.m-kaardid), .card:has(> form > table.m-kaardid) { overflow-x: visible; }
}
