/*
 * Javna web stranica udruge — dizajn sustav.
 *
 * Sve boje, fontovi, razmaci i zaobljenja dolaze iz CSS varijabli koje
 * generira apps/site_app/design.py iz SiteSettings. Ovdje nema nijedne
 * fiksne boje brenda — tema se mijenja isključivo tokenima.
 */

:root {
    --site-primary: #c62828;
    --site-primary-rgb: 198, 40, 40;
    --site-accent: #1f2937;
    --site-accent-rgb: 31, 41, 55;
    --site-font-heading: "Source Sans 3", system-ui, -apple-system, Arial, sans-serif;
    --site-font-body: "Source Sans 3", system-ui, -apple-system, Arial, sans-serif;
    --site-radius: 6px;
    --site-section-gap: 4.5rem;
    --site-gap: 1.5rem;

    --site-ink: #16181d;
    --site-ink-soft: #5a6472;
    --site-line: #e3e7ec;
    --site-bg: #ffffff;
    --site-bg-soft: #f6f7f9;
    --site-max: 1140px;
}

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

body {
    margin: 0;
    font-family: var(--site-font-body);
    color: var(--site-ink);
    background: var(--site-bg);
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
    font-family: var(--site-font-heading);
    line-height: 1.2;
    margin: 0 0 .6em;
    color: var(--site-accent);
}

h1 { font-size: clamp(1.9rem, 1.2rem + 2.6vw, 3.1rem); }
h2 { font-size: clamp(1.5rem, 1.1rem + 1.5vw, 2.2rem); }
h3 { font-size: clamp(1.15rem, 1rem + .6vw, 1.45rem); }

a { color: var(--site-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
img { max-width: 100%; height: auto; display: block; }

.site-wrap { max-width: var(--site-max); margin: 0 auto; padding: 0 1.25rem; }
.site-section { padding: var(--site-section-gap) 0; }
.site-section--soft { background: var(--site-bg-soft); }
.site-section__head { max-width: 46rem; margin-bottom: var(--site-gap); }
.site-lead { font-size: 1.1rem; color: var(--site-ink-soft); }

/* --- Zaglavlje ---------------------------------------------------------- */

.site-header {
    position: sticky;
    top: 0;
    z-index: 30;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--site-line);
}
.site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 68px;
}
.site-brand { display: flex; align-items: center; gap: .7rem; color: var(--site-accent); flex-shrink: 0; }
.site-brand:hover { text-decoration: none; }
.site-brand img { height: 42px; width: auto; }
.site-brand__name { font-family: var(--site-font-heading); font-weight: 700; font-size: 1.05rem; white-space: nowrap; }
.site-brand__tagline { display: block; font-size: .74rem; color: var(--site-ink-soft); font-weight: 400; }

.site-nav { display: flex; align-items: center; gap: .25rem; }
.site-nav a { white-space: nowrap; }
.site-nav a {
    padding: .5rem .8rem;
    border-radius: var(--site-radius);
    color: var(--site-accent);
    font-size: .93rem;
    font-weight: 600;
}
.site-nav a:hover { background: rgba(var(--site-primary-rgb), .09); color: var(--site-primary); text-decoration: none; }
.site-nav a.is-active { color: var(--site-primary); }

.site-burger {
    display: none;
    background: none;
    border: 1px solid var(--site-line);
    border-radius: var(--site-radius);
    padding: .45rem .7rem;
    font-size: 1.1rem;
    cursor: pointer;
    color: var(--site-accent);
}

/* Isto ponašanje kao na mobitelu, kad izbornik ne stane (site.js mjeri). */
.site-header.is-compact .site-burger { display: block; }
.site-header.is-compact .site-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    background: #fff;
    border-bottom: 1px solid var(--site-line);
    padding: .5rem 1.25rem 1rem;
    display: none;
}
.site-header.is-compact .site-nav.is-open { display: flex; }
.site-header.is-compact .site-nav a { padding: .7rem .4rem; }

@media (max-width: 860px) {
    .site-burger { display: block; }
    .site-nav {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        background: #fff;
        border-bottom: 1px solid var(--site-line);
        padding: .5rem 1.25rem 1rem;
        display: none;
    }
    .site-nav.is-open { display: flex; }
    .site-nav a { padding: .7rem .4rem; }
}

/* --- Hero --------------------------------------------------------------- */

