/* WebShop: zajednički izgled svih tenanta (ljuska, gumbi, kartica artikla).
   Boje, font i znak loga daje css/themes/{FIRM}.css preko varijabli --ws-*; ovdje su zadane vrijednosti za tenant bez svoje teme. */

:root {
    --ws-font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --ws-chrome: #111315;
    --ws-chrome-2: #1b1e21;
    --ws-chrome-line: rgba(255, 255, 255, .10);
    --ws-chrome-ink: #ffffff;
    --ws-chrome-soft: #d5d9dc;
    --ws-chrome-muted: #b4b8bb;
    --ws-hero-bg: var(--ws-chrome);
    --ws-accent: #0f6cbd;
    --ws-accent-hover: #0b5699;
    --ws-accent-ink: #ffffff;
    --ws-accent-text: #0f6cbd;
    --ws-accent-soft: #e7eff9;
    --ws-accent-on-dark: #7ab2f0;
    --ws-highlight: #ffd000;
    --ws-highlight-ink: #1d1d1d;
    --ws-canvas: #f5f6f7;
    --ws-surface: #ffffff;
    --ws-surface-2: #eef0f2;
    --ws-ink: #16181a;
    --ws-muted: #5b6168;
    --ws-line: #e1e4e7;
    --ws-field: #c6ccd1;
    --ws-ok: #067a55;
    --ws-warn: #b54708;
    --ws-bad: #b42318;
    --ws-heart: #d92d20;
    --ws-radius: 6px;
    --ws-radius-card: 12px;
    --ws-logo-mark: none;
    --ws-logo-mark-size: 0px;
    --ws-wrap: 1280px;
    /* DevExpress Fluent čita font iz tokena tenanta */
    --dxds-font-family-sans-serif: var(--ws-font-sans);
}


/* osnova */
body {
    background: var(--ws-canvas);
    color: var(--ws-ink);
    font-family: var(--ws-font-sans);
    font-size: 15px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

a, a:hover {
    color: var(--ws-accent-text);
}

.ws-header :focus-visible, .ws-footer :focus-visible, .ws-card :focus-visible, .ws-tabbar :focus-visible,
.ws-sheet :focus-visible, .ws-fpanel :focus-visible, .ws-chips :focus-visible, .ws-empty :focus-visible {
    outline: 2px solid var(--ws-accent-text);
    outline-offset: 2px;
}

.ws-header :focus-visible {
    outline-color: var(--ws-accent-on-dark);
}

.ws-ic {
    width: 20px;
    height: 20px;
    flex: none;
}

/* uređaji na dodir: polja od 16 px, jer iOS Safari zumira stranicu kad fokus dobije polje sa sitnijim slovima
   (viewport u _Layout.cshtml nema maximum-scale, pa kupac smije sam zumirati).
   !important jer stari stilovi stranica (npr. <style> u Login.razor) polju zadaju 14 px. */
@media (pointer: coarse) {
    .dxbl-text-edit {
        --dxbl-text-edit-font-size: 16px;
    }

    input:not([type=checkbox]):not([type=radio]), select, textarea {
        font-size: 16px !important;
    }
}

/* okrugli gumb s ikonom (zatvaranje panela i brzog pregleda) */
.ws-iconbtn {
    display: grid;
    place-items: center;
    flex: none;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--ws-ink);
    cursor: pointer;
}

    .ws-iconbtn:hover {
        background: var(--ws-surface-2);
    }


/* ljuska: zaglavlje */
.ws-wrap {
    box-sizing: border-box;
    max-width: var(--ws-wrap);
    margin-inline: auto;
    padding-inline: clamp(16px, 3vw, 32px);
}

.ws-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: var(--ws-chrome);
    color: var(--ws-chrome-ink);
}

.ws-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    column-gap: 12px;
    min-height: 64px;
}

.ws-spacer {
    flex: 1;
}

.ws-logo {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 64px;
    color: var(--ws-chrome-ink);
    font-size: 20px;
    font-weight: 600;
    letter-spacing: .01em;
    text-decoration: none;
    white-space: nowrap;
}

    .ws-logo:hover {
        color: var(--ws-chrome-ink);
    }

.ws-logo-mark {
    flex: none;
    width: var(--ws-logo-mark-size);
    height: var(--ws-logo-mark-size);
    background: var(--ws-logo-mark) center / contain no-repeat;
}

.ws-actions {
    display: flex;
    align-items: center;
    gap: 2px;
}

.ws-act {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 42px;
    padding: 0 10px;
    border: 0;
    border-radius: var(--ws-radius);
    background: transparent;
    color: var(--ws-chrome-ink);
    font: inherit;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}

    .ws-act:hover {
        background: rgba(255, 255, 255, .08);
        color: var(--ws-chrome-ink);
    }

.ws-count {
    position: absolute;
    top: 3px;
    left: 22px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--ws-accent-on-dark);
    color: var(--ws-chrome);
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
}

.ws-lang {
    display: inline-flex;
    align-items: center;
    height: 32px;
    margin-right: 6px;
    border: 1px solid var(--ws-chrome-line);
    border-radius: var(--ws-radius);
}

    .ws-lang button {
        height: 100%;
        padding: 0 9px;
        border: 0;
        background: transparent;
        color: var(--ws-chrome-muted);
        font: inherit;
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
    }

        .ws-lang button:first-child {
            border-radius: 5px 0 0 5px;
        }

        .ws-lang button:last-child {
            border-radius: 0 5px 5px 0;
        }

        .ws-lang button:hover {
            color: var(--ws-chrome-ink);
        }

        .ws-lang button.is-on {
            background: rgba(255, 255, 255, .12);
            color: var(--ws-chrome-ink);
        }

/* odabir tvrtke (OdabirFirme) u zaglavlju */
.ws-buyer {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    max-width: 320px;
    height: 40px;
    padding: 0 4px 0 12px;
    border: 1px solid var(--ws-chrome-line);
    border-radius: var(--ws-radius);
    color: var(--ws-chrome-ink);
}

.ws-buyer-label {
    color: var(--ws-chrome-muted);
    font-size: 13px;
    white-space: nowrap;
}

.ws-buyer .odabirFirmeWidth {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ws-buyer .multytenantchangebtn, .ws-buyer .multytenantchangebtn .dxbl-btn-caption {
    color: var(--ws-chrome-ink);
    font-size: 14px;
}

.ws-buyer .multytenantchangebtn-icon {
    color: var(--ws-chrome-ink);
    opacity: .8;
}

/* ljuska: traka kategorija */
.ws-cats {
    border-top: 1px solid var(--ws-chrome-line);
    background: var(--ws-chrome-2);
}

.ws-cats-in {
    display: flex;
    gap: 4px;
    overflow-x: auto;
    scrollbar-width: none;
}

    .ws-cats-in::-webkit-scrollbar {
        display: none;
    }

.ws-cat {
    display: flex;
    align-items: center;
    min-height: 46px;
    padding: 0 12px;
    border-bottom: 2px solid transparent;
    color: var(--ws-chrome-muted);
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
}

    .ws-cat:first-child {
        margin-left: -12px;
    }

    .ws-cat:hover {
        color: var(--ws-chrome-ink);
    }

    .ws-cat.active {
        border-bottom-color: var(--ws-accent-on-dark);
        color: var(--ws-chrome-ink);
    }


/* ljuska: sadržaj stranice */
.ws-page {
    padding-block: 24px 56px;
}

.ws-page-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 16px;
    margin-bottom: 16px;
}

.ws-h1 {
    margin: 0 0 16px;
    font-size: clamp(24px, 2.6vw, 32px);
    font-weight: 600;
    line-height: 1.15;
}

.ws-page-head .ws-h1 {
    margin: 0;
}

/* HTML iz baze (početna, opis artikla): tekst do 78 znakova u retku, blokovi (ws-hero, ws-usp) preko cijele širine */
.ws-prose > p, .ws-prose > ul, .ws-prose > ol, .ws-prose > div, .ws-prose > table,
.ws-prose > h1, .ws-prose > h2, .ws-prose > h3, .ws-prose > h4 {
    max-width: 78ch;
}

    .ws-prose h1, .ws-prose h2, .ws-prose h3 {
        margin: 1.1em 0 .5em;
        font-weight: 600;
        line-height: 1.2;
    }

    .ws-prose ul, .ws-prose ol {
        padding-left: 1.25em;
    }

    .ws-prose li + li {
        margin-top: .35em;
    }

    .ws-prose img {
        max-width: 100%;
        height: auto;
    }


/* ljuska: podnožje */
.ws-footer {
    background: var(--ws-chrome);
    color: var(--ws-chrome-muted);
    font-size: 14px;
}

.ws-foot {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) repeat(2, minmax(0, 1fr));
    gap: 28px;
    padding-block: 36px;
}

    .ws-foot .ws-logo {
        min-height: 0;
        font-size: 19px;
    }

    .ws-foot p {
        margin: 12px 0 0;
    }

    .ws-foot ul {
        display: grid;
        gap: 6px;
        margin: 0;
        padding: 0;
        list-style: none;
    }

.ws-foot-h {
    margin: 0 0 10px;
    color: var(--ws-chrome-ink);
    font-size: 14px;
    font-weight: 600;
}

.ws-foot a, .ws-foot-base a {
    color: var(--ws-chrome-muted);
    text-decoration: none;
}

    .ws-foot a:hover, .ws-foot-base a:hover {
        color: var(--ws-chrome-ink);
    }

.ws-foot .ws-logo, .ws-foot .ws-logo:hover {
    color: var(--ws-chrome-ink);
}

