/* ==========================================================================
   VPFR Tripundo - CMS stil (app-shell)
   Prati brend tripundo.com: ljubičasta #5f23d3, zlatna #fdca40, tamna #001d4a.

   Bez frameworka i bez spoljnih fontova - CSP dozvoljava samo 'self', a i
   font-src uopšte nije naveden, pa bi Google Fonts bio blokiran. Inter je prvi
   u nizu da ga uzme ako je instaliran lokalno; inače se pada na sistemski font,
   koji je metrički dovoljno blizak.

   Skript nema nigde (script-src 'none'), pa je i raspored isključivo CSS:
   bočna traka se ispod 900px pretvara u gornju bez ijedne linije JS-a.

   Napomena: fiskalni isečak (FiskalniPapir::UHtml) dolazi sa SVOJIM inline
   stilovima, jer isti HTML ide i u mejl. Inline stil pobeđuje ovaj fajl -
   zato se ovde isečak samo uokviruje, a njegov sadržaj se NE prestilizuje.
   ========================================================================== */

:root {
    /* brend */
    --brend:            #5f23d3;
    --brend-tamna:      #4a19ad;
    --brend-svetla:     #f3eefc;
    --zlatna:           #fdca40;
    --zlatna-tamna:     #f0b91f;
    --mornarska:        #001d4a;

    /* tekst i površine */
    --boja-tekst:       #191e39;
    --boja-slabo:       #6b7280;
    --boja-linija:      #e3e5ea;
    --boja-pozadina:    #f6f5fa;
    --boja-panel:       #fff;
    --boja-veza:        #5f23d3;

    /* semantika statusa - namerno NIJE brendirano, značenje je važnije od boje */
    --boja-ok:          #1b7f3b;
    --boja-greska:      #b00020;
    --boja-greska-jaka: #8a0018;
    --boja-upozorenje:  #b26a00;

    --radius:           10px;
    --radius-mali:      6px;
    --radius-pilula:    999px;
    --senka:            0 1px 2px rgba(25, 30, 57, .05), 0 4px 12px rgba(25, 30, 57, .04);
    --senka-jaca:       0 2px 4px rgba(25, 30, 57, .06), 0 10px 24px rgba(25, 30, 57, .07);

    --sirina-bocne:     240px;
    --visina-vrha:      56px;
}

* { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

body {
    background: var(--boja-pozadina);
    color: var(--boja-tekst);
    font: 14px/1.55 Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -webkit-text-size-adjust: 100%;
}

a { color: var(--boja-veza); text-underline-offset: 2px; }
a:hover { text-decoration: none; }

code, .mono {
    font-family: "DejaVu Sans Mono", "Liberation Mono", Consolas, "Courier New", monospace;
    font-size: 12px;
}

.lomi { word-break: break-all; }

/* Ikonice su inline SVG sa stroke="currentColor" - boju nasleđuju od stavke. */
.ikona { flex: 0 0 auto; display: block; }

/* --- app shell ----------------------------------------------------------- */

.app {
    display: grid;
    grid-template-columns: var(--sirina-bocne) minmax(0, 1fr);
    min-height: 100vh;
}

/* minmax(0,1fr) iznad + min-width:0 ovde: bez toga široka tabela razvuče
   grid kolonu i cela stranica počne da skroluje vodoravno. */
.glavno {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* --- bočna traka --------------------------------------------------------- */

.bocna {
    position: sticky;
    top: 0;
    align-self: start;
    height: 100vh;
    display: flex;
    flex-direction: column;
    background: linear-gradient(175deg, var(--mornarska) 0%, #16226b 42%, var(--brend) 100%);
    color: #fff;
    padding: 18px 12px 0 12px;
}

.bocna-logo {
    display: flex;
    align-items: center;
    padding: 4px 10px 22px 10px;
    text-decoration: none;
}

.bocna-logo svg { display: block; height: 22px; width: auto; }

.bocna-nav { display: flex; flex-direction: column; gap: 2px; }

.nav-stavka {
    position: relative;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 12px;
    border-radius: var(--radius-mali);
    color: rgba(255, 255, 255, .74);
    font-size: 13.5px;
    font-weight: 500;
    text-decoration: none;
}

.nav-stavka:hover { background: rgba(255, 255, 255, .10); color: #fff; }

/* Aktivno stanje se veže na aria-current, ne na dodatnu klasu: marker za čitač
   ekrana i vizuelni marker tako ne mogu da se raziđu. */
.nav-stavka[aria-current="page"] {
    background: rgba(255, 255, 255, .16);
    color: #fff;
    font-weight: 600;
}

.nav-stavka[aria-current="page"]::before {
    content: "";
    position: absolute;
    left: 0;
    top: 8px;
    bottom: 8px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: var(--zlatna);
}

.nav-stavka:focus-visible {
    outline: 2px solid var(--zlatna);
    outline-offset: 1px;
}

.bocna-dno {
    margin-top: auto;
    padding: 14px 10px 16px 10px;
    border-top: 1px solid rgba(255, 255, 255, .14);
}

.bocna .operater { display: block; margin-bottom: 10px; min-width: 0; }
.bocna .operater-ime { display: block; font-size: 13px; font-weight: 600; color: #fff; }

.bocna .operater-mejl {
    display: block;
    font-size: 11.5px;
    color: rgba(255, 255, 255, .62);
    word-break: break-all;
}

.odjava { margin: 0; }

.odjava button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .30);
    color: #fff;
    padding: 7px 12px;
    border-radius: var(--radius-mali);
    cursor: pointer;
    font: inherit;
    font-size: 13px;
    font-weight: 500;
}

.odjava button:hover { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .6); }
.odjava button:focus-visible { outline: 2px solid var(--zlatna); outline-offset: 1px; }

/* --- vrh (lepljiva traka desne kolone) ----------------------------------- */

.vrh {
    position: sticky;
    top: 0;
    z-index: 20;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    height: var(--visina-vrha);
    padding: 0 24px;
    background: rgba(255, 255, 255, .82);
    -webkit-backdrop-filter: saturate(140%) blur(10px);
    backdrop-filter: saturate(140%) blur(10px);
    border-bottom: 1px solid var(--boja-linija);
    font-size: 13px;
}

/* Pregledači bez backdrop-filter-a bi dobili providnu traku preko tabele. */
@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))) {
    .vrh { background: #fff; }
}

.vrh-marka { font-weight: 700; letter-spacing: .02em; }
.vrh-delilac { color: var(--boja-linija); }
.vrh-sekcija { color: var(--boja-slabo); }

/* Operater je u bočnoj traci; u vrhu se pojavljuje tek na uskim ekranima. */
.vrh-operater { display: none; margin-left: auto; color: var(--boja-slabo); font-size: 12.5px; }

/* --- osnovni raspored ---------------------------------------------------- */

.sadrzaj {
    width: 100%;
    max-width: 1280px;
    margin: 0 auto;
    padding: 24px 24px 56px 24px;
}

h1 { font-size: 21px; font-weight: 700; margin: 0 0 18px 0; letter-spacing: -.015em; }

h2 {
    font-size: 11px;
    font-weight: 700;
    margin: 0 0 12px 0;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--boja-slabo);
}

.putanja { margin: 0 0 12px 0; font-size: 13px; }

.podnozje {
    max-width: 1280px;
    margin: 0 auto;
    padding: 12px 24px 24px 24px;
    color: var(--boja-slabo);
    font-size: 12px;
}

.sitno { color: var(--boja-slabo); font-size: 12px; }

.kartica {
    background: var(--boja-panel);
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius);
    box-shadow: var(--senka);
    padding: 18px 20px;
    margin: 0 0 18px 0;
}

/* Tabela unutar kartice ide "od ivice do ivice": kartica je već okvir, pa bi
   drugi okvir oko tabele bio suvišan. Radi samo kad je tabela poslednja u
   kartici - inače bi negativna donja margina povukla sadržaj ispod nje. */
.kartica > .tabela-omot:last-child {
    width: auto;
    margin: 0 -20px -18px -20px;
    border: none;
    border-top: 1px solid var(--boja-linija);
    border-radius: 0 0 var(--radius) var(--radius);
    box-shadow: none;
}

.greska-blok { border-color: #f3bcc5; }

/* --- kartica sa radnjama ------------------------------------------------- */

/* Blok akcija nad dokumentom (storno, ponovno slanje mejla, ...). Forme unutra
   se ne slepljuju: svaka radnja je zaseban blok sa vidljivim razmakom, da se
   opasno dugme ne bi kliknulo "u prolazu". */
.radnje {
    background: var(--boja-panel);
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius);
    box-shadow: var(--senka);
    padding: 18px 20px;
    margin: 0 0 18px 0;
}

