/* ==========================================================================
   deutsch.ba — Edukativni i ispitni centar, Tešanj
   Jedan CSS fajl za cijeli sajt. Bez build koraka, bez frameworka.

   Sadržaj:
     1. Tokeni
     2. Osnovno / reset
     3. Tipografija
     4. Layout
     5. Dugmad i oznake
     6. Header i navigacija
     7. Hero
     8. Ljestvica nivoa (A1–C1)
     9. Termini
    10. Kartice i mreže
    11. Tabele (cijene)
    12. Sadržajni tekst (ispitni red, pravilnik)
    13. Galerija i lightbox
    14. Forma
    15. Footer
    16. Pomoćne klase
    17. Print i reduced-motion
   ========================================================================== */

/* fonts.css se učitava zasebno u <head>, prije ovog fajla — @import bi
   napravio dodatni round-trip i usporio prvo iscrtavanje teksta. */

/* ============================ 1. Tokeni ================================= */

:root {
  /* Boje su izvedene iz logotipa (crna + trake njemačke zastave).
     Crvena je namjerno austrijska #C8102E — ÖSD je austrijski ispit,
     a ton djeluje službenije od zastavne njemačke crvene. */
  --ink:        #14110F;
  --ink-soft:   #2A2621;
  --red:        #C8102E;
  --red-dark:   #A20C24;
  --gold:       #E8B417;
  --gold-soft:  #F6E7B4;

  --paper:      #FBF9F5;
  --white:      #FFFFFF;
  --line:       #E4DFD6;
  --line-dark:  #3A342D;
  --muted:      #6B635A;
  --muted-dark: #A79E92;

  --ok:         #1F7A44;

  /* Razmaci */
  --s1: 4px;   --s2: 8px;   --s3: 12px;  --s4: 16px;
  --s5: 24px;  --s6: 32px;  --s7: 48px;  --s8: 64px;  --s9: 96px;

  /* Ostalo */
  --wrap: 1140px;
  --r-sm: 8px;
  --r:    14px;
  --r-lg: 20px;
  --pill: 999px;

  --shadow:    0 1px 2px rgba(20,17,15,.04), 0 8px 24px rgba(20,17,15,.06);
  --shadow-lg: 0 2px 4px rgba(20,17,15,.05), 0 18px 44px rgba(20,17,15,.12);

  --ease: cubic-bezier(.4, 0, .2, 1);
}

/* ========================= 2. Osnovno / reset =========================== */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 96px; /* sticky header */
  /* Sprječava horizontalni scroll ako neki element ikad iscuri iz okvira.
     Namjerno `clip`, a ne `hidden` — `hidden` bi napravio scroll kontejner
     i pokvario position: sticky na headeru. */
  overflow-x: clip;
}

body {
  margin: 0;
  background: var(--white);
  color: var(--ink);
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  font-size: 17px;
  font-weight: 400;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img, svg, video { max-width: 100%; height: auto; display: block; }

/* Mora nadjačati display: grid/flex na .grid, .termin, .field itd.
   JS se oslanja na atribut hidden (termini, poruke o statusu). */
[hidden] { display: none !important; }

a { color: var(--red); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--red-dark); }

:focus-visible {
  outline: 3px solid var(--red);
  outline-offset: 3px;
  border-radius: 4px;
}

::selection { background: var(--gold-soft); color: var(--ink); }

hr {
  border: 0;
  border-top: 1px solid var(--line);
  margin: var(--s7) 0;
}

/* Preskoči na sadržaj — za tastaturu i čitače ekrana */
.skip {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--ink);
  color: var(--white);
  padding: var(--s3) var(--s4);
  z-index: 200;
  border-radius: 0 0 var(--r-sm) 0;
}
.skip:focus { left: 0; }

/* =========================== 3. Tipografija ============================= */

h1, h2, h3, h4 {
  font-weight: 800;
  line-height: 1.12;
  letter-spacing: -0.03em;
  margin: 0 0 var(--s4);
  text-wrap: balance;
}

h1 { font-size: clamp(2.1rem, 5.2vw, 3.5rem); }
h2 { font-size: clamp(1.6rem, 3.4vw, 2.35rem); }
h3 { font-size: clamp(1.15rem, 2vw, 1.4rem); letter-spacing: -0.02em; }
h4 { font-size: 1.05rem; font-weight: 700; letter-spacing: -0.01em; }

p { margin: 0 0 var(--s4); }
p:last-child { margin-bottom: 0; }

strong, b { font-weight: 700; }

/* Nadnaslov — sitna verzalna oznaka, kao metapodatak na službenom dokumentu */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 var(--s3);
}
.eyebrow::before {
  content: "";
  width: 18px;
  height: 3px;
  background: var(--gold);
  border-radius: 2px;
}
.eyebrow--light { color: var(--muted-dark); }