.ws-foot-base {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 8px;
    padding-block: 14px;
    border-top: 1px solid var(--ws-chrome-line);
    font-size: 12px;
}


/* gumbi */
.ws-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 44px;
    padding: 0 16px;
    border: 1px solid transparent;
    border-radius: var(--ws-radius);
    font: inherit;
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: background-color .15s, border-color .15s, color .15s;
}

    .ws-btn .ws-ic {
        width: 18px;
        height: 18px;
    }

.ws-btn--cta {
    background: var(--ws-accent);
    color: var(--ws-accent-ink);
}

    .ws-btn--cta:hover {
        background: var(--ws-accent-hover);
        color: var(--ws-accent-ink);
    }

    .ws-btn--cta.is-in {
        background: var(--ws-accent-soft);
        color: var(--ws-accent-text);
    }

.ws-btn--block {
    width: 100%;
}


/* mreža kartica: najmanje 240 px, na uskom ekranu dva stupca */
.ws-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(240px, calc(50% - 8px)), 1fr));
    gap: 16px;
    padding-bottom: 16px;
}

/* kartica artikla */
.ws-card {
    container-type: inline-size;
    display: flex;
    flex-direction: column;
    min-width: 0;
    height: 100%;
    overflow: hidden;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
    transition: border-color .15s, box-shadow .15s;
}

    .ws-card:hover {
        border-color: var(--ws-field);
        box-shadow: 0 6px 18px rgba(16, 24, 20, .07);
    }

/* visinu medija daje samo omjer 1:1, pa okomita fotografija ne povisuje karticu */
.ws-card-media {
    position: relative;
    aspect-ratio: 1 / 1;
    min-height: 0;
    overflow: hidden;
    background: var(--ws-surface-2);
}

.ws-card-img {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    box-sizing: border-box;
    padding: 8%;
    border: 0;
    background: transparent;
    cursor: pointer;
}

    /* bijela pozadina fotografije stapa se s podlogom kartice */
    .ws-card-img img {
        display: block;
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
        mix-blend-mode: multiply;
    }

.ws-card-img--empty img {
    width: 64%;
    opacity: .7;
}

/* slike s poslužitelja (ws-pic, SlikaController): do učitavanja ostaje siva podloga sa spinnerom u boji brenda, koji se pokaže tek nakon 0,2 s,
   pa slika iz memorije preglednika ne trepne; kad slika stigne, skript u _Layout.cshtml doda is-loaded i slika se lagano pojavi,
   a kad je nema (is-missing), ostaje oznaka "nema slike" */
img.ws-pic {
    opacity: 0;
    transition: opacity .2s;
}

    img.ws-pic.is-loaded {
        opacity: 1;
    }

        img.ws-pic.is-missing.is-loaded {
            opacity: .7;
        }

.ws-card-img img.ws-pic.is-missing {
    width: 64%;
}

:is(.ws-card-img, .ws-qv-main, .ws-line-media, .ws-sumline-media):has(> img.ws-pic:not(.is-loaded))::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    box-sizing: border-box;
    width: var(--ws-spin, 28px);
    height: var(--ws-spin, 28px);
    margin: calc(var(--ws-spin, 28px) / -2) 0 0 calc(var(--ws-spin, 28px) / -2);
    border: var(--ws-spin-w, 3px) solid var(--ws-line);
    border-top-color: var(--ws-accent);
    border-radius: 50%;
    opacity: 0;
    animation: ws-spin .8s linear infinite, ws-pic-wait 0s .2s forwards;
}

@keyframes ws-pic-wait {
    to {
        opacity: 1;
    }
}

/* i uz smanjene animacije (npr. u Windowsima isključeno "Prikaži animacije", često na udaljenoj radnoj površini) spinner se vrti, samo sporije:
   to je mali pokazatelj učitavanja, a kolut koji stoji izgleda kao da je zaglavio */
@media (prefers-reduced-motion: reduce) {
    :is(.ws-card-img, .ws-qv-main, .ws-line-media, .ws-sumline-media):has(> img.ws-pic:not(.is-loaded))::after {
        animation: ws-spin 1.6s linear infinite, ws-pic-wait 0s .2s forwards;
    }
}

.ws-flag {
    position: absolute;
    top: 10px;
    left: 10px;
    max-width: calc(100% - 64px);
    overflow: hidden;
    padding: 4px 8px;
    border-radius: 4px;
    background: var(--ws-highlight);
    color: var(--ws-highlight-ink);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .03em;
    text-overflow: ellipsis;
    text-transform: uppercase;
    white-space: nowrap;
}

.ws-wish {
    position: absolute;
    top: 10px;
    right: 10px;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    padding: 0;
    border: 1px solid var(--ws-line);
    border-radius: 50%;
    background: var(--ws-surface);
    color: var(--ws-ink);
    cursor: pointer;
}

    .ws-wish .ws-ic {
        width: 19px;
        height: 19px;
    }

    .ws-wish.is-on {
        color: var(--ws-heart);
    }

        .ws-wish.is-on .ws-ic path {
            fill: currentColor;
        }

.ws-card-body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 8px;
    padding: 14px 14px 16px;
}

/* naslov u dva retka; poveznica na stranicu artikla (ws-card-link) ga samo omata */
.ws-card-title {
    display: -webkit-box;
    min-height: 2.6em;
    overflow: hidden;
    color: var(--ws-ink);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.ws-card-link {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}

    .ws-card-link:hover .ws-card-title {
        color: var(--ws-accent-text);
    }

.ws-stock {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--ws-ink);
    font-size: 13px;
    font-weight: 500;
}

    .ws-stock::before {
        content: "";
        flex: none;
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: currentColor;
    }

.ws-stock--ok {
    color: var(--ws-ok);
}

.ws-stock--warn {
    color: var(--ws-warn);
}

.ws-stock--bad {
    color: var(--ws-bad);
}

.ws-price {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 10px;
    margin-top: auto;
    font-variant-numeric: tabular-nums;
}

    .ws-price b {
        color: var(--ws-ink);
        font-size: 20px;
        font-weight: 700;
    }

    .ws-price s {
        color: var(--ws-muted);
        font-size: 14px;
    }

/* oznaka uz cijenu (ItemOffer, CartItem): "Vaša cijena" kad vrijedi cjenik kupca ili kupon, u stavci košarice i "Akcija" */
.ws-price-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
    font-size: 12px;
    font-weight: 600;
}

    .ws-price-tag .ws-ic {
        width: 14px;
        height: 14px;
    }

.ws-price-tag--action {
    background: var(--ws-highlight);
    color: var(--ws-highlight-ink);
}

/* sidrena cijena i najniža cijena u 30 dana: dva retka su uvijek rezervirana */
.ws-pnotes {
    display: grid;
    align-content: start;
    gap: 1px;
    min-height: calc(2 * 1.35em);
    color: var(--ws-muted);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    line-height: 1.35;
}

.ws-card-actions {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 8px;
}

    .ws-card-actions .ws-btn {
        min-width: 0;
        padding: 0 10px;
    }

        .ws-card-actions .ws-btn span {
            overflow: hidden;
            text-overflow: ellipsis;
        }

.ws-stepper {
    display: inline-flex;
    align-items: center;
    height: 44px;
    overflow: hidden;
    border: 1px solid var(--ws-field);
    border-radius: var(--ws-radius);
    background: var(--ws-surface);
}

    .ws-stepper button {
        display: grid;
        place-items: center;
        width: 34px;
        height: 100%;
        padding: 0;
        border: 0;
        background: transparent;
        color: var(--ws-ink);
        cursor: pointer;
    }

        .ws-stepper button:hover {
            background: var(--ws-surface-2);
        }

    .ws-stepper .ws-ic {
        width: 16px;
        height: 16px;
    }

    .ws-stepper input {
        width: 34px;
        height: 100%;
        padding: 0;
        border: 0;
        background: transparent;
        color: var(--ws-ink);
        font: inherit;
        font-size: 16px;
        font-weight: 600;
        text-align: center;
        -moz-appearance: textfield;
        appearance: textfield;
    }

        .ws-stepper input::-webkit-outer-spin-button, .ws-stepper input::-webkit-inner-spin-button {
            margin: 0;
            -webkit-appearance: none;
        }

    .ws-stepper :focus-visible {
        outline-offset: -2px;
    }

/* uska kartica (dva stupca na mobitelu): bez koraka količine, gumb preko cijele širine */
@container (max-width: 270px) {
    .ws-card-body {
        gap: 6px;
        padding: 10px 10px 12px;
    }

    .ws-card-title {
        font-size: 14px;
    }

    .ws-stock {
        font-size: 12px;
    }

    .ws-price b {
        font-size: 17px;
    }

    .ws-card-actions {
        grid-template-columns: minmax(0, 1fr);
    }

        .ws-card-actions .ws-stepper {
            display: none;
        }

        .ws-card-actions .ws-btn {
            height: 40px;
            font-size: 14px;
        }

    .ws-wish {
        top: 8px;
        right: 8px;
        width: 34px;
        height: 34px;
    }
}

/* obrisi kartica dok se artikli učitavaju (GridSkeleton): visina je približno kao kod prave kartice */
.ws-skeleton, .ws-skeleton:hover {
    border-color: var(--ws-line);
    box-shadow: none;
}

/* ws-shimmer: ista podloga za blok bez vlastite visine (npr. slika na stranici artikla) */
.ws-skel, .ws-shimmer, .ws-skeleton .ws-card-media {
    background: linear-gradient(90deg, var(--ws-surface-2) 30%, var(--ws-canvas) 50%, var(--ws-surface-2) 70%);
    background-size: 300% 100%;
    animation: ws-shimmer 1.4s ease-in-out infinite;
}