.radnje > * + * { margin-top: 16px; }

.radnje-red {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

.radnje-blok + .radnje-blok {
    padding-top: 16px;
    border-top: 1px solid var(--boja-linija);
}

.radnje form { margin: 0; }
.radnje p { margin: 0 0 10px 0; }

/* --- pločice (presek stanja) --------------------------------------------- */

.plocice {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin: 0 0 18px 0;
}

.plocica {
    display: block;
    position: relative;
    overflow: hidden;
    background: var(--boja-panel);
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius);
    box-shadow: var(--senka);
    padding: 14px 16px 16px 16px;
    color: inherit;
    text-decoration: none;
}

/* Tanka traka u boji tipa - jedini nosilac boje kada je vrednost 0. */
.plocica::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--boja-linija);
}

.plocica:hover { box-shadow: var(--senka-jaca); border-color: #d6d3e4; }
.plocica:focus-visible { outline: 2px solid var(--brend); outline-offset: 2px; }

.plocica-naslov {
    display: block;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--boja-slabo);
}

.plocica-vrednost {
    display: block;
    margin-top: 6px;
    font-size: 26px;
    line-height: 1.15;
    font-weight: 700;
    letter-spacing: -.02em;
    font-variant-numeric: tabular-nums;
}

.plocica-sitno { display: block; margin-top: 4px; font-size: 12px; color: var(--boja-slabo); }

.plocica.ukupno::before { background: var(--brend); }
.plocica.ok::before     { background: var(--boja-ok); }
.plocica.iznos::before  { background: var(--zlatna); }
.plocica.greska::before { background: var(--boja-linija); }

/* Crveno tek kada greške POSTOJE - inače bi nula stalno vikala. */
.plocica.greska.ima-greske::before { background: var(--boja-greska); }
.plocica.greska.ima-greske .plocica-vrednost { color: var(--boja-greska); }

.plocica.iznos .plocica-vrednost { font-size: 22px; }

/* --- poruke -------------------------------------------------------------- */

.poruka {
    margin: 0 0 16px 0;
    padding: 11px 14px;
    border-radius: var(--radius-mali);
    border: 1px solid var(--boja-linija);
    background: #fff;
}