.site-hero {
    position: relative;
    display: grid;
    place-items: center;
    text-align: center;
    min-height: clamp(320px, 52vh, 560px);
    padding: var(--site-section-gap) 1.25rem;
    color: #fff;
    background: linear-gradient(135deg, var(--site-primary), var(--site-accent));
}
.site-hero__bg {
    position: absolute;
    inset: 0;
    object-fit: cover;
    width: 100%;
    height: 100%;
}
.site-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .6));
}
.site-hero__inner { position: relative; z-index: 2; max-width: 46rem; }
.site-hero h1, .site-hero h2 { color: #fff; text-shadow: 0 2px 18px rgba(0, 0, 0, .35); }
.site-hero p { font-size: 1.15rem; opacity: .95; }

/* --- Gumbi -------------------------------------------------------------- */

.site-btn {
    display: inline-block;
    padding: .7rem 1.4rem;
    border-radius: var(--site-radius);
    background: var(--site-primary);
    color: #fff;
    font-weight: 600;
    border: 1px solid var(--site-primary);
}
.site-btn:hover { text-decoration: none; filter: brightness(1.08); }
.site-btn--ghost { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .7); }
.site-btn--outline { background: transparent; color: var(--site-primary); }

/* --- Rešetke ------------------------------------------------------------ */

.site-grid { display: grid; gap: var(--site-gap); }
.site-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
.site-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
.site-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); }

.site-card {
    border: 1px solid var(--site-line);
    border-radius: var(--site-radius);
    overflow: hidden;
    background: #fff;
    display: flex;
    flex-direction: column;
    transition: transform .18s ease, box-shadow .18s ease;
}
.site-card:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(0, 0, 0, .09); }
/* Okvir za sliku uvijek 16:10, s fotografijom ili bez nje. Fotografija je
   apsolutno pozicionirana pa ne sudjeluje u izračunu visine — inače bi
   aspect-ratio popustio pred njezinom prirodnom visinom (4:3 fotografija dala
   je viši okvir od 3:2, a obje više od kartice bez fotografije). */
.site-card__media {
    display: block;
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--site-bg-soft);
}
.site-card__media img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
/* Kartica bez fotografije: isto mjesto, ispunjeno bojama udruge (i logom). */
.site-card__media--empty {
    display: grid;
    place-items: center;
    background:
        linear-gradient(135deg, rgba(var(--site-primary-rgb), .16), rgba(var(--site-accent-rgb), .10)),
        var(--site-bg-soft);
}
.site-card__media--empty .site-card__ph-logo {
    /* logo u praznom okviru: centriran, u prirodnom omjeru */
    position: static;
    inset: auto;
    width: auto;
    height: auto;
    max-width: 45%;
    max-height: 55%;
    object-fit: contain;
    opacity: .45;
}
.site-card__body { padding: 1.1rem; flex: 1; }
.site-card__meta { font-size: .8rem; color: var(--site-ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.site-card h3 { margin: .35rem 0 .5rem; font-size: 1.12rem; }
.site-card p { margin: 0; color: var(--site-ink-soft); font-size: .95rem; }

/* --- Tekst uz sliku ----------------------------------------------------- */

/* Zadano poravnanje je vrh — inače se kraći stupac "spusti" uz duži.
   Vertikalno centriranje je opcija (tekst uz sliku), ne pravilo. */
.site-split { display: grid; gap: calc(var(--site-gap) * 1.5); align-items: start; }
.site-split--center { align-items: center; }
@media (min-width: 820px) {
    .site-split { grid-template-columns: 1fr 1fr; }
    .site-split--reverse .site-split__media { order: 2; }
    /* Mora doći NAKON dvostupčanog pravila, inače ga ono nadjača. */
    .site-split--single { grid-template-columns: 1fr; }
}
.site-split__media img { border-radius: var(--site-radius); width: 100%; }

/* --- Vremenska crta ----------------------------------------------------- */

.site-timeline { position: relative; padding-left: 2.2rem; }
.site-timeline::before {
    content: "";
    position: absolute;
    left: .55rem;
    top: .4rem;
    bottom: .4rem;
    width: 2px;
    background: linear-gradient(var(--site-primary), rgba(var(--site-primary-rgb), .15));
}
.site-timeline__item { position: relative; padding-bottom: 2rem; }
.site-timeline__item::before {
    content: "";
    position: absolute;
    left: -1.95rem;
    top: .45rem;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    background: var(--site-primary);
    box-shadow: 0 0 0 4px rgba(var(--site-primary-rgb), .18);
}
.site-timeline__year {
    font-family: var(--site-font-heading);
    font-weight: 700;
    color: var(--site-primary);
    font-size: 1.05rem;
}
.site-timeline__item h3 { margin: .15rem 0 .4rem; font-size: 1.1rem; }
.site-timeline__item img { border-radius: var(--site-radius); margin-top: .8rem; }

/* --- Galerija ----------------------------------------------------------- */

.site-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: .6rem; }
.site-gallery a { display: block; aspect-ratio: 4 / 3; border-radius: var(--site-radius); overflow: hidden; }
.site-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.site-gallery a:hover img { transform: scale(1.05); }

.site-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .92);
    display: none;
    place-items: center;
    z-index: 100;
    padding: 1.5rem;
}
.site-lightbox.is-open { display: grid; }
.site-lightbox img { max-width: 100%; max-height: 88vh; object-fit: contain; }
.site-lightbox__close {
    position: absolute;
    top: 1rem;
    right: 1.4rem;
    background: none;
    border: none;
    color: #fff;
    font-size: 2rem;
    cursor: pointer;
    line-height: 1;
}
.site-lightbox__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(255, 255, 255, .12);
    border: none;
    color: #fff;
    font-size: 2rem;
    padding: .4rem .9rem;
    cursor: pointer;
    border-radius: var(--site-radius);
}
.site-lightbox__nav--prev { left: 1rem; }
.site-lightbox__nav--next { right: 1rem; }