.lead {
  font-size: clamp(1.05rem, 1.6vw, 1.2rem);
  line-height: 1.65;
  color: var(--muted);
  max-width: 62ch;
}
.lead--light { color: var(--muted-dark); }

/* Naglašena riječ u naslovu */
.mark { color: var(--red); }
.mark-gold {
  background: linear-gradient(transparent 62%, var(--gold-soft) 62%);
  padding: 0 .06em;
}

/* ============================= 4. Layout ================================ */

.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--s5);
}
.wrap--narrow { max-width: 780px; }

.section { padding-block: clamp(var(--s7), 8vw, var(--s9)); }
.section--tight { padding-block: clamp(var(--s6), 5vw, var(--s7)); }
.section--paper { background: var(--paper); }
.section--ink {
  background: var(--ink);
  color: var(--white);
}
.section--ink h2, .section--ink h3 { color: var(--white); }
.section--ink a:not(.btn) { color: var(--gold); }

.section__head { max-width: 62ch; margin-bottom: var(--s7); }
.section__head--center { margin-inline: auto; text-align: center; }
.section__head--center .eyebrow { justify-content: center; }

/* ======================== 5. Dugmad i oznake ============================ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  font-family: inherit;
  font-size: .95rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  line-height: 1;
  padding: 15px 26px;
  border: 1.5px solid transparent;
  border-radius: var(--pill);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .18s var(--ease), color .18s var(--ease),
              border-color .18s var(--ease), transform .18s var(--ease);
}
.btn:active { transform: translateY(1px); }

.btn--red    { background: var(--red); color: var(--white); }
.btn--red:hover { background: var(--red-dark); color: var(--white); }

.btn--ink    { background: var(--ink); color: var(--white); }
.btn--ink:hover { background: var(--ink-soft); color: var(--white); }

.btn--ghost  { background: transparent; color: var(--ink); border-color: var(--line); }
.btn--ghost:hover { background: var(--ink); color: var(--white); border-color: var(--ink); }

.btn--light  { background: var(--white); color: var(--ink); }
.btn--light:hover { background: var(--gold); color: var(--ink); }

.btn--outline-light { background: transparent; color: var(--white); border-color: var(--line-dark); }
.btn--outline-light:hover { background: rgba(255,255,255,.08); color: var(--white); border-color: var(--muted-dark); }

.btn--sm { padding: 10px 18px; font-size: .85rem; }
.btn--full { width: 100%; }

.btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s3);
  margin-top: var(--s5);
}

/* Sitna oznaka — nivo, status, kategorija */
.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .04em;
  padding: 5px 11px;
  border-radius: var(--pill);
  background: var(--paper);
  border: 1px solid var(--line);
  color: var(--ink);
  white-space: nowrap;
}
.chip--gold  { background: var(--gold-soft); border-color: transparent; }
.chip--red   { background: var(--red); border-color: transparent; color: var(--white); }
.chip--ok    { background: rgba(31,122,68,.1); border-color: transparent; color: var(--ok); }
.chip--dark  { background: rgba(255,255,255,.08); border-color: var(--line-dark); color: var(--white); }
.chip--muted { background: transparent; border-color: var(--line); color: var(--muted); }

.chip-row { display: flex; flex-wrap: wrap; gap: var(--s2); }

/* ÖSD oznaka — koristi se u heroju i footeru */
.badge-osd {
  display: inline-flex;
  align-items: center;
  gap: var(--s3);
  padding: var(--s3) var(--s4);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--r);
  font-size: .84rem;
  line-height: 1.4;
  color: var(--muted);
}
.badge-osd strong { display: block; color: var(--ink); font-size: .92rem; }
.badge-osd__seal {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 2px solid var(--red);
  display: grid;
  place-items: center;
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .02em;
  color: var(--red);
}

/* ====================== 6. Header i navigacija ========================== */

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  /* Namjerno BEZ backdrop-filter: on (kao i transform) pravi containing
     block za position:fixed potomke, pa bi se mobilna ladica (.nav__menu)
     zaključala unutar headera od 82px umjesto preko cijelog ekrana. */
  background: var(--white);
  border-bottom: 1px solid var(--line);
}
/* Traka iz logotipa — crno / crveno / zlatno. Namjerno samo ovdje,
   kao zaglavlje službenog dokumenta. Nigdje drugdje na sajtu. */
.site-header::before {
  content: "";
  display: block;
  height: 4px;
  background: linear-gradient(to right,
    var(--ink) 0 33.33%, var(--red) 33.33% 66.66%, var(--gold) 66.66% 100%);
}

.nav {
  display: flex;
  align-items: center;
  gap: var(--s5);
  min-height: 78px;
}

.nav__logo { flex: 0 0 auto; margin-right: auto; display: block; }
.nav__logo img { width: 168px; height: auto; }