.poruka.greska { border-color: #f3bcc5; background: #fdeef1; color: var(--boja-greska-jaka); }
.poruka.ok     { border-color: #bce0c7; background: #eefaf1; color: #14602d; }
.poruka.info   { border-color: #d9cdf5; background: var(--brend-svetla); color: #3f1a8f; }

.upozorenje-integritet {
    margin: 0 0 18px 0;
    padding: 13px 15px;
    border: 2px solid var(--boja-greska);
    border-radius: var(--radius-mali);
    background: #fdeef1;
    color: var(--boja-greska-jaka);
}

.sumnjivo { color: var(--boja-upozorenje); }

/* --- prijava ------------------------------------------------------------- */

/* Stranica prijave preuzima ljubičastu podlogu sa tripundo.com hero sekcije.
   Forma je vertikalno CENTRIRANA (auto margine iznad logoa i ispod kartice dele
   preostali prostor), a na dnu stoji mali footer - bez toga je sve ispod kartice
   izgledalo kao ogroman ljubičasti "footer". */
body.strana-prijava {
    background: var(--brend);
    background: radial-gradient(120% 90% at 50% -10%, #7b3ff0 0%, var(--brend) 45%, var(--mornarska) 100%);
}

.strana-prijava .sadrzaj {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    max-width: none;
    padding: 24px 16px;
}

.prijava-logo { text-align: center; margin: auto 0 22px 0; }
.prijava-logo svg { display: inline-block; height: 34px; width: auto; }

.prijava {
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
    background: var(--boja-panel);
    border: none;
    border-radius: 14px;
    box-shadow: 0 10px 34px rgba(0, 0, 0, .22);
    padding: 28px 30px 32px 30px;
}

.prijava h1 { margin: 0 0 4px 0; font-size: 19px; }
.prijava .podnaslov { margin: 0 0 22px 0; color: var(--boja-slabo); font-size: 13px; }
.prijava label { display: block; margin: 14px 0 5px 0; font-size: 13px; font-weight: 500; }
.prijava input { width: 100%; }
.prijava button { width: 100%; margin-top: 22px; padding: 10px 14px; font-weight: 600; }

/* Footer prijave: potpis sa CSS tooltip-om na hover (bez JS-a - CSP je script-src
   'none'). Tekst tooltipa dolazi iz data-poruka atributa. */
.prijava-podnozje {
    margin-top: auto;
    padding: 26px 0 6px 0;
    text-align: center;
    font-size: 13px;
}

.prijava-podnozje a {
    position: relative;
    color: rgba(255, 255, 255, .72);
    text-decoration: none;
}

.prijava-podnozje a:hover,
.prijava-podnozje a:focus-visible { color: #fff; }

.prijava-podnozje a::after {
    content: attr(data-poruka);
    position: absolute;
    bottom: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    background: var(--mornarska);
    color: #fff;
    padding: 7px 12px;
    border-radius: 6px;
    font-size: 12px;
    white-space: nowrap;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .3);
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease;
}

/* Strelica tooltipa. */
.prijava-podnozje a::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    border: 6px solid transparent;
    border-top-color: var(--mornarska);
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease;
}

.prijava-podnozje a:hover::after,
.prijava-podnozje a:focus-visible::after,
.prijava-podnozje a:hover::before,
.prijava-podnozje a:focus-visible::before {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

.prijava-podnozje a:hover::before,
.prijava-podnozje a:focus-visible::before { transform: translateX(-50%); }

/* --- podnaslov unutar forme (npr. "Izmena" u Podešavanjima) --------------- */

.podnaslov-forme {
    margin: 18px 0 10px 0;
    padding-top: 14px;
    border-top: 1px solid var(--boja-linija);
    font-size: 13px;
    font-weight: 600;
}

/* Polje čija labela, unos i objašnjenje idu jedno ispod drugog, puna širina. */
.polje input.siroko { width: 100%; max-width: 520px; }
.polje .sitno { margin-top: 4px; }

/* --- ručni unos računa --------------------------------------------------- */

/* Tabela za unos stavki: polja se šire, brojevi ostaju uzani. */
.tabela-unos td { vertical-align: middle; white-space: nowrap; }
.tabela-unos input[type="text"] { width: 100%; min-width: 120px; }
.tabela-unos input.uzano { min-width: 78px; width: 92px; text-align: right; }
.tabela-unos td:nth-child(2) { min-width: 240px; white-space: normal; }
.tabela-unos select { min-width: 150px; }

.spisak-gresaka { margin: 0; padding-left: 20px; }
.spisak-gresaka li { margin: 3px 0; }

/* Sekundarno dugme u redu sa primarnim (npr. "Samo sačuvaj"). */
.dugme-sekundarno {
    background: #fff;
    border-color: #c9ccd4;
    color: var(--boja-tekst);
    font-weight: 500;
}

.dugme-sekundarno:hover { background: #f4f2fb; border-color: var(--brend); color: var(--brend); }

/* --- red ispod tabele (izvoz) -------------------------------------------- */

.ispod-tabele {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin: 14px 0 0 0;
}

/* --- prekidač u podešavanjima -------------------------------------------- */

.prekidac {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 4px 0 12px 0;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
}

.prekidac input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-top: 1px;
    accent-color: var(--brend);
    cursor: pointer;
}

/* --- forme --------------------------------------------------------------- */

/* Svaki tip koji se u aplikaciji koristi mora biti ovde: nenavedeni tip (npr.
   type="url") ostaje na fabričkom izgledu pregledača i vidno odudara od polja
   pored sebe, iako u HTML-u ima istu klasu. */
input[type="text"], input[type="email"], input[type="password"], input[type="date"],
input[type="url"], select {
    padding: 8px 10px;
    border: 1px solid #c9ccd4;
    border-radius: var(--radius-mali);
    background: #fff;
    color: var(--boja-tekst);
    font: inherit;
    max-width: 100%;
}

input:focus, select:focus {
    outline: none;
    border-color: var(--brend);
    box-shadow: 0 0 0 3px rgba(95, 35, 211, .16);
}

button:focus-visible, .dugme-veza:focus-visible {
    outline: 2px solid var(--brend);
    outline-offset: 2px;
}

/* Primarno dugme prati "Prijavi se" sa tripundo.com: zlatna sa tamnim tekstom. */
button, .dugme-veza {
    display: inline-block;
    padding: 8px 16px;
    border: 1px solid transparent;
    border-radius: var(--radius-mali);
    background: var(--zlatna);
    color: var(--mornarska);
    font: inherit;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

button:hover { background: var(--zlatna-tamna); }

/* Sekundarno: obrisano, da zlatna ostane rezervisana za glavnu radnju. */
.dugme-veza {
    background: #fff;
    border-color: #c9ccd4;
    color: var(--boja-tekst);
    font-weight: 500;
}

.dugme-veza:hover { background: #f4f2fb; border-color: var(--brend); color: var(--brend); }

/* Umanjena varijanta za red tabele - puno dugme bi razvuklo visinu reda. */
.dugme-malo { padding: 5px 12px; font-size: 12px; }

/* --- izmena naloga (operateri.php?izmena=N) ------------------------------- */

/* Svaka radnja nad nalogom stoji u svojoj kartici: promena imena, lozinka i
   isključivanje se ne mešaju u istoj formi, pa se opasno dugme ne može
   kliknuti "u prolazu". Mreža se sama lomi na uskim ekranima. */
.nalog-mreza {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 14px;
    align-items: stretch;
    margin: 0 0 18px 0;
}

.nalog-mreza .kartica {
    display: flex;
    flex-direction: column;
    margin: 0;
}

/* Objašnjenje se lepi za dno kartice, da dugmad u susednim karticama
   stoje u istoj visini koliko sadržaj dozvoljava. */
.nalog-mreza .kartica > .sitno { margin-top: auto; padding-top: 12px; }

.nalog-mreza form { display: flex; flex-direction: column; flex: 1 1 auto; }
.nalog-mreza form > .polje.dugmad { margin-top: auto; margin-bottom: 0; }

/* Destruktivna radnja (storno). Namerno se NE oslanja na zlatnu: storno je
   nepovratan i ne sme da izgleda kao obična potvrda. */
.dugme-opasno {
    display: inline-block;
    padding: 8px 16px;
    border: 1px solid var(--boja-greska-jaka);
    border-radius: var(--radius-mali);
    background: var(--boja-greska);
    color: #fff;
    font: inherit;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

.dugme-opasno:hover { background: var(--boja-greska-jaka); color: #fff; }
.dugme-opasno:focus-visible { outline: 2px solid var(--boja-greska-jaka); outline-offset: 2px; }

.filteri {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: flex-end;
    background: var(--boja-panel);
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius);
    box-shadow: var(--senka);
    padding: 16px 18px;
    margin: 0 0 16px 0;
}

/* .polje je opšti par "labela + polje", ne samo deo filtera: isti obrazac koriste
   i forme za storno i slanje mejla u racun.php. align-items: flex-start je bitan -
   bez njega bi se uzano polje (npr. broj lične karte) razvuklo preko cele kartice. */
.polje { display: flex; flex-direction: column; align-items: flex-start; margin: 0 0 12px 0; }
.polje label { font-size: 12px; color: var(--boja-slabo); margin-bottom: 4px; font-weight: 500; }
.polje.dugmad { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px; }

/* Unutar filtera razmak drži gap same trake, pa pojedinačno polje nema marginu. */
.filteri .polje { margin: 0; }
.filteri label { font-size: 12px; color: var(--boja-slabo); margin-bottom: 4px; font-weight: 500; }
.filteri .dugmad { flex-direction: row; gap: 8px; }

.sazetak { margin: 0 0 14px 0; color: var(--boja-slabo); }
.sazetak strong { color: var(--boja-tekst); }

/* --- tabele -------------------------------------------------------------- */

/* Široka tabela skroluje unutar svog omota - stranica nikad ne skroluje vodoravno. */
.tabela-omot {
    width: 100%;
    overflow-x: auto;
    background: var(--boja-panel);
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius);
    box-shadow: var(--senka);
}

/* Zalepljeno zaglavlje tabele radi SAMO ako omot i vertikalno skroluje - inače
   je "position: sticky" na <th> mrtvo slovo, jer omot nema šta da skroluje.
   Ograničava se isključivo tabela liste (direktno dete .sadrzaj); tabele unutar
   kartica (stavke računa) su kratke i ostaju u punoj visini. */
.sadrzaj > .tabela-omot {
    max-height: calc(100vh - var(--visina-vrha) - 120px);
    overflow: auto;
}

.tabela {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.tabela th, .tabela td {
    padding: 11px 14px;
    border-bottom: 1px solid #eef0f3;
    text-align: left;
    vertical-align: top;
    white-space: nowrap;
}

.tabela thead th {
    background: #faf9fd;
    color: var(--boja-slabo);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    border-bottom: 1px solid var(--boja-linija);
    /* Uz border-collapse: collapse ivica zalepljenog <th> ostaje da visi na
       vrhu tabele umesto da putuje sa zaglavljem - zato je linija ovde senka. */
    box-shadow: inset 0 -1px 0 var(--boja-linija);
    position: sticky;
    top: 0;
    z-index: 1;
}

.tabela tbody tr:hover { background: #faf9fd; }
.tabela tbody tr:last-child td { border-bottom: none; }
.tabela .desno { text-align: right; }
.tabela .broj { color: var(--boja-slabo); }
.tabela .novac { font-variant-numeric: tabular-nums; white-space: nowrap; font-weight: 600; }
.tabela .pfr, .tabela .datum { font-family: "DejaVu Sans Mono", "Liberation Mono", Consolas, monospace; font-size: 12px; }
.tabela .prazno { color: var(--boja-slabo); text-align: center; padding: 34px; white-space: normal; }

/* Ćelija sa razlozima veze: nowrap iz .tabela td bi sprečio prelom IZMEĐU oznaka,
   pa bi red sa tri veze razvukao tabelu preko cele širine. */
.tabela .veze { white-space: normal; min-width: 170px; }

.podaci { border-collapse: collapse; width: 100%; }

.podaci th {
    text-align: left;
    vertical-align: top;
    padding: 7px 14px 7px 0;
    color: var(--boja-slabo);
    font-weight: 400;
    white-space: nowrap;
    width: 220px;
}

.podaci td { padding: 7px 0; vertical-align: top; }

/* --- status -------------------------------------------------------------- */

/* Boje statusa su semantičke (zeleno/crveno/narandžasto) i namerno se NE
   podređuju brendu - operater ih čita kao signal, ne kao dekoraciju. */
.status {
    display: inline-block;
    padding: 3px 9px;
    border-radius: var(--radius-pilula);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .01em;
    white-space: nowrap;
    border: 1px solid transparent;
}

.st-fiskalizovan { background: #e6f6ea; color: #14602d; border-color: #bce0c7; }
.st-greska       { background: #fdeef1; color: var(--boja-greska-jaka); border-color: #f3bcc5; }
.st-nepoznato    { background: #fff4e2; color: #8a5200; border-color: #f2d4a6; }
.st-preuzet      { background: #eef0f3; color: #4a5560; border-color: #dde0e5; }
.st-odustalo     { background: #eef0f3; color: var(--boja-slabo); border-color: #dde0e5; }

h1 .status { font-size: 12px; vertical-align: middle; margin-left: 10px; }

.oznaka-refundacija {
    display: inline-block;
    margin-left: 6px;
    padding: 2px 7px;
    border-radius: var(--radius-mali);
    background: var(--brend-svetla);
    color: var(--brend-tamna);
    font-size: 11px;
    font-weight: 600;
}

/* Razlog veze među računima. Neutralno sivo, ne statusna paleta: veza nije
   stanje dokumenta i ne sme da se čita kao signal. Račun ume da bude povezan na
   više načina, pa oznake stoje u nizu i prelamaju se. */
.oznaka-veza {
    display: inline-block;
    margin: 1px 4px 1px 0;
    padding: 2px 8px;
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius-pilula);
    background: #f6f6f9;
    color: var(--boja-slabo);
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
}

/* --- fiskalni isečak i sirovi blokovi ------------------------------------ */

.isecak {
    background: #fafafa;
    border: 1px dashed #cfd2d8;
    border-radius: var(--radius-mali);
    padding: 14px;
    overflow-x: auto;
}

pre.blok {
    margin: 8px 0 0 0;
    padding: 12px 14px;
    background: var(--mornarska);
    color: #dfe6f2;
    border-radius: var(--radius-mali);
    font-family: "DejaVu Sans Mono", "Liberation Mono", Consolas, "Courier New", monospace;
    font-size: 12px;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 420px;
    overflow: auto;
}

/* Žurnal je potpisan dokument - NE prelama se, nego skroluje. */
pre.blok.zurnal {
    white-space: pre;
    word-break: normal;
    background: #fff;
    color: #000;
    border: 1px solid var(--boja-linija);
}

details { margin: 0 0 10px 0; }

details > summary {
    cursor: pointer;
    padding: 7px 0;
    font-size: 13px;
    font-weight: 500;
    color: var(--brend);
}

details > summary:hover { color: var(--brend-tamna); }

/* --- paginacija ---------------------------------------------------------- */

.paginacija {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin: 16px 0 0 0;
    font-size: 13px;
}

.paginacija a {
    padding: 6px 12px;
    border: 1px solid var(--boja-linija);
    border-radius: var(--radius-mali);
    background: var(--boja-panel);
    text-decoration: none;
}

.paginacija a:hover { border-color: var(--brend); background: var(--brend-svetla); }
.paginacija .tekuca { color: var(--boja-slabo); padding: 6px 4px; }

/* --- uski ekrani: bočna traka postaje gornja (bez JS-a) ------------------ */

@media (max-width: 900px) {
    .app { display: block; }

    .bocna {
        position: static;
        height: auto;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 10px 14px;
    }

    .bocna-logo { padding: 0 14px 0 0; }
    .bocna-logo svg { height: 20px; }
    .bocna-nav { flex-direction: row; gap: 6px; }
    .nav-stavka { padding: 7px 12px; }
    .nav-stavka[aria-current="page"]::before { left: 8px; right: 8px; top: auto; bottom: 2px; width: auto; height: 2px; border-radius: 2px; }

    .bocna-dno { margin: 0 0 0 auto; padding: 0; border-top: none; }
    /* Ime operatera se seli u .vrh; ovde bi samo trošilo širinu. */
    .bocna .operater { display: none; }
    .odjava button { width: auto; }

    .vrh-operater { display: block; }

    /* Bez bočne kolone ima više širine, ali 4 pločice u redu ovde već postaju
       preuske za formatiran iznos - lome se na 2x2. */
    .plocice { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* --- male širine --------------------------------------------------------- */

@media (max-width: 720px) {
    .sadrzaj { padding: 16px 14px 40px 14px; }
    .vrh { padding: 0 14px; }
    .kartica, .radnje { padding: 15px 16px; }
    .kartica > .tabela-omot:last-child { margin: 0 -16px -15px -16px; }
    .plocice { gap: 10px; }
    .plocica.iznos .plocica-vrednost { font-size: 19px; }
    /* Na dodiru je ugnežđeno skrolovanje više smetnja nego korist - tabela se
       na telefonu skroluje zajedno sa stranicom, bez zalepljenog zaglavlja. */
    .sadrzaj > .tabela-omot { max-height: none; }
    .filteri .polje { flex: 1 1 100%; }
    .filteri input, .filteri select { width: 100%; }
    .podaci th { width: auto; }
    .podaci, .podaci tr, .podaci th, .podaci td { display: block; width: 100%; }
    .podaci th { padding-bottom: 0; }
    .podaci td { padding-top: 0; padding-bottom: 10px; border-bottom: 1px solid #f0f0f0; }
    .prijava { margin-top: 5vh; padding: 24px 22px 28px 22px; }
}

@media (max-width: 560px) {
    .plocice { grid-template-columns: minmax(0, 1fr); }
    .plocica-vrednost { font-size: 23px; }
    .bocna-dno { width: 100%; margin: 4px 0 0 0; }
    .odjava button { width: 100%; }
}

/* --- štampa -------------------------------------------------------------- */

/* Na papiru se štampa dokument, ne aplikacija: navigacija, radnje i dugmad
   nemaju smisla, a isečak dobija punu širinu lista. */
@media print {
    body { background: #fff; }
    .app { display: block; }
    .bocna, .vrh, .radnje, .filteri, .paginacija, .putanja { display: none !important; }
    /* Mreža radnji nad nalogom su same forme - na papiru nemaju smisla. */
    .nalog-mreza { display: none !important; }
    button, .dugme-veza, .dugme-opasno, .odjava { display: none !important; }
    .glavno { display: block; }
    .sadrzaj { max-width: none; margin: 0; padding: 0; }
    .kartica, .tabela-omot, .plocica { box-shadow: none; border-color: #ccc; break-inside: avoid; }
    /* Na papiru nema skrolovanja - tabela mora da se odštampa cela. */
    .sadrzaj > .tabela-omot { max-height: none; overflow: visible; }
    .tabela thead th { position: static; background: #fff; }
    .isecak { width: 100%; border: none; padding: 0; overflow: visible; }
    pre.blok { max-height: none; overflow: visible; background: #fff; color: #000; border: 1px solid #ccc; }
    details { display: none; }
    a { color: #000; text-decoration: none; }
}