.ws-skel {
    display: block;
    height: 14px;
    border-radius: 4px;
}

.ws-skel--title {
    height: 2.6em;
}

.ws-skel--short {
    width: 45%;
}

.ws-skel--price {
    width: 50%;
    height: 24px;
    margin-top: auto;
}

.ws-skel--notes {
    width: 75%;
    height: calc(2 * 1.35 * 12px);
}

.ws-skel--btn {
    height: 44px;
    border-radius: var(--ws-radius);
}

@keyframes ws-shimmer {
    from {
        background-position: 100% 0;
    }

    to {
        background-position: 0 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ws-skel, .ws-shimmer, .ws-skeleton .ws-card-media {
        animation: none;
    }

    .ws-spin {
        animation-duration: 2.4s;
    }
}

/* tekst samo za čitač ekrana (npr. "Učitavanje…" uz obrise kartica) */
.ws-sr {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}


/* katalog (Ponuda): filtri lijevo, artikli desno */
.ws-catalog {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 28px;
    align-items: start;
}

.ws-catalog--nofilters {
    grid-template-columns: minmax(0, 1fr);
}

.ws-catalog-main {
    min-width: 0;
}

.ws-fpanel {
    position: sticky;
    top: 126px;
    max-height: calc(100vh - 150px);
    overflow-y: auto;
    padding: 4px 18px 14px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

.ws-fpanel-head, .ws-fpanel-foot, .ws-fpanel-scrim, .ws-filter-toggle {
    display: none;
}

.ws-fgroup {
    min-width: 0;
    margin: 0;
    padding: 12px 0 6px;
    border: 0;
    border-bottom: 1px solid var(--ws-line);
}

    .ws-fgroup:last-child {
        border-bottom: 0;
    }

    .ws-fgroup legend {
        float: none;
        width: auto;
        margin: 0 0 4px;
        padding: 0;
        font-size: 14px;
        font-weight: 600;
        line-height: 1.4;
    }

.ws-check {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    font-size: 14px;
    cursor: pointer;
}

    .ws-check input {
        display: grid;
        place-items: center;
        flex: none;
        width: 18px;
        height: 18px;
        margin: 0;
        border: 1.5px solid var(--ws-field);
        border-radius: 4px;
        background: var(--ws-surface);
        cursor: pointer;
        appearance: none;
    }

        .ws-check input:checked {
            border-color: var(--ws-accent-text);
            background: var(--ws-accent-text);
        }

            .ws-check input:checked::after {
                content: "";
                width: 9px;
                height: 5px;
                margin-top: -2px;
                border-bottom: 2px solid #ffffff;
                border-left: 2px solid #ffffff;
                transform: rotate(-45deg);
            }

.ws-chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
}

.ws-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 8px 0 12px;
    border: 0;
    border-radius: 999px;
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}

    .ws-chip .ws-ic {
        width: 14px;
        height: 14px;
    }

.ws-chip-clear {
    padding: 0 4px;
    border: 0;
    background: none;
    color: var(--ws-muted);
    font: inherit;
    font-size: 13px;
    text-decoration: underline;
    cursor: pointer;
}

.ws-more {
    display: flex;
    justify-content: center;
    padding-block: 8px 16px;
}

/* prazno stanje (nema artikala, prazna lista želja) */
.ws-empty {
    display: grid;
    justify-items: center;
    gap: 12px;
    padding: 48px 16px;
    border: 1px dashed var(--ws-field);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
    color: var(--ws-muted);
    text-align: center;
}

    .ws-empty > .ws-ic {
        width: 32px;
        height: 32px;
    }

    .ws-empty p {
        margin: 0;
    }

.ws-section {
    margin: 8px 0 32px;
}

.ws-h2 {
    margin: 0 0 16px;
    font-size: clamp(20px, 2.2vw, 26px);
    font-weight: 600;
    line-height: 1.2;
}


/* galerija artikla (ItemGallery na stranici artikla); klase ws-qv-* su ostale iz nekadašnjeg brzog pregleda */
.ws-qv-main {
    position: relative;
    display: grid;
    place-items: center;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface-2);
    /* vodoravno povlačenje prstom lista slike (ItemGallery); okomito pomicanje i zumiranje ostaju pregledniku */
    touch-action: pan-y pinch-zoom;
    --ws-spin: 36px;
}

    .ws-qv-main img {
        max-width: 92%;
        max-height: 92%;
        object-fit: contain;
        mix-blend-mode: multiply;
    }

        /* kad slika stigne, ulazi kratkim pomakom sa strane s koje dolazi (is-back: prethodna, slijeva) */
        .ws-qv-main img.ws-pic.is-loaded {
            animation: ws-pic-in .22s ease-out;
        }

        .ws-qv-main img.ws-pic.is-loaded.is-back {
            animation-name: ws-pic-in-back;
        }

        .ws-qv-main img.ws-qv-empty {
            width: 60%;
            opacity: .7;
        }

/* prethodna i sljedeća slika galerije: samo se učitavaju unaprijed */
.ws-qv-pre {
    display: none;
}

@keyframes ws-pic-in {
    from {
        opacity: .4;
        transform: translateX(24px);
    }
}