.nav__list {
  display: flex;
  align-items: center;
  gap: var(--s2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav__link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 9px 12px;
  border-radius: var(--r-sm);
  font-size: .92rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .15s var(--ease), color .15s var(--ease);
}
.nav__link:hover { background: var(--paper); color: var(--ink); }

.nav__link::after { content: none; }
.has-sub > .nav__link::after {
  content: "";
  width: 6px; height: 6px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg) translate(-1px, -1px);
  opacity: .5;
}

/* Podmeni */
.has-sub { position: relative; }
.sub {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 230px;
  list-style: none;
  margin: 0;
  padding: var(--s2);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--r);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .16s var(--ease), transform .16s var(--ease), visibility .16s;
}
.has-sub:hover > .sub,
.has-sub:focus-within > .sub {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.sub a {
  display: block;
  padding: 9px 12px;
  border-radius: var(--r-sm);
  font-size: .9rem;
  font-weight: 600;
  color: var(--ink);
  text-decoration: none;
}
.sub a:hover { background: var(--paper); color: var(--red); }

/* Aktivna stranica.
   Namjerno preko [data-page] na <body>, a NE preko class="active" u <nav>:
   tako header ostaje bajt-identičan u svim HTML fajlovima i mijenja se
   jednim search/replace kroz cijeli sajt. Vidi CLAUDE.md. */
body[data-page="pocetna"]      .nav__link[href="index.html"],
body[data-page="osd"]          .nav__link[href="osd-ispiti.html"],
body[data-page="termini"]      .nav__link[href="osd-ispiti.html"],
body[data-page="ispitni-red"]  .nav__link[href="osd-ispiti.html"],
body[data-page="pravilnik"]    .nav__link[href="osd-ispiti.html"],
body[data-page="kursevi"]      .nav__link[href="kursevi.html"],
body[data-page="edukacije"]    .nav__link[href="edukacije.html"],
body[data-page="prevodenje"]   .nav__link[href="prevodenje.html"],
body[data-page="cijene"]       .nav__link[href="cijene.html"],
body[data-page="o-nama"]       .nav__link[href="o-nama.html"],
body[data-page="galerija"]     .nav__link[href="o-nama.html"],
body[data-page="kontakt"]      .nav__link[href="kontakt.html"] {
  background: var(--paper);
  box-shadow: inset 0 -2px 0 var(--gold);
}

.nav__cta { flex: 0 0 auto; }

/* "Početna" postoji u markupu (identičnom u svim fajlovima), ali se na
   desktopu ne prikazuje — logo vodi kući, a osam stavki ne stane u red.
   U mobilnoj ladici se vidi (vidi media query ispod). */
.nav__home { display: none; }

/* Hamburger */
.nav__toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  cursor: pointer;
}
.nav__toggle span {
  display: block;
  width: 20px;
  height: 2px;
  margin-inline: auto;
  background: var(--ink);
  border-radius: 2px;
  transition: transform .2s var(--ease), opacity .2s var(--ease);
}
.nav__toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav__toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav__toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ============================== 7. Hero ================================= */

.hero {
  padding-block: clamp(var(--s7), 7vw, 88px);
  background:
    radial-gradient(1100px 460px at 82% -8%, rgba(232,180,23,.13), transparent 62%),
    var(--white);
  border-bottom: 1px solid var(--line);
}

.hero__grid {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: clamp(var(--s6), 5vw, var(--s8));
  align-items: center;
}

.hero h1 { margin-bottom: var(--s5); }

.hero__media { position: relative; }
.hero__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--r-lg);
  border: 1px solid var(--line);
}

/* Mozaik: velika slika + dvije male, bez pokreta i bez JS-a.
   Namjerno umjesto slideshowa — posjetilac vidi sve tri odjednom. */
.mosaic {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: var(--s3);
  aspect-ratio: 4 / 3.1;
}
.mosaic img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--r);
  border: 1px solid var(--line);
}
.mosaic__big { grid-row: 1 / 3; }

/* Traka "Sljedeći ispit" — ispod hero-a, umjesto boxa preko slike */
.next-strip {
  background: var(--ink);
  color: var(--white);
  border-bottom: 1px solid var(--line-dark);
}
.next-strip__in {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s3) var(--s5);
  padding-block: var(--s4);
}
.next-strip .eyebrow { margin: 0; }
.next-strip__date { font-size: 1.25rem; letter-spacing: -0.02em; }
.next-strip__meta { color: var(--muted-dark); font-size: .92rem; }
.next-strip__all {
  margin-left: auto;
  color: var(--gold);
  text-decoration: none;
  font-weight: 700;
  font-size: .9rem;
}
.next-strip__all:hover { color: var(--white); }

/* ==================== 8. Ljestvica nivoa (A1–C1) ======================== */
/* Potpis ovog sajta. Nivoi rastu s lijeva nadesno jer to je stvarni niz —
   svaki posjetilac zna na kojoj je stepenici ("treba mi B1 za Ausbildung").
   Boja ide od zlatne (A1) do crvene (C1) i time nosi informaciju o težini. */

