Files
GoNtech/web/static/css/main.css
T
Dasko 9c32cd71aa Magacin: modal za premeštanje + ujednačen slajder na svim brauzerima
Premeštanje artikla:
  - Padajući <details> meni zamenjen nativnim <dialog> modalom (showModal),
    koji ide u „top layer" pa je uvek iznad svega bez obzira na z-index/overflow.
  - Dodato zatamnjenje pozadine (::backdrop) i fade in/out animacije
    (@starting-style + transition-behavior: allow-discrete).
  - Klik van modala, × dugme i Escape zatvaraju; klik na kategoriju i dalje
    odmah premešta artikal.

  Tema i HTMX:
  - CSS modala premešten iz magacin.html (dodatni-css u headeru) u main.css,
    jer se header ne menja pri HTMX navigaciji (hx-select=#glavni-sadrzaj),
    pa je stil sada uvek prisutan.
  - Modal prati svetlu/tamnu temu preko CSS promenljivih; kad je aktivna
    pozadinska slika, glass-override u base.html ga čini providnim i zamućenim
    kao kartice.
  - Modal centriran (margin:auto, jer reset gazi UA podrazumevano) i pojačana senka.

  Slajder (input[type=range]):
  - Dodata zajednička klasa .klizac sa ručnim stilom za oba motora
    (::-webkit-slider-* i ::-moz-range-*), da svuda izgleda kao u Firefox-u.
  - Plava popunjenost pre glave: Firefox preko ::-moz-range-progress, Chromium
    preko gradijenta i CSS promenljive --popunjeno koju postavlja JS.
  - Svih 12 slajdera (profil_tema, podesavanja_izgled, podesavanja) prešlo sa
    inline accent-color stila na klasu .klizac.
2026-06-10 00:05:40 +02:00

911 lines
22 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* osnovna podešavanja */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
background: var(--pozadina);
}
body {
font-family: system-ui, -apple-system, sans-serif;
background: var(--pozadina);
color: var(--tekst-glavni);
}
/* layout */
.raspored {
display: flex;
height: 100vh;
overflow: hidden;
}
/* bez tranzicije pri inicijalnom učitavanju skupljenog sidebara */
.sidebar-init-skupljen .sidebar {
width: 60px;
overflow: hidden;
transition: none;
}
.sidebar-init-skupljen .sidebar .logo-zona {
opacity: 0;
width: 0;
pointer-events: none;
transition: none;
}
.sidebar-init-skupljen .sidebar .nav-oznaka,
.sidebar-init-skupljen .sidebar .nav-stavka span {
opacity: 0;
pointer-events: none;
transition: none;
}
/* sidebar */
.sidebar {
width: 220px;
background: var(--sidebar-pozadina);
display: flex;
flex-direction: column;
transition: width 0.28s cubic-bezier(.4,0,.2,1);
overflow: hidden;
flex-shrink: 0;
}
.sidebar.skupljen {
width: 60px;
overflow: hidden;
}
/* vrh sidebara — logo zona */
.sidebar-vrh {
display: flex;
align-items: center;
height: 72px;
padding: 0 12px;
gap: 10px;
border-bottom: 0.5px solid var(--ivica);
flex-shrink: 0;
}
/* hamburger dugme */
.hamburger {
background: none;
border: none;
cursor: pointer;
color: var(--tekst-jak);
padding: 6px;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s;
flex-shrink: 0;
}
.hamburger:hover {
background: var(--pozadina-hover);
}
/* logo zona */
.logo-zona {
display: flex;
align-items: center;
gap: 10px;
overflow: hidden;
opacity: 1;
transition: opacity 0.28s, width 0.28s;
width: 160px;
}
.sidebar.skupljen .logo-zona {
opacity: 0;
width: 0;
pointer-events: none;
}
.logo-naziv {
color: var(--tekst-jak);
font-weight: 500;
font-size: 15px;
white-space: nowrap;
}
.logo-podnazlov {
color: var(--tekst-sporedni);
font-size: 11px;
white-space: nowrap;
}
/* navigacija */
.sidebar-nav {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
padding: 8px 0;
scrollbar-width: none;
}
.sidebar-nav::-webkit-scrollbar {
display: none;
}
.nav-oznaka {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--tekst-sporedni);
padding: 12px 16px 4px;
white-space: nowrap;
opacity: 1;
transition: opacity 0.28s;
}
.sidebar.skupljen .nav-oznaka {
opacity: 0;
}
.nav-stavka {
display: flex;
align-items: center;
gap: 12px;
padding: 9px 16px;
cursor: pointer;
color: var(--tekst-sporedni);
white-space: nowrap;
position: relative;
text-decoration: none;
transition: background 0.2s, color 0.2s, transform 0.15s ease;
}
.nav-stavka:hover {
background: var(--pozadina-hover);
color: var(--tekst-jak);
}
.sidebar:not(.skupljen) .nav-stavka:hover {
transform: scale(1.03);
}
.sidebar.skupljen .nav-stavka:hover svg {
transform: scale(1.15);
}
.nav-stavka.aktivan {
background: var(--sb-aktivan);
color: var(--tekst-jak);
}
.nav-stavka.aktivan::before {
content: '';
position: absolute;
left: 0;
top: 4px;
bottom: 4px;
width: 3px;
background: var(--sb-akcent);
border-radius: 0 3px 3px 0;
}
.nav-stavka svg {
flex-shrink: 0;
width: 20px;
height: 20px;
transition: transform 0.15s ease;
}
.nav-stavka span {
font-size: 14px;
opacity: 1;
transition: opacity 0.28s;
}
.sidebar.skupljen .nav-stavka span {
opacity: 0;
pointer-events: none;
}
/* accordion podmeni u sidebaru */
.nav-podmeni {
overflow: hidden;
max-height: 0;
transition: max-height 0.22s ease-out;
}
.nav-podmeni.otvoren {
max-height: 300px;
transition: max-height 0.25s ease-in;
}
/* pri inicijalnom učitavanju sprečavamo animaciju podmenia */
.nav-podmeni.bez-tranzicije {
transition: none !important;
}
/* u skupljenom modu otvoren podmeni dobija vizuelnu oznaku — pozadina + leva akcenat-linija */
.sidebar.skupljen .nav-podmeni.otvoren {
background: var(--sb-aktivan);
border-left: 3px solid var(--sb-akcent);
}
.nav-podstavka {
padding-left: 48px !important;
}
.nav-podstavka span {
font-size: 13px !important;
}
/* u skupljenom modu reset uvlačenja — ikonica se prikazuje na istoj poziciji */
.sidebar.skupljen .nav-podstavka {
padding-left: 16px !important;
}
/* strelica za accordion — sakriva se zajedno sa tekstom u skupljenom modu */
.nav-strelica {
margin-left: auto;
display: flex;
align-items: center;
flex-shrink: 0;
}
.nav-separator {
height: 0.5px;
background: var(--ivica);
margin: 8px 12px;
}
/* tooltip kada je sidebar skupljen */
.nav-tooltip {
position: absolute;
left: 68px;
top: 50%;
transform: translateY(-50%);
background: rgba(0,0,0,0.85);
color: #fff;
font-size: 12px;
padding: 4px 10px;
border-radius: 6px;
white-space: nowrap;
pointer-events: none;
opacity: 0;
transition: opacity 0.15s;
z-index: 100;
}
.sidebar:not(.skupljen) .nav-tooltip {
display: none;
}
/* specifičniji selektor pobjeđuje .sidebar.skupljen .nav-stavka span { opacity:0 } */
.sidebar.skupljen .nav-stavka:hover .nav-tooltip {
opacity: 1;
pointer-events: none;
}
/* dno sidebara */
.sidebar-dno {
padding: 8px 0;
border-top: 0.5px solid var(--ivica);
}
/* glavni sadržaj */
.glavni-sadrzaj {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
/* topbar */
.topbar {
height: 56px;
background: var(--kartica);
border-bottom: 0.5px solid var(--ivica);
display: flex;
align-items: center;
padding: 0 20px;
gap: 12px;
flex-shrink: 0;
}
.topbar-naslov {
font-weight: 500;
font-size: 15px;
color: var(--tekst-glavni);
flex: 1;
}
/* sadržaj stranice */
.sadrzaj {
flex: 1;
overflow-y: auto;
padding: 20px;
}
/* kartice */
.kartica {
background: var(--kartica);
border: 0.5px solid var(--ivica);
border-radius: 12px;
padding: 16px;
box-shadow: var(--senka);
transition: transform 0.25s cubic-bezier(.4,0,.2,1), box-shadow 0.25s;
}
.kartica:hover {
transform: translateY(-4px);
box-shadow: var(--senka);
}
/* modal za premeštanje artikla — koristi promenljive teme, pa prati svetlu/tamnu;
kad je aktivna slika u pozadini, glass-override u base.html ga čini providnim kao kartice */
.premesti-modal {
border: 0.5px solid var(--ivica);
border-radius: 12px;
padding: 0;
background: var(--pozadina);
color: var(--tekst-glavni);
width: min(90vw, 320px);
/* eksplicitno centriranje — main.css reset gazi UA „margin:auto", pa bez ovoga modal padne u gornji levi ćošak */
margin: auto;
/* dvoslojna senka: meka difuzna + dublja bliža, da modal jače „iskoči" iznad pozadine */
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.35),
0 32px 80px rgba(0, 0, 0, 0.55);
/* polazno stanje + prelaz za fade in/out (transform daje blagi „zoom") */
opacity: 0;
transform: scale(0.96);
transition: opacity 0.32s ease, transform 0.32s ease,
overlay 0.32s ease allow-discrete, display 0.32s ease allow-discrete;
}
.premesti-modal[open] {
opacity: 1;
transform: scale(1);
}
/* početno stanje na samom otvaranju — bez ovoga nema fade in animacije */
@starting-style {
.premesti-modal[open] {
opacity: 0;
transform: scale(0.96);
}
}
/* zatamnjena pozadina iza modala */
.premesti-modal::backdrop {
background: rgba(0, 0, 0, 0);
transition: background 0.32s ease,
overlay 0.32s ease allow-discrete, display 0.32s ease allow-discrete;
}
.premesti-modal[open]::backdrop {
background: rgba(0, 0, 0, 0.72);
}
@starting-style {
.premesti-modal[open]::backdrop {
background: rgba(0, 0, 0, 0);
}
}
/* zaglavlje modala: naslov + dugme za zatvaranje */
.premesti-zaglavlje {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 14px;
margin: 0;
border-bottom: 0.5px solid var(--ivica);
}
.premesti-zaglavlje h3 {
margin: 0;
font-size: 15px;
color: var(--tekst-glavni);
}
.premesti-zatvori {
background: none;
border: none;
color: var(--tekst-sporedni);
font-size: 22px;
line-height: 1;
cursor: pointer;
padding: 0 4px;
}
/* spisak kategorija unutar modala */
.premesti-panel {
display: flex;
flex-direction: column;
gap: 2px;
padding: 8px;
margin: 0;
}
.premesti-opcija {
text-align: left;
padding: 9px 12px;
background: none;
border: none;
border-radius: 6px;
color: var(--tekst-glavni);
font-size: 14px;
cursor: pointer;
white-space: nowrap;
}
.premesti-opcija:hover { background: var(--pozadina-hover); }
.premesti-opcija-prazno {
color: var(--tekst-sporedni);
border-top: 0.5px solid var(--ivica);
margin-top: 4px;
padding-top: 11px;
}
/* primarna dugmad — rade na svim temama */
.btn-primarno {
display: inline-flex;
align-items: center;
background: var(--sb-akcent);
color: #fff;
border: none;
border-radius: 8px;
padding: 8px 16px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
white-space: nowrap;
transition: opacity 0.2s;
}
.btn-primarno:hover { opacity: 0.85; }
/* mala primarna dugmad u tabelama */
.btn-primarno-malo {
display: inline-flex;
align-items: center;
background: var(--sb-akcent);
color: #fff;
border: none;
border-radius: 6px;
padding: 4px 10px;
font-size: 12px;
font-weight: 500;
text-decoration: none;
transition: opacity 0.2s;
}
.btn-primarno-malo:hover { opacity: 0.85; }
/* sekundarno dugme (Odustani) */
.btn-sekundarno {
display: inline-flex;
align-items: center;
background: transparent;
color: var(--tekst-sporedni);
border: 0.5px solid var(--ivica);
border-radius: 8px;
padding: 9px 20px;
font-size: 14px;
cursor: pointer;
text-decoration: none;
transition: background 0.2s, color 0.2s;
}
.btn-sekundarno:hover { background: var(--pozadina); color: var(--tekst-glavni); }
/* crveno dugme za brisanje u tabelama */
.btn-obrisi-malo {
display: inline-flex;
align-items: center;
background: #dc2626;
color: #fff;
border: none;
border-radius: 6px;
padding: 4px 10px;
font-size: 12px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
transition: opacity 0.2s;
}
.btn-obrisi-malo:hover { opacity: 0.8; }
/* nazad link na formama */
.nazad-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
color: var(--tekst-sporedni);
text-decoration: none;
margin-bottom: 20px;
transition: color 0.2s;
}
.nazad-link:hover { color: var(--tekst-glavni); }
/* hover na redovima tabela — zamena za inline onmouseover/onmouseout */
.red-tabele {
border-bottom: 0.5px solid var(--ivica);
transition: background 0.15s;
}
.red-tabele:hover { background: var(--pozadina); }
/* naslov sekcije unutar forme */
.sekcija-naslov {
font-size: 12px;
font-weight: 500;
color: var(--tekst-sporedni);
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 10px;
}
/* avatar krug korisnika u topbaru */
.avatar-korisnik {
width: 32px;
height: 32px;
border-radius: 50%;
background: var(--sb-akcent);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 500;
color: #fff;
flex-shrink: 0;
}
/* klizač (input[type=range]) — ujednačen izgled na svim brauzerima.
Chromium ne stilizuje nativni slajder kao Firefox niti popunjava deo pre glave,
pa oblik crtamo ručno preko pseudo-elemenata oba motora. */
.klizac {
-webkit-appearance: none;
appearance: none;
width: 100%;
height: 18px; /* visina klik-zone; sama staza je tanja, crta se u pseudo-elementima */
background: transparent;
cursor: pointer;
--popunjeno: 0%; /* postavlja JS; Firefox to ne koristi (ima ::-moz-range-progress) */
}
/* ——— Chromium/Blink: Opera, Chrome, Edge ——— */
.klizac::-webkit-slider-runnable-track {
height: 6px;
border-radius: 999px;
/* plavo do --popunjeno, dalje siva staza — tvrdi prelaz na istom procentu */
background: linear-gradient(to right,
var(--sb-akcent) var(--popunjeno),
var(--pozadina-hover) var(--popunjeno));
}
.klizac::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 16px;
height: 16px;
margin-top: -5px; /* (6px staza 16px glava) / 2 — centrira glavu na stazu */
border-radius: 50%;
background: #b0b6be;
border: 2px solid #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}
/* ——— Firefox ——— */
.klizac::-moz-range-track {
height: 6px;
border-radius: 999px;
background: var(--pozadina-hover);
}
.klizac::-moz-range-progress {
height: 6px;
border-radius: 999px;
background: var(--sb-akcent);
}
.klizac::-moz-range-thumb {
width: 16px;
height: 16px;
border: 2px solid #fff;
border-radius: 50%;
background: #b0b6be;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}
/* fokus — suptilan prsten oko glave (bez podrazumevanog outline-a) */
.klizac:focus { outline: none; }
.klizac:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 4px rgba(31, 111, 235, 0.25); }
.klizac:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 4px rgba(31, 111, 235, 0.25); }
/* input polja — konzistentna za sve teme */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="date"],
select {
height: 38px;
padding: 8px 12px;
box-sizing: border-box;
line-height: 1.5;
background: var(--kartica) !important;
color: var(--tekst-glavni) !important;
border: 0.5px solid var(--ivica) !important;
border-radius: 8px;
font-size: 14px;
outline: none;
transition: border-color 0.2s;
}
textarea {
height: auto;
min-height: 80px;
padding: 8px 12px;
box-sizing: border-box;
line-height: 1.5;
background: var(--kartica) !important;
color: var(--tekst-glavni) !important;
border: 0.5px solid var(--ivica) !important;
border-radius: 8px;
font-size: 14px;
outline: none;
transition: border-color 0.2s;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="date"]:focus,
textarea:focus,
select:focus {
border-color: var(--sb-akcent) !important;
outline: none;
}
select {
width: 100%;
min-width: 0;
}
/* poruka o uspehu — konzistentna za sve teme */
.poruka-uspeh {
background: var(--poruka-uspeh-bg);
border: 0.5px solid var(--poruka-uspeh-boja);
border-radius: 10px;
padding: 12px 16px;
margin-bottom: 20px;
font-size: 14px;
color: var(--poruka-uspeh-boja);
}
.poruka-greska {
background: rgba(207, 87, 87, 0.12);
border: 0.5px solid var(--greska);
border-radius: 10px;
padding: 12px 16px;
margin-bottom: 20px;
font-size: 14px;
color: var(--greska);
}
/* overlay za mobilni — tamni sloj iza sidebara */
.sidebar-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.5);
z-index: 9;
}
.sidebar-overlay.aktivan {
display: block;
}
/* mobilni ekrani */
@media (max-width: 768px) {
/* sidebar — drawer ponašanje */
.sidebar {
position: fixed;
left: 0;
top: 0;
height: 100vh;
z-index: 10;
transform: translateX(-100%);
transition: transform 0.28s cubic-bezier(.4,0,.2,1);
width: 220px !important;
}
.sidebar.otvoren { transform: translateX(0); }
.sidebar.otvoren .logo-zona { opacity: 1; width: 160px; pointer-events: auto; }
.sidebar.otvoren .nav-oznaka { opacity: 1; }
.sidebar.otvoren .nav-stavka span { opacity: 1; pointer-events: auto; }
.nav-tooltip { display: none !important; }
.glavni-sadrzaj { width: 100%; }
/* topbar hamburger */
#hamburger-topbar { display: flex !important; color: var(--tekst-glavni); }
#hamburger-topbar:hover { background: var(--pozadina); }
/* teme */
.topbar-teme { display: none; }
.teme-grid { flex-direction: column !important; }
/* forme */
.forma-grid-2 { grid-template-columns: 1fr !important; }
/* magacin traka */
.magacin-traka { flex-direction: column; align-items: stretch; }
.magacin-traka form { flex-direction: column; align-items: stretch; }
.magacin-traka a { text-align: center; }
.magacin-traka form input,
.magacin-traka form select,
.magacin-traka form button,
.magacin-traka form label { width: 100%; justify-content: flex-start; }
}
/* tačkice za teme */
.tema-krug {
width: 20px;
height: 20px;
border-radius: 50%;
display: inline-block;
border: 2px solid transparent;
transition: border-color 0.2s;
}
.tema-krug:hover {
border-color: var(--tekst-sporedni);
}
.tema-krug-aktivan {
border-color: var(--tekst-glavni) !important;
}
/* animacije */
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes slideDown {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
20% { transform: translateX(-6px); }
40% { transform: translateX(6px); }
60% { transform: translateX(-4px); }
80% { transform: translateX(4px); }
}
.animiraj {
animation: fadeInUp 0.2s ease both;
}
/* responsive prikaz — tabela/kartice za sve liste (mora biti u main.css jer HTMX ne učitava head ponovo) */
.nabavke-kartice { display: none; flex-direction: column; gap: 12px; }
.dobavljaci-kartice { display: none; flex-direction: column; gap: 12px; }
.klijenti-kartice { display: none; flex-direction: column; gap: 12px; }
.magacin-kartice { display: none; flex-direction: column; gap: 12px; }
.servis-kartice { display: none; flex-direction: column; gap: 12px; }
.prodaja-kartice { display: none; flex-direction: column; gap: 12px; }
.pod-kartice { display: none; flex-direction: column; gap: 12px; }
.stavke-kartice { display: none; flex-direction: column; gap: 10px; }
@media (max-width: 768px) {
.nabavke-tabela { display: none; } .nabavke-kartice { display: flex; }
.dobavljaci-tabela { display: none; } .dobavljaci-kartice { display: flex; }
.klijenti-tabela { display: none; } .klijenti-kartice { display: flex; }
.magacin-tabela { display: none; } .magacin-kartice { display: flex; }
.servis-tabela { display: none; } .servis-kartice { display: flex; }
.prodaja-tabela { display: none; } .prodaja-kartice { display: flex; }
.pod-tabela { display: none; } .pod-kartice { display: flex; }
.stavke-tabela-wrapper { display: none; } .stavke-kartice { display: flex; }
.forma-grid-4 { grid-template-columns: 1fr 1fr !important; }
}
/* podešavanja — raspored pozadine */
.app-poz-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
@media (max-width: 680px) { .app-poz-grid { grid-template-columns: 1fr; } }
/* gornja traka magacina — responsive */
.magacin-traka {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.magacin-traka form {
display: flex;
align-items: center;
gap: 8px;
flex: 1;
min-width: 200px;
flex-wrap: wrap;
}
/* flash toast — jednokratna poruka u gornjem desnom uglu */
@keyframes flashUlaz {
from { opacity: 0; transform: translateX(20px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes flashIzlaz {
from { opacity: 1; transform: translateX(0); }
to { opacity: 0; transform: translateX(20px); }
}
.flash-toast {
position: fixed;
top: 20px;
right: 20px;
z-index: 9999;
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
border-radius: 10px;
font-size: 14px;
max-width: 380px;
box-shadow: 0 4px 16px rgba(0,0,0,0.12);
animation: flashUlaz 0.3s ease forwards;
}
.flash-toast.flash-izlaz {
animation: flashIzlaz 0.35s ease forwards;
}
.flash-toast.flash-uspeh {
background: #f0fdf4;
color: #15803d;
border: 0.5px solid #bbf7d0;
}
.flash-toast.flash-greska {
background: #fef2f2;
color: #dc2626;
border: 0.5px solid #fecaca;
}
.flash-ikona {
font-weight: 700;
font-size: 15px;
flex-shrink: 0;
}
.flash-tekst {
flex: 1;
line-height: 1.4;
}
.flash-zatvori {
background: none;
border: none;
cursor: pointer;
font-size: 18px;
line-height: 1;
color: inherit;
opacity: 0.6;
padding: 0 0 0 4px;
flex-shrink: 0;
}
.flash-zatvori:hover { opacity: 1; }
@media (max-width: 480px) {
.flash-toast {
top: auto;
bottom: 20px;
right: 12px;
left: 12px;
max-width: none;
}
}
/* dropdown meni mora biti iznad svih stacking context-a koje glass efekt kreira */
#avatar-meni {
z-index: 9999 !important;
position: relative;
}
/* sprečava treperenje pozadine pri navigaciji između stranica (Chrome/Opera/noviji Firefox) */
@view-transition {
navigation: auto;
}
/* pomoćne klase (ranije iz Tailwind-a, sada lokalno da ne zavisimo od CDN-a) */
.grid { display: grid; }
.gap-3 { gap: 12px; }
.gap-4 { gap: 16px; }
.mb-6 { margin-bottom: 24px; }
/* broj kolona u grid rasporedu — bazne (mobilni-first) vrednosti */
.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* responsive varijante — primenjuju se od 768px naviše (Tailwind „md") */
@media (min-width: 768px) {
.md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.md\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}