@keyframes ws-pic-in-back {
    from {
        opacity: .4;
        transform: translateX(-24px);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ws-qv-main img.ws-pic.is-loaded, .ws-qv-main img.ws-pic.is-loaded.is-back {
        animation: none;
    }
}

.ws-qv-nav {
    position: absolute;
    top: 50%;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid var(--ws-line);
    border-radius: 50%;
    background: var(--ws-surface);
    color: var(--ws-ink);
    cursor: pointer;
    transform: translateY(-50%);
}

.ws-qv-prev {
    left: 10px;
}

.ws-qv-next {
    right: 10px;
}

.ws-qv-dots {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding-top: 10px;
}

    .ws-qv-dots button {
        width: 8px;
        height: 8px;
        padding: 0;
        border: 0;
        border-radius: 4px;
        background: var(--ws-field);
        cursor: pointer;
    }

        .ws-qv-dots button.is-on {
            width: 22px;
            background: var(--ws-accent-text);
        }

.ws-price--lg b {
    font-size: 28px;
}

.ws-pnotes--lg {
    min-height: 0;
    font-size: 13px;
}

.ws-flag--inline {
    position: static;
    align-self: flex-start;
    max-width: none;
}


/* stranica artikla (ItemPage): galerija lijevo, naziv, cijena i kupnja desno; opis i povezani artikli ispod.
   Galerija je ItemGallery (klase ws-qv-*). */
/* galerija najviše 460 px (na užem ekranu 45 % širine), ostatak je za naziv, cijenu i kupnju */
.ws-pdp {
    display: grid;
    grid-template-columns: minmax(0, min(460px, 45%)) minmax(0, 1fr);
    gap: clamp(20px, 4vw, 48px);
    align-items: start;
    margin-bottom: 32px;
}

    .ws-pdp-gallery .ws-qv-main {
        border: 1px solid var(--ws-line);
    }

.ws-pdp-info {
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-width: 0;
}

    .ws-pdp-info .ws-price {
        margin-top: 4px;
    }

.ws-pdp-title {
    margin: 0;
    overflow-wrap: anywhere;
}

.ws-pdp-buy {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 8px;
    max-width: 440px;
    margin-top: 8px;
}

.ws-pdp-wish {
    align-self: flex-start;
}

    .ws-pdp-wish.is-on .ws-ic {
        color: var(--ws-heart);
    }

        .ws-pdp-wish.is-on .ws-ic path {
            fill: currentColor;
        }

.ws-pdp-skel {
    display: grid;
    gap: 12px;
    max-width: 440px;
}

@media (max-width: 720px) {
    .ws-pdp {
        grid-template-columns: minmax(0, 1fr);
    }

    .ws-pdp-gallery {
        justify-self: center;
        width: min(100%, 460px);
    }

    .ws-pdp-buy, .ws-pdp-skel {
        max-width: none;
    }
}

/* vrtuljak kartica (Shared/ItemCarousel: "Možda vas zanima" na stranici artikla, najprodavaniji na početnoj): jedan red koji se pomiče
   vodoravno i staje na početku kartice.
   Kartica je široka kao u mreži (najmanje 240 px, na širokom ekranu stanu četiri); strelice su samo na računalu i gase se na početku
   i kraju reda (data-start, data-end postavlja skripta wsCarousel u _Layout.cshtml), a kad sve kartice stanu, nema ih.
   Red je 12 px širi sa svake strane da sjena kartice ne bude odrezana; na mobitelu dopire do ruba ekrana, pa se vidi dio sljedeće kartice. */
.ws-carousel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

    .ws-carousel-head .ws-h1, .ws-carousel-head .ws-h2 {
        margin: 0;
    }

.ws-carousel-nav {
    display: flex;
    flex: none;
    gap: 8px;
}

    .ws-carousel-nav button {
        display: grid;
        place-items: center;
        width: 40px;
        height: 40px;
        padding: 0;
        border: 1px solid var(--ws-line);
        border-radius: 50%;
        background: var(--ws-surface);
        color: var(--ws-ink);
        cursor: pointer;
        transition: opacity .15s;
    }

        .ws-carousel-nav button:hover {
            border-color: var(--ws-field);
            background: var(--ws-surface-2);
        }

        .ws-carousel-nav button:focus-visible {
            outline: 2px solid var(--ws-accent-text);
            outline-offset: 2px;
        }

.ws-carousel[data-start] .ws-carousel-prev, .ws-carousel[data-end] .ws-carousel-next {
    opacity: .35;
    pointer-events: none;
}

.ws-carousel[data-start][data-end] .ws-carousel-nav {
    visibility: hidden;
}

.ws-carousel-track {
    display: grid;
    grid-auto-columns: max(240px, calc((100% - 3 * 16px) / 4));
    grid-auto-flow: column;
    gap: 16px;
    margin-inline: -12px;
    padding: 4px 12px 20px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-padding-inline: 12px;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
}

    .ws-carousel-track::-webkit-scrollbar {
        display: none;
    }

    .ws-carousel-track > * {
        scroll-snap-align: start;
    }

/* razmak do ruba ekrana je isti kao u .ws-wrap */
@media (max-width: 720px) {
    .ws-carousel-nav {
        display: none;
    }

    .ws-carousel-track {
        grid-auto-columns: calc((100% - 12px) / 2.2);
        gap: 12px;
        margin-inline: calc(-1 * clamp(16px, 3vw, 32px));
        padding-inline: clamp(16px, 3vw, 32px);
        scroll-padding-inline: clamp(16px, 3vw, 32px);
    }
}


/* blokovi za HTML iz baze (početna): section.ws-hero, ul.ws-usp (i ws-usp--wide), ul.ws-features, ol.ws-howto, div.ws-faq, section.ws-cta-end;
   primjeri u docs/redesign/pocetna-SPARK.html i pocetna-RADKAP.html */
.ws-prose .ws-hero {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
    gap: 24px 40px;
    align-items: center;
    margin: 0 0 20px;
    padding: clamp(24px, 4vw, 56px);
    border-radius: var(--ws-radius-card);
    background: var(--ws-hero-bg);
    color: var(--ws-chrome-ink);
}

    .ws-prose .ws-hero h1, .ws-prose .ws-hero h2 {
        max-width: 18ch;
        margin: 8px 0 14px;
        color: var(--ws-chrome-ink);
        font-size: clamp(28px, 4vw, 46px);
        font-weight: 700;
        letter-spacing: -.01em;
        line-height: 1.05;
    }

    .ws-prose .ws-hero p {
        max-width: 50ch;
        margin: 0 0 18px;
        color: var(--ws-chrome-soft);
        font-size: 16px;
    }

    .ws-prose .ws-hero img {
        display: block;
        max-width: 100%;
        height: auto;
        margin-inline: auto;
    }

    .ws-prose .ws-hero .ws-btn {
        margin: 4px 8px 4px 0;
    }

.ws-kicker {
    color: var(--ws-accent-on-dark);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.ws-btn--ghost, .ws-btn--ghost:hover {
    border-color: rgba(255, 255, 255, .32);
    background: transparent;
    color: var(--ws-chrome-ink);
}

    .ws-btn--ghost:hover {
        background: rgba(255, 255, 255, .08);
    }

.ws-prose .ws-usp {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
    gap: 12px;
    max-width: none;
    margin: 0 0 28px;
    padding: 0;
    list-style: none;
}

    .ws-prose .ws-usp li {
        margin: 0;
        padding: 16px;
        border: 1px solid var(--ws-line);
        border-radius: var(--ws-radius-card);
        background: var(--ws-surface);
        color: var(--ws-muted);
        font-size: 14px;
    }

    .ws-prose .ws-usp > li > strong, .ws-prose .ws-usp > li > b {
        display: block;
        color: var(--ws-ink);
        font-size: 15px;
    }

.ws-prose .ws-features {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: 10px 28px;
    max-width: none;
    padding: 0;
    list-style: none;
}

    .ws-prose .ws-features li {
        position: relative;
        margin: 0;
        padding-left: 28px;
    }

        .ws-prose .ws-features li::before {
            content: "";
            position: absolute;
            top: .2em;
            left: 0;
            width: 18px;
            height: 18px;
            background: var(--ws-accent-text);
            -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
        }

/* kartice s naslovom i duljim opisom (npr. prednosti proizvoda): kao ws-usp, ali najviše tri u redu */
.ws-prose .ws-usp--wide {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
}

    .ws-prose .ws-usp--wide li {
        padding: 18px;
    }

    .ws-prose .ws-usp--wide > li > strong {
        margin-bottom: 6px;
    }

.ws-prose .ws-usp p {
    margin: 0;
}

.ws-prose .ws-usp a {
    display: inline-block;
    margin-top: 8px;
    font-weight: 600;
}

/* koraci kupnje s rednim brojem u boji naglaska */
.ws-prose .ws-howto {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
    gap: 12px;
    max-width: none;
    margin: 0 0 20px;
    padding: 0;
    list-style: none;
    counter-reset: ws-howto;
}

    .ws-prose .ws-howto li {
        margin: 0;
        padding: 18px;
        border: 1px solid var(--ws-line);
        border-radius: var(--ws-radius-card);
        background: var(--ws-surface);
        color: var(--ws-muted);
        font-size: 14px;
        counter-increment: ws-howto;
    }

        .ws-prose .ws-howto li::before {
            content: counter(ws-howto);
            display: grid;
            place-items: center;
            width: 36px;
            height: 36px;
            margin-bottom: 10px;
            border-radius: 50%;
            background: var(--ws-accent);
            color: var(--ws-accent-ink);
            font-size: 16px;
            font-weight: 700;
        }

    .ws-prose .ws-howto > li > strong {
        display: block;
        color: var(--ws-ink);
        font-size: 15px;
    }

/* pitanja i odgovori kao harmonika (details/summary, bez JavaScripta) */
.ws-prose .ws-faq {
    margin: 0 0 28px;
    border-top: 1px solid var(--ws-line);
}

    .ws-prose .ws-faq details {
        border-bottom: 1px solid var(--ws-line);
    }

    .ws-prose .ws-faq summary {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 14px 2px;
        color: var(--ws-ink);
        font-weight: 600;
        list-style: none;
        cursor: pointer;
    }

        .ws-prose .ws-faq summary::-webkit-details-marker {
            display: none;
        }

        .ws-prose .ws-faq summary::after {
            content: "";
            flex: none;
            width: 18px;
            height: 18px;
            background: var(--ws-muted);
            -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
            transition: transform .15s;
        }

        .ws-prose .ws-faq summary:hover {
            color: var(--ws-accent-text);
        }

        .ws-prose .ws-faq summary:focus-visible {
            outline: 2px solid var(--ws-accent-text);
            outline-offset: 2px;
        }

    .ws-prose .ws-faq details[open] summary::after {
        transform: rotate(180deg);
    }

    .ws-prose .ws-faq details p {
        margin: 0 0 16px;
        color: var(--ws-muted);
    }

/* završni poziv na kupnju */
.ws-prose .ws-cta-end {
    display: grid;
    justify-items: center;
    gap: 10px;
    margin: 8px 0 28px;
    padding: clamp(24px, 4vw, 40px) 20px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
    text-align: center;
}

    .ws-prose .ws-cta-end h2 {
        margin: 0;
    }

    .ws-prose .ws-cta-end p {
        margin: 0;
        color: var(--ws-muted);
    }

    .ws-prose .ws-cta-end .ws-btn {
        margin: 8px 0;
    }

@media (prefers-reduced-motion: reduce) {
    .ws-prose .ws-faq summary::after {
        transition: none;
    }
}


/* košarica, naplata i narudžba (CartList, CheckOutGuest, CheckOut, PayCardOK, OrderDet) */
:root {
    --ws-sticky-top: 127px;
}

    /* naplata ima zaglavlje bez trake kategorija (SiteHeader), pa je sažetak bliže vrhu */
    :root:has(.ws-header--focus) {
        --ws-sticky-top: 80px;
    }

.ws-btn--line {
    border-color: var(--ws-field);
    background: var(--ws-surface);
    color: var(--ws-ink);
}

    .ws-btn--line:hover {
        border-color: var(--ws-ink);
        background: var(--ws-surface);
        color: var(--ws-ink);
    }

.ws-btn--danger, .ws-btn--danger:hover {
    color: var(--ws-bad);
}

    .ws-btn--danger:hover {
        border-color: var(--ws-bad);
    }

.ws-btn--lg {
    height: 50px;
    padding: 0 22px;
    font-size: 16px;
}

.ws-btn--icon {
    flex: none;
    width: 40px;
    height: auto;
    padding: 0;
}

.ws-btn:disabled {
    cursor: not-allowed;
    opacity: .5;
}

.ws-linkbtn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--ws-accent-text);
    font: inherit;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

    .ws-linkbtn:hover {
        text-decoration: underline;
    }

    .ws-linkbtn .ws-ic {
        width: 18px;
        height: 18px;
    }

.ws-iconbtn--sm {
    width: 32px;
    height: 32px;
}

    .ws-iconbtn--sm .ws-ic {
        width: 16px;
        height: 16px;
    }

.ws-input {
    box-sizing: border-box;
    min-width: 0;
    height: 44px;
    padding: 0 12px;
    border: 1px solid var(--ws-field);
    border-radius: var(--ws-radius);
    background: var(--ws-surface);
    color: var(--ws-ink);
    font: inherit;
    font-size: 15px;
}

    .ws-input:focus {
        border-color: var(--ws-accent-text);
        outline: 1px solid var(--ws-accent-text);
    }

.ws-stepper button:disabled {
    background: transparent;
    color: var(--ws-field);
    cursor: default;
}

.ws-panel {
    padding: 24px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

.ws-panel-title {
    margin: 0 0 18px;
    font-size: 19px;
    font-weight: 600;
    line-height: 1.25;
}

/* ključ i vrijednost (podaci kupca, dostava, upute za uplatu) */
.ws-kv {
    display: grid;
    gap: 8px;
    margin: 0;
    font-size: 14px;
}

    .ws-kv div {
        display: grid;
        grid-template-columns: minmax(110px, 160px) minmax(0, 1fr);
        gap: 12px;
    }

    .ws-kv dt {
        color: var(--ws-muted);
        font-weight: 400;
    }

    .ws-kv dd {
        margin: 0;
        overflow-wrap: anywhere;
    }

.ws-kv--stack div {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
}

/* stavke košarice i narudžbe */
.ws-cart, .ws-co {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 28px;
    align-items: start;
}

.ws-cart-main {
    min-width: 0;
}

.ws-lines {
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

.ws-lines--plain {
    border: 0;
    border-radius: 0;
    background: transparent;
}

.ws-line {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr) auto minmax(110px, auto);
    grid-template-areas: "media info qty total";
    gap: 8px 18px;
    align-items: center;
    padding: 16px 18px;
}

    .ws-line + .ws-line {
        border-top: 1px solid var(--ws-line);
    }

.ws-lines--plain .ws-line {
    padding-inline: 0;
}

/* stavka narudžbe samo za čitanje (OrderDet): bez količine */
.ws-line--ro {
    grid-template-columns: 72px minmax(0, 1fr) auto;
    grid-template-areas: "media info total";
}

.ws-line-media {
    --ws-spin: 22px;
    --ws-spin-w: 2px;
    position: relative;
    grid-area: media;
    width: 72px;
    height: 72px;
    overflow: hidden;
    border: 1px solid var(--ws-line);
    border-radius: 8px;
    background: #ffffff;
}

    .ws-line-media img {
        width: 100%;
        height: 100%;
        object-fit: contain;
        mix-blend-mode: multiply;
    }

.ws-line-info {
    grid-area: info;
    display: grid;
    justify-items: start;
    gap: 4px;
    min-width: 0;
}

.ws-line-title {
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
}

/* u košarici naziv vodi na stranicu artikla */
a.ws-line-title {
    color: var(--ws-ink);
    text-decoration: none;
}

    a.ws-line-title:hover {
        color: var(--ws-accent-text);
        text-decoration: underline;
    }

.ws-line-warn {
    color: var(--ws-warn);
    font-size: 13px;
}

.ws-line-sub {
    color: var(--ws-muted);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

.ws-line .ws-price {
    margin-top: 2px;
}

    .ws-line .ws-price b {
        font-size: 15px;
        font-weight: 600;
    }

    .ws-line .ws-price s {
        font-size: 13px;
    }

/* obavezni retci uz cijenu u stavci: bez rezerviranog prostora */
.ws-pnotes--auto {
    min-height: 0;
}

    .ws-pnotes--auto:empty {
        display: none;
    }

.ws-line-qty {
    grid-area: qty;
    display: flex;
    align-items: center;
    gap: 6px;
}

    .ws-line-qty .ws-stepper {
        height: 40px;
    }

.ws-line-remove {
    color: var(--ws-muted);
}

    .ws-line-remove:hover {
        color: var(--ws-bad);
    }

.ws-line-total {
    grid-area: total;
    font-size: 16px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: right;
    white-space: nowrap;
}

.ws-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 16px;
    color: var(--ws-accent-text);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
}

    .ws-back:hover {
        text-decoration: underline;
    }

    .ws-back .ws-ic {
        width: 18px;
        height: 18px;
    }

/* sažetak košarice i naplate */
.ws-summary {
    position: sticky;
    top: var(--ws-sticky-top);
    display: grid;
    gap: 16px;
    padding: 20px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

.ws-summary-title {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
}

.ws-summary-toggle {
    display: none;
}

.ws-summary-body {
    display: grid;
    gap: 14px;
}

.ws-totals {
    display: grid;
    gap: 8px;
    margin: 0;
    font-size: 14px;
    font-variant-numeric: tabular-nums;
}

    .ws-totals div {
        display: flex;
        justify-content: space-between;
        gap: 12px;
    }

    .ws-totals dt {
        color: var(--ws-muted);
        font-weight: 400;
    }

    .ws-totals dd {
        margin: 0;
        font-weight: 600;
        text-align: right;
    }

    .ws-totals .ws-totals-sum {
        align-items: baseline;
        margin-top: 4px;
        padding-top: 12px;
        border-top: 1px solid var(--ws-line);
    }

        .ws-totals .ws-totals-sum dt {
            color: var(--ws-ink);
            font-size: 16px;
            font-weight: 600;
        }

        .ws-totals .ws-totals-sum dd {
            font-size: 20px;
            font-weight: 700;
        }

.ws-panel > .ws-totals {
    margin-top: 16px;
}

.ws-sumlines {
    display: grid;
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}

    .ws-sumlines li {
        display: grid;
        grid-template-columns: 48px minmax(0, 1fr) auto;
        gap: 12px;
        align-items: center;
        font-size: 14px;
    }

.ws-sumline-media {
    --ws-spin: 16px;
    --ws-spin-w: 2px;
    position: relative;
    width: 48px;
    height: 48px;
    overflow: hidden;
    border: 1px solid var(--ws-line);
    border-radius: 8px;
    background: #ffffff;
}

    .ws-sumline-media img {
        width: 100%;
        height: 100%;
        object-fit: contain;
        mix-blend-mode: multiply;
    }

.ws-sumline-title {
    line-height: 1.3;
}

    .ws-sumline-title small {
        color: var(--ws-muted);
        font-size: 13px;
        white-space: nowrap;
    }

.ws-sumline-total {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.ws-sumcoupon {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    color: var(--ws-accent-text);
    font-size: 14px;
}

    .ws-sumcoupon .ws-ic {
        width: 16px;
        height: 16px;
    }

/* kupon (CouponBox) */
.ws-coupon {
    display: grid;
    gap: 8px;
}

.ws-coupon-form {
    display: flex;
    gap: 8px;
    margin: 0;
}

    .ws-coupon-form .ws-input {
        flex: 1;
    }

.ws-coupon-on {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 6px 6px 12px;
    border-radius: var(--ws-radius);
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
    font-size: 14px;
}

    .ws-coupon-on span {
        flex: 1;
        min-width: 0;
    }

    .ws-coupon-on .ws-iconbtn {
        color: var(--ws-accent-text);
    }

.ws-coupon-msg {
    margin: 0;
    color: var(--ws-warn);
    font-size: 13px;
}

/* izbor prije naplate (CheckOutGuest) */
.ws-choice {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
    gap: 16px;
    max-width: 1040px;
}

.ws-choice-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    padding: 24px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

    .ws-choice-card h2 {
        margin: 4px 0 0;
        font-size: 19px;
        font-weight: 600;
    }

    .ws-choice-card p {
        margin: 0;
        color: var(--ws-muted);
    }

    .ws-choice-card .ws-btn {
        margin-top: auto;
    }

.ws-choice-ic {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
}

.ws-choice-card .ws-choice-note {
    margin-bottom: 6px;
    font-size: 13px;
}

/* koraci naplate (CheckOut) */
.ws-steps {
    margin-bottom: 20px;
}

    .ws-steps ol {
        display: flex;
        gap: 8px;
        margin: 0;
        padding: 0;
        list-style: none;
    }

.ws-step {
    flex: 1 1 0;
    min-width: 0;
}

    .ws-step button {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        min-height: 48px;
        padding: 8px 12px;
        border: 1px solid var(--ws-line);
        border-radius: var(--ws-radius);
        background: var(--ws-surface);
        color: var(--ws-muted);
        font: inherit;
        font-size: 14px;
        font-weight: 500;
        text-align: left;
        cursor: pointer;
    }

        .ws-step button:disabled {
            cursor: default;
        }

.ws-step-n {
    display: grid;
    place-items: center;
    flex: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--ws-surface-2);
    color: var(--ws-muted);
    font-size: 13px;
    font-weight: 700;
}

    .ws-step-n .ws-ic {
        width: 16px;
        height: 16px;
    }

.ws-step-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ws-step.is-active button {
    border-color: var(--ws-accent-text);
    color: var(--ws-ink);
    font-weight: 600;
}

.ws-step.is-active .ws-step-n {
    background: var(--ws-accent);
    color: var(--ws-accent-ink);
}

.ws-step.is-done button {
    color: var(--ws-ink);
}

    .ws-step.is-done button:hover {
        border-color: var(--ws-field);
    }

.ws-step.is-done .ws-step-n {
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
}

.ws-co-main {
    min-width: 0;
}

.ws-form {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 16px 18px;
    margin-bottom: 18px;
}

.ws-field {
    display: grid;
    grid-column: span 3;
    align-content: start;
    gap: 6px;
    min-width: 0;
    margin: 0;
}

.ws-field--wide {
    grid-column: 1 / -1;
}

.ws-field--l {
    grid-column: span 4;
}

.ws-field--s {
    grid-column: span 2;
}

.ws-label {
    color: var(--ws-ink);
    font-size: 13px;
    font-weight: 600;
}

.ws-req {
    margin-left: 2px;
    color: var(--ws-bad);
}

.ws-form-hint {
    margin: -6px 0 16px;
    color: var(--ws-muted);
    font-size: 13px;
}

.ws-form-note {
    margin: 14px 0 0;
    color: var(--ws-muted);
    font-size: 13px;
}

.ws-inline {
    display: flex;
    align-items: stretch;
    gap: 8px;
}

    .ws-inline > :first-child {
        flex: 1;
        min-width: 0;
    }

.ws-phone {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    gap: 8px;
}

.ws-co-same {
    margin-bottom: 16px;
}

.ws-co-add {
    margin-top: 4px;
}

.ws-co-actions, .ws-form-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--ws-line);
}

    .ws-co-actions .ws-btn--cta, .ws-form-actions .ws-btn--cta {
        margin-left: auto;
    }

/* izbor adrese, dostave i plaćanja kao kartice s radio gumbom */
.ws-options {
    display: grid;
    gap: 10px;
    margin-bottom: 20px;
}

.ws-option {
    display: flex;
    align-items: center;
    gap: 14px;
    margin: 0;
    padding: 14px 16px;
    border: 1px solid var(--ws-field);
    border-radius: var(--ws-radius);
    background: var(--ws-surface);
    cursor: pointer;
}

    .ws-option:hover {
        border-color: var(--ws-ink);
    }

    .ws-option.is-on {
        border-color: var(--ws-accent-text);
        background: var(--ws-accent-soft);
        box-shadow: inset 0 0 0 1px var(--ws-accent-text);
    }

    .ws-option input {
        display: grid;
        place-items: center;
        flex: none;
        width: 20px;
        height: 20px;
        margin: 0;
        border: 1.5px solid var(--ws-field);
        border-radius: 50%;
        background: var(--ws-surface);
        cursor: pointer;
        appearance: none;
    }

        .ws-option input:checked {
            border-color: var(--ws-accent-text);
        }

            .ws-option input:checked::after {
                content: "";
                width: 10px;
                height: 10px;
                border-radius: 50%;
                background: var(--ws-accent-text);
            }

        .ws-option input:focus-visible {
            outline: 2px solid var(--ws-accent-text);
            outline-offset: 2px;
        }

    .ws-option > .ws-ic {
        color: var(--ws-muted);
    }

    .ws-option.is-on > .ws-ic {
        color: var(--ws-accent-text);
    }

.ws-option-body {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.ws-option-title {
    font-weight: 600;
}

.ws-option-text {
    color: var(--ws-muted);
    font-size: 13px;
}

/* korak potvrde */
.ws-review {
    display: grid;
    gap: 14px;
    margin-bottom: 20px;
}

.ws-review-block {
    padding: 16px 18px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius);
}

.ws-review-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}

    .ws-review-head h3 {
        margin: 0;
        font-size: 15px;
        font-weight: 600;
    }