.ladder {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--s3);
  align-items: end;
  list-style: none;
  margin: 0;
  padding: 0;
}

.ladder__step { display: flex; }

.ladder__link {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  width: 100%;
  padding: var(--s4);
  min-height: calc(112px + var(--i, 0) * 30px);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r);
  color: var(--ink);
  text-decoration: none;
  transition: transform .2s var(--ease), box-shadow .2s var(--ease),
              border-color .2s var(--ease);
}
.ladder__link:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: transparent;
  color: var(--ink);
}

.ladder__bar {
  height: 6px;
  border-radius: 3px;
  margin-bottom: auto;
  /* boja se miješa po poziciji: 0 = zlatna, 1 = crvena */
  background: color-mix(in oklab, var(--red) calc(var(--i, 0) * 25%), var(--gold));
}

.ladder__code {
  display: block;
  font-size: 1.6rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  margin-top: var(--s4);
}
.ladder__name {
  font-size: .82rem;
  font-weight: 600;
  color: var(--muted);
  line-height: 1.35;
  /* Fiksna visina za dva reda — inače se stepenice raspadnu čim
     jedan naziv pređe u drugi red. */
  min-height: 2.7em;
}

/* U tamnoj sekciji */
.section--ink .ladder__link {
  background: var(--ink-soft);
  border-color: var(--line-dark);
  color: var(--white);
}
.section--ink .ladder__name { color: var(--muted-dark); }

/* ============================ 9. Termini ================================ */
/* Lista je namjerno na tamnoj podlozi i čita se kao red vožnje —
   datumi su ono po što ljudi dolaze na ovu stranicu. */

.termini {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--line-dark);
}

.termin {
  display: grid;
  grid-template-columns: 168px 1fr auto;
  gap: var(--s5);
  align-items: center;
  padding: var(--s5) 0;
  border-bottom: 1px solid var(--line-dark);
}

.termin__date {
  font-size: 1.32rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--gold);
  line-height: 1.15;
}
.termin__date span {
  display: block;
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted-dark);
}

.termin__body { min-width: 0; }
.termin__place {
  font-size: 1.02rem;
  font-weight: 700;
  margin-bottom: 6px;
}
.termin__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s2) var(--s3);
  font-size: .85rem;
  color: var(--muted-dark);
}

.termin__action { justify-self: end; }

/* Protekli termini — JS ih premješta ovamo (vidi main.js) */
.termini--past .termin { opacity: .5; }
.termini--past .termin__date { color: var(--muted-dark); }

.termini-empty {
  padding: var(--s6);
  border: 1px dashed var(--line-dark);
  border-radius: var(--r);
  color: var(--muted-dark);
  text-align: center;
}

/* Varijanta na svijetloj podlozi (koristi se na početnoj ako zatreba) */
.termini--light { border-top-color: var(--line); }
.termini--light .termin { border-bottom-color: var(--line); }
.termini--light .termin__date { color: var(--red); }
.termini--light .termin__date span,
.termini--light .termin__meta { color: var(--muted); }

/* ======================= 10. Kartice i mreže ============================ */

.grid { display: grid; gap: var(--s5); }
.grid--2 { grid-template-columns: repeat(2, 1fr); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--4 { grid-template-columns: repeat(4, 1fr); }

.card {
  display: flex;
  flex-direction: column;
  padding: var(--s6);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--r);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.card h3 { margin-bottom: var(--s3); }
.card p { color: var(--muted); font-size: .96rem; }
.card__foot { margin-top: auto; padding-top: var(--s4); }

a.card { text-decoration: none; color: var(--ink); }
a.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); color: var(--ink); }

.card--paper { background: var(--paper); }
.section--paper .card { background: var(--white); }
.section--ink .card {
  background: var(--ink-soft);
  border-color: var(--line-dark);
  color: var(--white);
}
.section--ink .card p { color: var(--muted-dark); }

/* Kartica sa brojem/oznakom u uglu */
.card__tag {
  align-self: flex-start;
  margin-bottom: var(--s4);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--red);
}

/* Dvokolonski blok tekst + slika */
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(var(--s6), 5vw, var(--s8));
  align-items: center;
}
.split--wide-left { grid-template-columns: 1.2fr .8fr; }
.split--wide-right { grid-template-columns: .8fr 1.2fr; }
.split img { border-radius: var(--r-lg); border: 1px solid var(--line); }

/* Lista sa kvačicama */
.ticks { list-style: none; margin: 0 0 var(--s4); padding: 0; }
.ticks li {
  position: relative;
  padding-left: 30px;
  margin-bottom: var(--s3);
}
.ticks li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .58em;
  width: 8px;
  height: 8px;
  border-radius: 2px;
  background: var(--gold);
}
.ticks--red li::before { background: var(--red); }