/* --- Kontakt i vodstvo -------------------------------------------------- */

.site-contact-img { width: 100%; margin-top: 1rem; border-radius: var(--site-radius); }

.site-person {
    padding: 1.4rem 1.1rem;
    text-align: center;
    background: #fff;
    border: 1px solid var(--site-line);
    border-radius: var(--site-radius);
}
.site-person__photo {
    width: 104px;
    height: 104px;
    margin: 0 auto .8rem;
    border-radius: 50%;
    object-fit: cover;
}
/* Bez fotografije: isti krug s inicijalima, da kartice ostanu jednake. */
.site-person__photo--empty {
    display: grid;
    place-items: center;
    font-family: var(--site-font-heading);
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--site-primary);
    background: rgba(var(--site-primary-rgb), .1);
}
.site-person__role { font-size: .8rem; color: var(--site-ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.site-person h3 { margin: .25rem 0 .5rem; font-size: 1.12rem; }

/* --- Sponzori ----------------------------------------------------------- */

.site-sponsors { display: flex; flex-wrap: wrap; gap: 2rem; align-items: center; justify-content: center; }
.site-sponsors img { max-height: 64px; width: auto; filter: grayscale(1); opacity: .7; transition: all .2s ease; }
.site-sponsors a:hover img { filter: none; opacity: 1; }

/* --- Dokumenti ---------------------------------------------------------- */

.site-doclist { list-style: none; margin: 0; padding: 0; }
.site-doclist li { border-bottom: 1px solid var(--site-line); }
.site-doclist a { display: flex; justify-content: space-between; gap: 1rem; padding: .9rem .2rem; align-items: center; color: var(--site-ink); }
.site-doclist a:hover { color: var(--site-primary); text-decoration: none; }
.site-doclist__meta { font-size: .82rem; color: var(--site-ink-soft); white-space: nowrap; }

/* --- Obrasci ------------------------------------------------------------ */

.site-form { display: grid; gap: 1rem; max-width: 34rem; }
.site-form label { font-weight: 600; font-size: .9rem; display: block; margin-bottom: .3rem; }
.site-form input, .site-form textarea {
    width: 100%;
    padding: .65rem .8rem;
    border: 1px solid var(--site-line);
    border-radius: var(--site-radius);
    font: inherit;
    font-size: .95rem;
}
.site-form input:focus, .site-form textarea:focus {
    outline: 2px solid rgba(var(--site-primary-rgb), .4);
    border-color: var(--site-primary);
}
.site-hp { position: absolute !important; left: -9999px !important; }

.site-note { padding: .9rem 1.1rem; border-radius: var(--site-radius); font-size: .93rem; }
.site-note--ok { background: #e7f6ec; color: #1b5e34; }
.site-note--warn { background: #fdf3e3; color: #8a5b12; }

/* --- Članak ------------------------------------------------------------- */

.site-article { max-width: 46rem; margin: 0 auto; }
.site-article__meta { color: var(--site-ink-soft); font-size: .88rem; margin-bottom: 1.2rem; }
.site-article__body { font-size: 1.05rem; }
.site-article__body img { border-radius: var(--site-radius); margin: 1.5rem 0; }
.site-prose p:first-child { margin-top: 0; }

/* --- Podnožje ----------------------------------------------------------- */

.site-footer {
    background: var(--site-accent);
    color: rgba(255, 255, 255, .78);
    padding: calc(var(--site-section-gap) * .7) 0 1.6rem;
    margin-top: var(--site-section-gap);
}
.site-footer a { color: #fff; }
.site-footer h4 { color: #fff; font-size: 1rem; margin-bottom: .7rem; }
.site-footer__grid { display: grid; gap: var(--site-gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
.site-footer__bottom {
    border-top: 1px solid rgba(255, 255, 255, .16);
    margin-top: 2rem;
    padding-top: 1.1rem;
    font-size: .84rem;
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    justify-content: space-between;
}
.site-social { display: flex; gap: .8rem; font-size: 1.2rem; }

@media print {
    .site-header, .site-footer, .site-burger { display: none; }
}