.ws-review-pay {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    font-weight: 600;
}

    .ws-review-pay .ws-ic {
        color: var(--ws-accent-text);
    }

.ws-terms {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 8px;
    margin-top: 18px;
    font-size: 14px;
}

/* potvrda plaćanja karticom (PayCardOK) */
.ws-status {
    display: grid;
    justify-items: center;
    gap: 8px;
    max-width: 560px;
    margin: 32px auto;
    padding: 40px 24px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
    text-align: center;
}

    .ws-status .ws-h1 {
        margin: 0;
        font-size: clamp(22px, 2.4vw, 28px);
    }

    .ws-status p {
        margin: 0;
        color: var(--ws-muted);
    }

        .ws-status p.ws-status-kicker {
            color: var(--ws-accent-text);
            font-size: 12px;
            font-weight: 600;
            letter-spacing: .12em;
            text-transform: uppercase;
        }

.ws-status-ic {
    display: grid;
    place-items: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
}

    .ws-status-ic .ws-ic {
        width: 28px;
        height: 28px;
    }

/* greška (Teya, Error): crvena ikona; poruka greške tamnim slovima */
.ws-status-ic--bad {
    background: #fdeceb;
    background: color-mix(in srgb, var(--ws-bad) 10%, var(--ws-surface));
    color: var(--ws-bad);
}