/* Statistike / brojevi */
.stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));  /* četiri stanu u kolonu od ~600px */
  gap: var(--s5);
  list-style: none;
  margin: 0;
  padding: 0;
}
.stats dt {
  font-size: clamp(1.8rem, 3.4vw, 2.4rem);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.1;
  color: var(--red);
}
.stats dd {
  margin: 6px 0 0;
  font-size: .88rem;
  color: var(--muted);
}
.section--ink .stats dt { color: var(--gold); }
.section--ink .stats dd { color: var(--muted-dark); }

/* ========================= 11. Tabele (cijene) ========================== */

.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
/* Dvokolonske tabele (cijene) stanu na svaki ekran. Tabele sa 3+ kolone
   (pravilnik) dobijaju .table--wide i skrol unutar .table-scroll. */
.table--wide { min-width: 480px; }

.table {
  width: 100%;
  border-collapse: collapse;
  font-size: .96rem;
}
.table caption {
  text-align: left;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--muted);
  padding-bottom: var(--s3);
}
.table th, .table td {
  padding: var(--s4) var(--s3);
  border-bottom: 1px solid var(--line);
  text-align: left;
}
.table th {
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
}
.table td:last-child, .table th:last-child { text-align: right; }
.table tbody tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: var(--paper); }

.table .price {
  font-size: 1.05rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  white-space: nowrap;
}

.table-note {
  margin-top: var(--s4);
  font-size: .85rem;
  color: var(--muted);
}

/* =============== 12. Sadržajni tekst (ispitni red, pravilnik) =========== */

.prose { max-width: 72ch; }
.prose h2 { margin-top: var(--s8); }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin-top: var(--s6); }
.prose ul, .prose ol { padding-left: var(--s5); margin: 0 0 var(--s4); }
.prose li { margin-bottom: var(--s2); }
.prose li::marker { color: var(--red); font-weight: 700; }

/* Numerisana pravila — broj je stvarna referenca ("tačka 7"), ne ukras */
.rules { list-style: none; counter-reset: rule; margin: 0; padding: 0; }
.rules > li {
  counter-increment: rule;
  position: relative;
  padding: var(--s5) 0 var(--s5) 56px;
  border-bottom: 1px solid var(--line);
}
.rules > li:first-child { padding-top: 0; }
.rules > li:last-child { border-bottom: 0; }
.rules > li::before {
  content: counter(rule);
  position: absolute;
  left: 0;
  top: var(--s5);
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--paper);
  border: 1px solid var(--line);
  font-size: .82rem;
  font-weight: 800;
  color: var(--red);
}
.rules > li:first-child::before { top: 0; }
.rules h3 { margin-bottom: var(--s2); }

/* Isticanje — napomena, upozorenje, citat pravilnika */
.note {
  padding: var(--s5);
  border-radius: var(--r);
  border: 1px solid var(--line);
  border-left: 4px solid var(--gold);
  background: var(--paper);
  font-size: .95rem;
}
.note--red { border-left-color: var(--red); }
.note strong { display: block; margin-bottom: 6px; }
.note p:last-child { margin-bottom: 0; }

/* Sadržaj stranice (linkovi na sekcije) */
.toc {
  list-style: none;
  margin: 0 0 var(--s7);
  padding: var(--s5);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r);
  columns: 2;
  column-gap: var(--s5);
}
.toc li { margin-bottom: var(--s2); break-inside: avoid; }
.toc a { font-size: .92rem; font-weight: 600; }

/* Harmonika (česta pitanja) */
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  padding: var(--s5) 0;
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  cursor: pointer;
  list-style: none;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "";
  flex: 0 0 auto;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--red);
  border-bottom: 2px solid var(--red);
  transform: rotate(45deg);
  transition: transform .2s var(--ease);
}
.faq details[open] summary::after { transform: rotate(-135deg); }
.faq details > div { padding-bottom: var(--s5); color: var(--muted); max-width: 68ch; }

/* ==================== 13. Galerija i lightbox =========================== */

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--s3);
  list-style: none;
  margin: 0;
  padding: 0;
}
.gallery button {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
  border-radius: var(--r-sm);
  overflow: hidden;
}
.gallery img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  transition: transform .3s var(--ease), filter .3s var(--ease);
}
.gallery button:hover img { transform: scale(1.04); filter: brightness(1.04); }

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: none;
  place-items: center;
  padding: var(--s5);
  background: rgba(20,17,15,.94);
}
.lightbox[open], .lightbox.is-open { display: grid; }
.lightbox img {
  max-width: min(100%, 1200px);
  max-height: 84vh;
  width: auto;
  border-radius: var(--r);
}
.lightbox__caption {
  margin-top: var(--s4);
  text-align: center;
  color: var(--muted-dark);
  font-size: .9rem;
}
.lightbox__close,
.lightbox__nav {
  position: absolute;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  background: rgba(255,255,255,.1);
  border: 1px solid var(--line-dark);
  border-radius: 50%;
  color: var(--white);
  font-size: 1.3rem;
  cursor: pointer;
}
.lightbox__close { top: var(--s5); right: var(--s5); }
.lightbox__nav--prev { left: var(--s5); top: 50%; transform: translateY(-50%); }
.lightbox__nav--next { right: var(--s5); top: 50%; transform: translateY(-50%); }
.lightbox__close:hover, .lightbox__nav:hover { background: rgba(255,255,255,.2); }

/* ============================= 14. Forma ================================ */

.form { display: grid; gap: var(--s4); }
.form__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4); }

.field { display: grid; gap: 7px; }
.field label {
  font-size: .84rem;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.field .hint { font-size: .8rem; color: var(--muted); font-weight: 400; }

.field input,
.field select,
.field textarea {
  width: 100%;
  font-family: inherit;
  font-size: 1rem;
  color: var(--ink);
  padding: 13px 15px;
  background: var(--white);
  border: 1.5px solid var(--line);
  border-radius: var(--r-sm);
  transition: border-color .15s var(--ease), box-shadow .15s var(--ease);
}
.field textarea { min-height: 140px; resize: vertical; }
.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(200,16,46,.12);
}
.field input::placeholder, .field textarea::placeholder { color: #A9A297; }

.field--check {
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: var(--s3);
}
.field--check input { width: 18px; height: 18px; margin-top: 3px; }
.field--check label { font-weight: 400; font-size: .9rem; line-height: 1.55; }

.form__status {
  padding: var(--s4);
  border-radius: var(--r-sm);
  font-size: .92rem;
  font-weight: 600;
}
.form__status--ok  { background: rgba(31,122,68,.1);  color: var(--ok); }
.form__status--err { background: rgba(200,16,46,.08); color: var(--red); }

/* Polje-zamka za robote (skriveno od ljudi) */
.hp { position: absolute; left: -9999px; opacity: 0; height: 0; overflow: hidden; }

/* Kontakt-blokovi */
.contact-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s4); }
.contact-list li { display: grid; grid-template-columns: 40px 1fr; gap: var(--s3); align-items: start; }
.contact-list .ico {
  width: 40px; height: 40px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: var(--paper);
  border: 1px solid var(--line);
  font-size: 1rem;
}
.contact-list dt, .contact-list .k {
  display: block;
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 2px;
}
.contact-list .v {
  display: block;
  font-weight: 700;
  font-size: 1.02rem;
  letter-spacing: -0.01em;
  line-height: 1.5;
}
.contact-list .v a { text-decoration: none; color: var(--ink); }
.contact-list .v a:hover { color: var(--red); }
.contact-list .hint { display: block; font-size: .84rem; color: var(--muted); font-weight: 400; }

/* Kartica lokacije.
   Namjerno bez ugrađene karte: OSM/Google embed traži WebGL i pada na
   starijim telefonima, a usput šalje posjetioca na strani servis. Dugmad
   otvaraju navigaciju koju čovjek ionako koristi na telefonu. */
.place {
  padding: var(--s6);
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--paper);
}
.place__addr {
  font-size: 1.15rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.4;
  margin-bottom: var(--s3);
}
.place__hint { font-size: .9rem; color: var(--muted); margin-bottom: var(--s5); }
.place .btn-row { margin-top: 0; }

/* ============================ 15. Footer ================================ */

.site-footer {
  background: var(--ink);
  color: var(--muted-dark);
  padding-block: var(--s8) var(--s6);
  font-size: .92rem;
}
.site-footer a { color: var(--muted-dark); text-decoration: none; }
.site-footer a:hover { color: var(--white); }

.footer__grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1.2fr;
  gap: var(--s6);
  padding-bottom: var(--s7);
  border-bottom: 1px solid var(--line-dark);
}
.footer__grid h4 {
  color: var(--white);
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  margin-bottom: var(--s4);
}
.footer__grid ul { list-style: none; margin: 0; padding: 0; }
.footer__grid li { margin-bottom: var(--s2); }

/* Društvene mreže u footeru — mali pill linkovi */
.footer__social {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s2);
  margin-top: var(--s4) !important;
}
.footer__social li { margin: 0; }
.footer__social a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 14px;
  border: 1px solid var(--line-dark);
  border-radius: var(--pill);
  font-size: .82rem;
  font-weight: 700;
  color: var(--white);
}
.footer__social a:hover { border-color: var(--gold); color: var(--gold); }
.footer__social svg { width: 15px; height: 15px; flex: 0 0 auto; }

/* Citat — govor sa otvorenja na stranici O nama */
.quote {
  margin: 0;
  padding: var(--s6) var(--s6) var(--s6) calc(var(--s6) + 4px);
  border-left: 4px solid var(--gold);
  background: var(--paper);
  border-radius: 0 var(--r) var(--r) 0;
  font-size: 1.12rem;
  line-height: 1.7;
}
.quote p { margin-bottom: var(--s4); }
.quote p:last-of-type { margin-bottom: 0; }
/* fotografija uz citat — portretni isječak pejzažne slike */
.quote__photo {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center;
  border-radius: var(--r-lg);
  border: 1px solid var(--line);
}
.quote footer {
  margin-top: var(--s5);
  font-size: .84rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted);
}
/* U footeru stoji zasebna svijetla varijanta logotipa (logo-light.png):
   slova su bijela, a trake njemačke zastave zadržavaju prave boje.
   CSS filter se namjerno NE koristi — invert bi crvenu pretvorio u cijan. */