.ws-status p.ws-status-msg {
    color: var(--ws-ink);
    font-weight: 500;
}

.ws-status .ws-btn {
    margin-top: 12px;
}

/* vrtnja dok se čeka (Teya: pokretanje i potvrda plaćanja) */
.ws-spin {
    box-sizing: border-box;
    width: 26px;
    height: 26px;
    border: 3px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: ws-spin .8s linear infinite;
}

@keyframes ws-spin {
    to {
        transform: rotate(360deg);
    }
}

/* samostalne stranice bez Bootstrapa i Blazora (Teya/*, Error; head iz _WsHead.cshtml) */
.ws-solo {
    margin: 0;
}

    .ws-solo *, .ws-solo ::before, .ws-solo ::after {
        box-sizing: border-box;
    }

/* detalj narudžbe (OrderDet) */
.ws-crumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-bottom: 14px;
    color: var(--ws-muted);
    font-size: 13px;
}

    .ws-crumbs a {
        color: var(--ws-muted);
        text-decoration: none;
    }

        .ws-crumbs a:hover {
            color: var(--ws-accent-text);
            text-decoration: underline;
        }

    .ws-crumbs .ws-ic {
        width: 14px;
        height: 14px;
    }

    .ws-crumbs [aria-current] {
        color: var(--ws-ink);
        font-weight: 600;
    }

/* stranica artikla: povratak na popis s kojeg je kupac došao (ili na početnu); na računalu gumb Natrag i putokaz u jednom retku,
   a na mobitelu samo poveznica ‹ {popis}, dovoljno velika za prst */
.ws-pdp-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 14px;
    margin: -6px 0 16px;
}

    .ws-pdp-nav .ws-crumbs {
        margin: 0;
    }

.ws-back {
    display: none;
}

.ws-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 38px;
    padding: 0 16px 0 10px;
    border: 1px solid var(--ws-field);
    border-radius: 999px;
    background: var(--ws-surface);
    color: var(--ws-ink);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
}

    .ws-back-btn:hover {
        border-color: var(--ws-muted);
        background: var(--ws-surface-2);
        color: var(--ws-ink);
    }

    .ws-back-btn .ws-ic {
        width: 18px;
        height: 18px;
    }

@media (max-width: 720px) {
    .ws-pdp-nav {
        margin: -12px 0 4px;
    }

    .ws-back {
        display: inline-flex;
        align-items: center;
        gap: 2px;
        min-height: 44px;
        margin-left: -8px;
        padding: 0 12px 0 2px;
        color: var(--ws-ink);
        font-size: 15px;
        font-weight: 600;
        text-decoration: none;
    }

        .ws-back .ws-ic {
            width: 22px;
            height: 22px;
        }

    .ws-back-btn, .ws-pdp-nav .ws-crumbs {
        display: none;
    }
}

.ws-banner {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
    padding: 14px 16px;
    border-radius: var(--ws-radius);
    font-size: 15px;
}

    .ws-banner .ws-ic {
        flex: none;
    }

.ws-banner--ok {
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
}

.ws-od-head {
    align-items: center;
    margin-bottom: 6px;
}

.ws-badge {
    display: inline-flex;
    align-items: center;
    height: 26px;
    padding: 0 10px;
    border-radius: 999px;
    background: var(--ws-surface-2);
    color: var(--ws-ink);
    font-size: 13px;
    font-weight: 600;
}

.ws-od-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 24px;
    margin: 0 0 20px;
    color: var(--ws-muted);
    font-size: 14px;
}

    .ws-od-meta div {
        display: flex;
        gap: 6px;
    }

    .ws-od-meta dt {
        font-weight: 400;
    }

    .ws-od-meta dd {
        margin: 0;
        color: var(--ws-ink);
    }

/* na računalu stavke i povijest lijevo, podaci desno; na mobitelu stavke, podaci, pa povijest */
.ws-od {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    grid-template-rows: auto 1fr;
    grid-template-areas: "main side" "tabs side";
    gap: 24px;
    align-items: start;
}

/* stupac ne raste po najširem sadržaju (DxGrid s fiksnim širinama stupaca) */
.ws-od-main, .ws-od-side {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
    min-width: 0;
}

.ws-od-main {
    grid-area: main;
}

.ws-od-side {
    grid-area: side;
}

.ws-od > .ws-od-tabs {
    grid-area: tabs;
    min-width: 0;
}

.ws-od-tab {
    padding-top: 16px;
}

    /* tablica povijesti i dokumenata na uskom zaslonu se pomiče unutar panela */
    .ws-od-tab .dxbl-grid {
        max-width: 100%;
    }

.ws-paybox {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: 24px;
    border: 1px solid var(--ws-accent-text);
    border-radius: var(--ws-radius-card);
    background: var(--ws-accent-soft);
}

.ws-paybox-info {
    flex: 1 1 280px;
    min-width: 0;
}

    .ws-paybox-info p {
        margin: 0 0 12px;
    }

.ws-paybox-code {
    flex: none;
    max-width: 220px;
    height: auto;
    padding: 8px;
    border-radius: 8px;
    background: #ffffff;
}

@media (max-width: 900px) {
    .ws-cart, .ws-co, .ws-od {
        grid-template-columns: minmax(0, 1fr);
    }

    .ws-od {
        grid-template-rows: auto;
        grid-template-areas: "main" "side" "tabs";
    }

    .ws-summary {
        position: static;
    }

    /* sažetak naplate je na mobitelu iznad koraka i otvara se dodirom */
    .ws-co-summary {
        order: -1;
        padding: 14px 16px;
    }

        .ws-co-summary .ws-summary-title {
            display: none;
        }

        .ws-co-summary:not(.is-open) .ws-summary-body {
            display: none;
        }

    .ws-summary-toggle {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        padding: 0;
        border: 0;
        background: none;
        color: var(--ws-ink);
        font: inherit;
        font-size: 15px;
        font-weight: 600;
        text-align: left;
        cursor: pointer;
    }

        .ws-summary-toggle span {
            flex: 1;
        }

        .ws-summary-toggle .ws-ic {
            transition: transform .15s;
        }

    .ws-co-summary.is-open .ws-summary-toggle .ws-ic {
        transform: rotate(180deg);
    }
}