.footer__logo { width: 180px; margin-bottom: var(--s4); }

.footer__bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--s4);
  padding-top: var(--s5);
  font-size: .85rem;
}
.footer__bottom ul {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s4);
  list-style: none;
  margin: 0;
  padding: 0;
}

/* ========================= 16. Pomoćne klase ============================ */

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.center { text-align: center; }
.nowrap { white-space: nowrap; }
.mt-0 { margin-top: 0; }
.mt-4 { margin-top: var(--s4); }
.mt-5 { margin-top: var(--s5); }
.mt-6 { margin-top: var(--s6); }
.mt-7 { margin-top: var(--s7); }
.mb-0 { margin-bottom: 0; }
.small { font-size: .85rem; }
.muted { color: var(--muted); }
.muted-light { color: var(--muted-dark); }

/* Putanja (breadcrumb) */
.crumbs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s2);
  list-style: none;
  margin: 0 0 var(--s5);
  padding: 0;
  font-size: .84rem;
  color: var(--muted);
}
.crumbs li + li::before { content: "/"; margin-right: var(--s2); opacity: .5; }
.crumbs a { color: var(--muted); text-decoration: none; }
.crumbs a:hover { color: var(--red); }

/* Zaglavlje podstranice */
.page-head {
  padding-block: clamp(var(--s6), 5vw, var(--s7));
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.page-head h1 { margin-bottom: var(--s4); }
.page-head .lead { margin-bottom: 0; }

/* ==================== 17. Responsive ==================================== */

@media (max-width: 1200px) {
  .nav { gap: var(--s2); }
  .nav__link { padding: 9px 7px; font-size: .86rem; }
  .nav__logo img { width: 150px; }
}
@media (max-width: 1080px) {
  .footer__grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
  .hero__grid { grid-template-columns: 1fr; }

  /* Mobilni hero (Amrina/Adilova odluka, varijanta B): mozaik se skriva,
     učionica ide kao pozadina s tamnim overlayem, tekst bijel, naglasak
     zlatan (crvena na tamnom nema kontrast). Traka "Sljedeći ispit" se
     stapa s hero-om u jedan tamni blok. Desktop ostaje mozaik. */
  .mosaic { display: none; }
  .hero {
    position: relative;
    overflow: hidden;
    background: var(--ink);
    border-bottom: 0;
    padding-block: var(--s8) var(--s7);
  }
  .hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background: url("../img/ucionica-800.jpg") center 45% / cover no-repeat;
  }
  .hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg,
      rgba(20,17,15,.50) 0%, rgba(20,17,15,.82) 55%, rgba(20,17,15,.97) 100%);
  }
  .hero > .wrap { position: relative; z-index: 1; }
  .hero .eyebrow { color: var(--gold); }
  .hero h1 { color: var(--white); }
  .hero .mark { color: var(--gold); }
  .hero .lead { color: rgba(255,255,255,.86); }
  .hero .btn--ghost { color: var(--white); border-color: rgba(255,255,255,.55); }
  .hero .btn--ghost:hover { background: var(--white); color: var(--ink); border-color: var(--white); }
  .next-strip { border-top: 1px solid var(--line-dark); }
  .next-strip__all { margin-left: 0; }
  .split, .split--wide-left, .split--wide-right { grid-template-columns: 1fr; }
  .grid--4 { grid-template-columns: repeat(2, 1fr); }
  .grid--3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 1024px) {
  /* Navigacija se pretvara u ladicu preko cijelog ekrana.
     Prag je 1024px (ne 860): sa sedam stavki i dugmetom, uži ekrani
     lome red. Isti prag stoji i u main.js (zatvaranje ladice). */
  .nav__toggle { display: flex; }
  .nav__cta { display: none; }

  .nav__menu {
    position: fixed;
    inset: 82px 0 0;
    display: block;
    padding: var(--s5) var(--s5) var(--s8);
    background: var(--white);
    overflow-y: auto;
    /* Namjerno se NE koristi translateX(100%) za skrivanje: zatvorena
       ladica bi tada stajala desno od viewporta i cijela stranica bi
       dobila horizontalni scroll. Umjesto toga blagi fade prema dolje.
       visibility je usput i pristupačnost — zatvorena ladica ispada iz
       reda za tabulator. */
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: opacity .22s var(--ease), transform .22s var(--ease), visibility .22s;
  }
  .nav__menu.is-open { opacity: 1; visibility: visible; transform: translateY(0); }

  .nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav__home { display: block; }
  .nav__link {
    display: flex;               /* pun red — linija i dodir preko cijele širine */
    padding: var(--s4) 0;
    font-size: 1.05rem;
    border-bottom: 1px solid var(--line);
    border-radius: 0;
  }
  .nav__link:hover { background: transparent; color: var(--red); }

  /* Harmonika: roditelj je jedan red sa strelicom; podstavke su sklopljene
     dok se roditelj ne dodirne (JS dodaje .is-open na <li>). */
  .has-sub > .nav__link { display: flex; justify-content: space-between; align-items: center; }
  .has-sub > .nav__link::after {
    display: inline-block;
    width: 9px; height: 9px;
    opacity: .6;
    transform: rotate(45deg) translate(-2px, -2px);
    transition: transform .2s var(--ease);
  }
  .has-sub.is-open > .nav__link::after { transform: rotate(-135deg) translate(-2px, -2px); }
  .has-sub > .sub { display: none; }
  .has-sub.is-open > .sub { display: block; }

  .sub {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    border: 0;
    border-bottom: 1px solid var(--line);
    border-radius: 0;
    padding: var(--s2) 0 var(--s3) var(--s4);
    min-width: 0;
  }
  .sub a { padding: 8px 0; font-size: .96rem; color: var(--muted); }

  /* Zaključavanje skrola dok je ladica otvorena ide na <html>, NE na body:
     overflow:hidden na body-ju pravi od body-ja scroll-kontejner, pa se
     sticky header "zalijepi" za vrh dokumenta umjesto za vrh ekrana — i X
     za zatvaranje nestane čim je stranica skrolana. */
  html.nav-open { overflow: hidden; }
}

@media (max-width: 760px) {
  body { font-size: 16px; }

  /* Sitni natpisi ne ispod 12px na telefonu (audit: eyebrow/chip/tag = 11.5px) */
  .eyebrow, .card__tag, .table caption, .chip { font-size: .78rem; }

  /* Footer linkovi: dovoljno visoki za prst (≥ 36px), a ne samo visina reda */
  .footer__grid li { margin-bottom: 0; }
  .footer__grid li a { display: inline-block; padding: 7px 0; }
  /* …ali pill-ovi Facebook/Instagram ostaju flex — inače SVG (display:block)
     prelomi tekst u novi red */
  .footer__grid .footer__social a { display: inline-flex; padding: 8px 14px; }
  .footer__bottom ul a { display: inline-block; padding: 8px 0; }
  .crumbs a { display: inline-block; padding: 6px 0; }
  a.chip, .next-strip__all { padding-top: 9px; padding-bottom: 9px; }
  .table td, .table th { padding: var(--s3) var(--s2); }

  .grid--2 { grid-template-columns: 1fr; }

  .ladder { grid-template-columns: repeat(5, 1fr); gap: 6px; }
  .ladder__link { padding: var(--s3) 10px; min-height: calc(88px + var(--i, 0) * 16px); }
  .ladder__code { font-size: 1.15rem; margin-top: var(--s3); }
  .ladder__name { display: none; }

  .termin {
    grid-template-columns: 1fr;
    gap: var(--s3);
    padding: var(--s5) 0;
  }
  .termin__action { justify-self: start; }

  .form__row { grid-template-columns: 1fr; }
  .toc { columns: 1; }
  .footer__grid { grid-template-columns: 1fr; gap: var(--s5); }
  .gallery { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  .lightbox__nav { width: 40px; height: 40px; }
  .lightbox__nav--prev { left: var(--s3); }
  .lightbox__nav--next { right: var(--s3); }
}

@media (max-width: 560px) {
  .wrap { padding-inline: var(--s4); }
  .grid--3, .grid--4 { grid-template-columns: 1fr; }
  .card { padding: var(--s5); }
  .mosaic { grid-template-columns: 1.2fr 1fr; gap: var(--s2); }
  /* traka na telefonu: dva reda — bez opisa "Tešanj · prijave u toku" */
  /* Traka "Sljedeći ispit" na telefonu: mreža 2×2 —
       natpis        datum
       [Prijavi se]  Svi termini →   */
  .next-strip__in {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: var(--s4) var(--s3);
  }
  .next-strip .eyebrow { grid-column: 1; }
  .next-strip__date { grid-column: 2; justify-self: end; }
  .next-strip__meta { display: none; }
  .next-strip .btn { grid-column: 1; justify-self: start; width: auto; margin: 0; }
  .next-strip__all { grid-column: 2; justify-self: end; margin: 0; }
  .btn { width: 100%; }
  .btn-row { flex-direction: column; }
  .nav__logo img { width: 138px; }
}

/* ==================== 18. Print i reduced-motion ======================== */

@media print {
  .site-header, .site-footer, .btn, .nav, .lightbox, .form { display: none !important; }
  body { font-size: 12pt; color: #000; }
  .section { padding-block: 12pt; }
  a::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