@media (max-width: 720px) {
    .ws-line {
        grid-template-columns: 64px minmax(0, 1fr) auto;
        grid-template-areas: "media info info" "qty qty total";
        padding: 14px;
    }

    .ws-line--ro {
        grid-template-areas: "media info total";
    }

    .ws-line-media {
        width: 64px;
        height: 64px;
    }

    .ws-panel {
        padding: 18px 16px;
    }

    .ws-form {
        grid-template-columns: minmax(0, 1fr);
    }

    .ws-field, .ws-field--l, .ws-field--s, .ws-field--wide {
        grid-column: 1 / -1;
    }

    .ws-kv div {
        grid-template-columns: minmax(0, 1fr);
        gap: 0;
    }

    /* koraci: samo brojevi; naziv trenutnog koraka je u naslovu panela */
    .ws-step button {
        justify-content: center;
        padding: 8px;
    }

    .ws-step-label {
        display: none;
    }

    .ws-co-actions, .ws-form-actions {
        flex-direction: column-reverse;
        align-items: stretch;
    }

        .ws-co-actions .ws-btn, .ws-form-actions .ws-btn {
            width: 100%;
        }

        .ws-co-actions .ws-btn--cta, .ws-form-actions .ws-btn--cta {
            margin-left: 0;
        }
}


/* prijava, registracija i lozinka (Login, ForgetPass, ResetPass, RegIn) */
.ws-auth {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 440px);
    max-width: 960px;
    margin: 8px auto 24px;
    overflow: hidden;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

.ws-auth--single {
    grid-template-columns: minmax(0, 1fr);
    max-width: 480px;
}

.ws-auth-brand {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    gap: 10px;
    padding: 40px;
    background: var(--ws-hero-bg);
    color: var(--ws-chrome-soft);
}

    .ws-auth-brand .ws-logo-mark {
        width: 44px;
        height: 44px;
    }

    .ws-auth-brand p {
        max-width: 34ch;
        margin: 0;
    }

    .ws-auth-brand .ws-auth-brand-name {
        color: var(--ws-chrome-ink);
        font-size: 26px;
        font-weight: 600;
    }

.ws-auth-card {
    display: grid;
    align-content: start;
    gap: 16px;
    padding: 40px;
}

    .ws-auth-card .ws-h1 {
        margin: 0;
    }

    .ws-auth-card .ws-form {
        margin: 0;
    }

.ws-auth-text {
    margin: 0;
    color: var(--ws-muted);
}

.ws-auth-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 8px 16px;
}

/* odabir načina prijave (SPARK: e-mail ili SparkShare App) */
.ws-seg {
    display: grid;
    grid-auto-columns: minmax(0, 1fr);
    grid-auto-flow: column;
    padding: 4px;
    border-radius: var(--ws-radius);
    background: var(--ws-surface-2);
}

    .ws-seg button {
        height: 38px;
        border: 0;
        border-radius: 4px;
        background: transparent;
        color: var(--ws-muted);
        font: inherit;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
    }

        .ws-seg button.is-on {
            background: var(--ws-surface);
            color: var(--ws-ink);
            box-shadow: 0 1px 3px rgba(16, 24, 20, .12);
        }

.ws-qr {
    display: grid;
    justify-items: center;
    gap: 6px;
    padding: 16px;
    border: 1px dashed var(--ws-field);
    border-radius: var(--ws-radius);
    text-align: center;
}

    .ws-qr img {
        width: 180px;
        height: 180px;
        image-rendering: pixelated;
    }

    .ws-qr p {
        margin: 0;
    }

.ws-qr-id {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: .08em;
}

.ws-field-note {
    color: var(--ws-muted);
    font-size: 12px;
}

/* moj račun (ProfileHome): izbornik lijevo, sadržaj desno */
.ws-account {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 24px;
    align-items: start;
}

.ws-account-nav {
    position: sticky;
    top: var(--ws-sticky-top);
    display: grid;
    gap: 4px;
    padding: 8px;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
}

.ws-account-link {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: 44px;
    padding: 0 12px;
    border: 0;
    border-radius: var(--ws-radius);
    background: none;
    color: var(--ws-ink);
    font: inherit;
    font-size: 15px;
    font-weight: 500;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}

    .ws-account-link:hover {
        background: var(--ws-surface-2);
        color: var(--ws-ink);
    }

    .ws-account-link.is-active {
        background: var(--ws-accent-soft);
        color: var(--ws-accent-text);
        font-weight: 600;
    }

.ws-account-logout {
    color: var(--ws-muted);
}

.ws-account-sep {
    height: 1px;
    margin: 4px 8px;
    background: var(--ws-line);
}

.ws-account-main {
    min-width: 0;
}

/* popisi (tvrtke, adrese, narudžbe) */
.ws-list {
    display: grid;
    margin: 0 0 16px;
    padding: 0;
    border: 1px solid var(--ws-line);
    border-radius: var(--ws-radius);
    list-style: none;
}

.ws-list-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
    padding: 14px 16px;
}

    .ws-list-row + .ws-list-row {
        border-top: 1px solid var(--ws-line);
    }

    .ws-list-row > .ws-ic {
        color: var(--ws-muted);
    }

    .ws-list-row.is-on {
        background: var(--ws-accent-soft);
    }

.ws-list-main {
    display: grid;
    flex: 1 1 220px;
    min-width: 0;
}

.ws-list-sub {
    color: var(--ws-muted);
    font-size: 13px;
}

.ws-list-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-left: auto;
}

/* gumb na kraju retka (Detalji kod narudžbi): kad na mobitelu prijeđe u novi red, ostaje desno, a status lijevo */
.ws-list-row > .ws-btn:last-child {
    margin-left: auto;
}

.ws-linkbtn--danger {
    color: var(--ws-bad);
}

.ws-subtitle {
    margin: 28px 0 12px;
    font-size: 16px;
    font-weight: 600;
}

.ws-section-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

    .ws-section-head .ws-subtitle {
        margin: 0;
    }

.ws-section-head--end {
    justify-content: flex-end;
}

/* registracija: osobni podaci i lozinka u jednom okviru */
.ws-reg {
    max-width: 880px;
}

    .ws-reg .ws-reg-pass {
        margin-top: 12px;
    }

/* stranica koja ne postoji (App.razor NotFound) */
.ws-notfound {
    margin: 24px auto;
    max-width: 640px;
}

    .ws-notfound .ws-h1 {
        margin: 0;
        color: var(--ws-ink);
    }

/* prekid veze (components-reconnect-modal) i neočekivana greška (blazor-error-ui) iz _Layout.cshtml */
.my-reconnect-modal > div {
    background-color: rgba(15, 15, 15, .55);
    opacity: 1;
    font-size: 16px;
    font-weight: 500;
}

.my-reconnect-modal .ws-reconnect {
    position: fixed;
    top: 50%;
    left: 50%;
    display: grid;
    justify-items: center;
    gap: 14px;
    width: min(360px, calc(100% - 32px));
    padding: 28px 24px;
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
    color: var(--ws-ink);
    font-family: var(--ws-font-sans);
    text-align: center;
    transform: translate(-50%, -50%);
    box-shadow: 0 18px 48px rgba(0, 0, 0, .25);
}

    .my-reconnect-modal .ws-reconnect p {
        margin: 0;
    }

    .my-reconnect-modal .ws-reconnect .sk-wave-rect {
        background-color: var(--ws-accent-text);
    }

#blazor-error-ui {
    background: var(--ws-chrome);
    color: var(--ws-chrome-ink);
    font-family: var(--ws-font-sans);
    font-size: 14px;
}

    #blazor-error-ui .reload {
        margin-left: 12px;
        color: var(--ws-accent-on-dark);
        font-weight: 600;
    }

    #blazor-error-ui .dismiss {
        color: var(--ws-chrome-ink);
    }

@media (max-width: 900px) {
    .ws-auth {
        grid-template-columns: minmax(0, 1fr);
        max-width: 480px;
    }

    .ws-auth-brand {
        display: none;
    }

    .ws-account {
        grid-template-columns: minmax(0, 1fr);
    }

    /* izbornik računa na mobitelu: vodoravni red iznad sadržaja (bez trake za pomicanje, kao traka kategorija) */
    .ws-account-nav {
        position: static;
        display: flex;
        overflow-x: auto;
        padding: 4px;
        scrollbar-width: none;
    }

        .ws-account-nav::-webkit-scrollbar {
            display: none;
        }

    .ws-account-link {
        flex: none;
        width: auto;
        white-space: nowrap;
    }

    .ws-account-sep {
        width: 1px;
        height: auto;
        margin: 8px 2px;
    }
}

@media (max-width: 720px) {
    .ws-auth {
        margin-top: 0;
    }

    .ws-auth-card {
        padding: 24px 18px;
    }

    .ws-list-actions {
        margin-left: 0;
    }
}


/* mobitel: donja traka i donji panel s kategorijama (SiteHeader) */
.ws-tabbar {
    display: none;
}

.ws-tab {
    position: relative;
    display: grid;
    align-content: center;
    justify-items: center;
    gap: 2px;
    min-width: 0;
    min-height: 58px;
    padding: 6px 2px;
    border: 0;
    background: none;
    color: var(--ws-muted);
    font: inherit;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.2;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
}

    .ws-tab .ws-ic {
        width: 22px;
        height: 22px;
    }

    .ws-tab span:not(.ws-count) {
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .ws-tab:hover, .ws-tab.active {
        color: var(--ws-accent-text);
    }

    .ws-tab .ws-count {
        top: 4px;
        left: calc(50% + 4px);
        background: var(--ws-accent);
        color: var(--ws-accent-ink);
    }

.ws-sheet {
    position: fixed;
    inset: 0;
    z-index: 70;
}

.ws-sheet-scrim, .ws-fpanel-scrim {
    position: fixed;
    inset: 0;
    width: 100%;
    border: 0;
    background: rgba(0, 0, 0, .45);
    cursor: pointer;
}

.ws-sheet-panel {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    max-height: 80vh;
    overflow-y: auto;
    padding: 4px 16px calc(20px + env(safe-area-inset-bottom, 0px));
    border-radius: 18px 18px 0 0;
    background: var(--ws-surface);
    color: var(--ws-ink);
}

.ws-sheet-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 0;
}

    .ws-sheet-head h2 {
        margin: 0;
        font-size: 18px;
        font-weight: 600;
    }

.ws-sheet-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 52px;
    border-bottom: 1px solid var(--ws-line);
    color: var(--ws-ink);
    font-size: 16px;
    font-weight: 500;
    text-decoration: none;
}

    .ws-sheet-item:hover, .ws-sheet-item.active {
        color: var(--ws-accent-text);
    }

    .ws-sheet-item .ws-ic {
        color: var(--ws-muted);
    }


/* obavijesti iz VCRAZ AlertService.Toast u bojama tenanta */
.my-toast {
    box-shadow: 0 10px 28px rgba(16, 24, 20, .16);
    font-family: var(--ws-font-sans);
}

    .my-toast.my-toast-success {
        border-color: var(--ws-accent-soft);
        background-color: var(--ws-accent-soft);
        color: var(--ws-accent-text);
    }

.my-toast-success .my-toast-icon_success {
    background-color: var(--ws-accent-text);
}

/* dijalog VCRAZ Alert (AlertService.Go) u izgledu WebShopa, bez izmjene VCRAZ-a: dijalog se prepoznaje po slici css/alert_*.png
   (put zadaje AlertService); umjesto slike je krug s ikonom u bojama tenanta, tekst je uz ikonu, a prvi gumb (potvrda) je kao ws-btn--cta,
   ostali obrubljeni. Bez podrške za :has() ostaje stari izgled sa slikom. */
.dxbl-modal-content > div:has(> div > img[src^="css/alert_"]) {
    display: flex;
    align-items: flex-start;
    gap: 4px;
}

    .dxbl-modal-content > div:has(> div > img[src^="css/alert_"]) > div:last-child {
        flex: 1;
        min-width: 0;
        padding-top: 10px;
        color: var(--ws-ink);
        font-size: 15px;
        line-height: 1.5;
    }

.dxbl-modal-content div:has(> img[src^="css/alert_"]) {
    display: grid;
    flex: none;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--ws-accent-soft);
    color: var(--ws-accent-text);
    --ws-alert-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 11v6'/%3E%3Ccircle cx='12' cy='7.5' r='1.3' fill='black' stroke='none'/%3E%3C/svg%3E");
}

    .dxbl-modal-content div:has(> img[src^="css/alert_"])::before {
        content: "";
        width: 24px;
        height: 24px;
        background-color: currentColor;
        -webkit-mask: var(--ws-alert-ic) center / contain no-repeat;
        mask: var(--ws-alert-ic) center / contain no-repeat;
    }

    .dxbl-modal-content div:has(> img[src^="css/alert_"]) > img {
        display: none;
    }

.dxbl-modal-content div:has(> img[src="css/alert_question.png"]) {
    --ws-alert-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.3 9a2.8 2.8 0 1 1 4 2.5c-.8.4-1.3 1.1-1.3 2v.6'/%3E%3Ccircle cx='12' cy='17.5' r='1.2' fill='black' stroke='none'/%3E%3C/svg%3E");
}

.dxbl-modal-content div:has(> img[src="css/alert_error.png"]) {
    background: #fdeceb;
    background: color-mix(in srgb, var(--ws-bad) 10%, var(--ws-surface));
    color: var(--ws-bad);
    --ws-alert-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E");
}

dxbl-modal-dialog:has(img[src^="css/alert_"]) .dxbl-modal-footer .dxbl-btn {
    --dxbl-btn-border-radius: var(--ws-radius);
    --dxbl-btn-font-size-m: 15px;
    height: 44px;
    font-weight: 600;
}

dxbl-modal-dialog:has(img[src^="css/alert_"]) .dxbl-modal-footer .dxbl-btn-group-first .dxbl-btn-primary {
    --dxbl-btn-primary-bg: var(--ws-accent);
    --dxbl-btn-primary-hover-bg: var(--ws-accent-hover);
    --dxbl-btn-primary-active-bg: var(--ws-accent-hover);
    --dxbl-btn-primary-color: var(--ws-accent-ink);
}

dxbl-modal-dialog:has(img[src^="css/alert_"]) .dxbl-modal-footer .dxbl-btn-group:not(.dxbl-btn-group-first) .dxbl-btn-primary {
    --dxbl-btn-primary-bg: var(--ws-surface);
    --dxbl-btn-primary-hover-bg: var(--ws-surface);
    --dxbl-btn-primary-active-bg: var(--ws-surface-2);
    --dxbl-btn-primary-color: var(--ws-ink);
    --dxbl-btn-primary-border-color: var(--ws-field);
    --dxbl-btn-primary-hover-border-color: var(--ws-ink);
    --dxbl-btn-primary-active-border-color: var(--ws-ink);
}

/* čekanje (VCRAZ WaitSpinner): kartica kao kod prekida veze. VCRAZ svoje stilove daje u <style> unutar komponente,
   pa pravila ovdje imaju jaču specifičnost, a tekst s inline stilom treba !important. */
body .spinner-modal {
    padding-top: 0;
    background-color: rgba(15, 15, 15, .55);
}

body .spinner-container {
    top: 50%;
    left: 50%;
    flex-direction: column-reverse;
    align-items: center;
    gap: 14px;
    box-sizing: border-box;
    width: min(320px, calc(100% - 32px));
    padding: 28px 24px;
    border-radius: var(--ws-radius-card);
    background: var(--ws-surface);
    box-shadow: 0 18px 48px rgba(0, 0, 0, .25);
    transform: translate(-50%, -50%);
}

    body .spinner-container > div:first-child {
        color: var(--ws-ink) !important;
        font-family: var(--ws-font-sans);
        font-size: 16px !important;
        font-weight: 500 !important;
    }

    /* SpinKitWave (Faso.Blazor.SpinKit) ima svoj <style> s razmakom od 40 px i sivim stupićima */
    body .spinner-container .sk-wave {
        margin: 0 auto;
    }

        body .spinner-container .sk-wave .sk-rect {
            background-color: var(--ws-accent-text);
        }


@media (max-width: 1000px) {
    .ws-act-label, .ws-buyer-label {
        display: none;
    }

    .ws-buyer {
        max-width: 220px;
    }
}

@media (max-width: 720px) {
    .ws-bar {
        min-height: 56px;
        column-gap: 6px;
    }

    .ws-logo {
        min-height: 56px;
        font-size: 18px;
    }

    .ws-act {
        padding: 0 8px;
    }

    .ws-lang {
        margin-right: 2px;
    }

        .ws-lang button {
            padding: 0 7px;
        }

    .ws-buyer {
        order: 10;
        flex-basis: 100%;
        max-width: none;
        margin-bottom: 8px;
    }

    .ws-buyer-label {
        display: inline;
    }

    /* račun, lista želja, košarica i kategorije su u donjoj traci */
    .ws-act--acc, .ws-act--wish, .ws-act--cart, .ws-cats {
        display: none;
    }

    .ws-tabbar {
        position: fixed;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 60;
        display: grid;
        grid-template-columns: repeat(5, minmax(0, 1fr));
        padding-bottom: env(safe-area-inset-bottom, 0px);
        border-top: 1px solid var(--ws-line);
        background: var(--ws-surface);
        box-shadow: 0 -4px 16px rgba(16, 24, 20, .06);
    }

    .ws-page {
        padding-block: 16px 40px;
    }

    .ws-catalog {
        grid-template-columns: minmax(0, 1fr);
    }

    .ws-filter-toggle {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        height: 38px;
        margin-left: auto;
        padding: 0 12px;
        border: 1px solid var(--ws-field);
        border-radius: var(--ws-radius);
        background: var(--ws-surface);
        color: var(--ws-ink);
        font: inherit;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
    }

        .ws-filter-toggle .ws-ic {
            width: 18px;
            height: 18px;
        }

    .ws-filter-count {
        min-width: 20px;
        height: 20px;
        padding: 0 6px;
        border-radius: 10px;
        background: var(--ws-accent);
        color: var(--ws-accent-ink);
        font-size: 12px;
        line-height: 20px;
        text-align: center;
    }

    /* filtri na mobitelu: donji panel iznad svega osim popupa */
    .ws-fpanel {
        position: fixed;
        top: auto;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 75;
        display: none;
        max-height: 85vh;
        padding: 0 16px;
        border: 0;
        border-radius: 18px 18px 0 0;
    }

        .ws-fpanel.is-open {
            display: block;
        }

    .ws-fpanel-head {
        position: sticky;
        top: 0;
        z-index: 1;
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 0;
        background: var(--ws-surface);
    }

        .ws-fpanel-head h2 {
            margin: 0;
            font-size: 18px;
            font-weight: 600;
        }

    .ws-fpanel-foot {
        position: sticky;
        bottom: 0;
        display: block;
        padding: 12px 0 calc(16px + env(safe-area-inset-bottom, 0px));
        background: var(--ws-surface);
    }

    .ws-fpanel-scrim {
        z-index: 74;
        display: block;
    }

    .ws-foot {
        grid-template-columns: 1fr 1fr;
        gap: 22px;
        padding-block: 28px;
    }

    .ws-foot-brand {
        grid-column: 1 / -1;
    }
}
