/* ─── Písmo ──────────────────────────────────────────────────
   Inter z vlastního serveru místo fonts.googleapis.com. Přes Google
   stála stránka dvě spojení navíc a řetěz CSS → font → vykreslení
   (750 ms). Je to variabilní řez 400–800, takže jeden soubor pokrývá
   všechny tloušťky, které stránka používá.
   ─────────────────────────────────────────────────────────── */
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('/fonts/inter/inter-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Česká diakritika (ě, š, č, ř, ž, ů, ď, ť, ň) žije tady. */
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('/fonts/inter/inter-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ─── Základ a mřížka ────────────────────────────────────────
   Nahrazuje Bootstrap z CDN. Stránka z něj používala jen reboot,
   dvanáctisloupcovou mřížku a hrst utilit — zbylých 30 KiB se
   stahovalo z cizího serveru a blokovalo vykreslení o 1,2 s.
   Hodnoty jsou schválně opsané z Bootstrapu 5.3.2, aby se
   rozvržení po přepnutí nehnulo ani o pixel.
   ─────────────────────────────────────────────────────────── */
*,
*::before,
*::after {
    box-sizing: border-box;
}

body {
    margin: 0;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
}

h1, h2, h3, h4, h5, h6 {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-weight: 500;
    line-height: 1.2;
}

p {
    margin-top: 0;
    margin-bottom: 1rem;
}

blockquote {
    margin: 0 0 1rem;
}

ul, ol {
    margin-top: 0;
    margin-bottom: 1rem;
    padding-left: 2rem;
}

b, strong {
    font-weight: bolder;
}

img, svg {
    vertical-align: middle;
}

/* Bez tohohle řádku se <details> ve FAQ nedá rozkliknout myší. */
summary {
    display: list-item;
    cursor: pointer;
}

button, input, optgroup, select, textarea {
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

button,
[type="button"],
[type="submit"] {
    -webkit-appearance: button;
}

button:not(:disabled),
[type="button"]:not(:disabled),
[type="submit"]:not(:disabled) {
    cursor: pointer;
}

textarea {
    resize: vertical;
}

.container {
    width: 100%;
    margin-right: auto;
    margin-left: auto;
    padding-right: 0.75rem;
    padding-left: 0.75rem;
}

@media (min-width: 576px) { .container { max-width: 540px; } }
@media (min-width: 768px) { .container { max-width: 720px; } }
@media (min-width: 992px) { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1140px; } }
@media (min-width: 1400px) { .container { max-width: 1320px; } }

.row {
    --gutter-x: 1.5rem;
    --gutter-y: 0;
    display: flex;
    flex-wrap: wrap;
    margin-top: calc(-1 * var(--gutter-y));
    margin-right: calc(-0.5 * var(--gutter-x));
    margin-left: calc(-0.5 * var(--gutter-x));
}

.row > * {
    flex-shrink: 0;
    width: 100%;
    max-width: 100%;
    margin-top: var(--gutter-y);
    padding-right: calc(var(--gutter-x) * 0.5);
    padding-left: calc(var(--gutter-x) * 0.5);
}

.g-4 {
    --gutter-x: 1.5rem;
    --gutter-y: 1.5rem;
}

@media (min-width: 768px) {
    .col-md-4 { flex: 0 0 auto; width: 33.33333333%; }
    .col-md-6 { flex: 0 0 auto; width: 50%; }
}

@media (min-width: 992px) {
    .col-lg-5 { flex: 0 0 auto; width: 41.66666667%; }
}

.d-flex { display: flex !important; }
.flex-wrap { flex-wrap: wrap !important; }
.justify-content-center { justify-content: center !important; }
.gap-4 { gap: 1.5rem !important; }
.text-center { text-align: center !important; }
.w-100 { width: 100% !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-2 { margin-bottom: 0.5rem !important; }
.small { font-size: 0.875em; }

.alert {
    position: relative;
    padding: 1rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: 0.375rem;
}

.alert-success {
    color: #0a3622;
    background-color: #d1e7dd;
    border-color: #a3cfbb;
}

.alert-danger {
    color: #58151c;
    background-color: #f8d7da;
    border-color: #f1aeb5;
}

/* Vzhled polí přebírá .hp-input níž; tohle je jen to, co by jinak
   chybělo, kdyby někdo .form-control použil samostatně. */
.form-control {
    display: block;
    width: 100%;
    padding: 0.375rem 0.75rem;
    font-size: 1rem;
    line-height: 1.5;
    color: #212529;
    background-color: #fff;
    background-clip: padding-box;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    appearance: none;
}

html {
    scroll-behavior: smooth;
}

body.hp {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    color: #1e293b;
    margin: 0;
}

/* ─── Header ─────────────────────────────────────────────── */
.hp-header {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 10;
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
    padding: 0.9rem 1.5rem;
    background: rgba(0, 0, 0, 0.3);
    font-size: 0.875rem;
    font-weight: 500;
}

.hp-header a {
    color: rgba(255, 255, 255, 0.9) !important;
    text-decoration: none !important;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    transition: color 0.15s;
}

.hp-header a:hover {
    color: #fff !important;
}

/* ─── Hero ───────────────────────────────────────────────── */
.hp-hero {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 560px;
    overflow: hidden;
    background: linear-gradient(120deg, #060c37 0%, #0d1b3e 55%, #10306e 100%);
    --spot-x: 50%;
    --spot-y: 45%;
}

/* Mřížka ke krajům zmizí, jinak by řezala okraje sekce. */
.hp-hero-grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(87, 176, 254, 0.16) 1px, transparent 1px),
        linear-gradient(90deg, rgba(87, 176, 254, 0.16) 1px, transparent 1px);
    background-size: 30px 30px;
    -webkit-mask-image: radial-gradient(circle at 50% 45%, #000 25%, transparent 78%);
    mask-image: radial-gradient(circle at 50% 45%, #000 25%, transparent 78%);
}

.hp-hero-spot {
    position: absolute;
    left: var(--spot-x);
    top: var(--spot-y);
    width: 420px;
    height: 420px;
    margin: -210px 0 0 -210px;
    pointer-events: none;
    background: radial-gradient(circle, rgba(87, 176, 254, 0.3), transparent 65%);
    transition: left 0.2s ease-out, top 0.2s ease-out;
}

.hp-hero-inner {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2.5rem;
    padding: 5.5rem 1rem 4rem;
}

.hp-hero-text {
    max-width: 60%;
    color: #fff;
}

.hp-hero-mark {
    flex: 0 0 auto;
    animation: hp-float 7s ease-in-out infinite;
}

.hp-hero-mark img {
    display: block;
    width: 160px;
    height: auto;
    filter: drop-shadow(0 14px 34px rgba(31, 116, 247, 0.45));
}

@keyframes hp-float {
    50% {
        transform: translateY(-10px);
    }
}

/* Jeden nadpis, dva řádky: značka velká, nárok pod ní. Dřív byl nárok
   samostatný odstavec a h1 neslo jen jméno značky. */
.hp-h1 {
    margin: 0 0 1.1rem;
    color: #fff;
}

/* Značku nikdo nehledá, hledá se „interní systémy na míru". Jméno proto
   funguje jako podpis nad nadpisem, ne jako nadpis sám — pořadí v HTML
   zůstává, mění se jen váha. */
.hp-h1-brand {
    display: block;
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    font-weight: 700;
    letter-spacing: -0.015em;
    line-height: 1.2;
    color: rgba(255, 255, 255, 0.72);
}

.hp-h1-claim {
    display: block;
    margin-top: 0.35rem;
    font-size: clamp(2.1rem, 4.6vw, 3.1rem);
    font-weight: 800;
    letter-spacing: -0.025em;
    line-height: 1.08;
    color: #fff;
}

.hp-rotator {
    min-height: 1.4em;
    margin-bottom: 1.6rem;
    font-family: 'Courier New', monospace;
    font-size: 0.9rem;
    letter-spacing: 0.04em;
    color: #57b0fe;
}

/* Kurzor jen u psaného textu, ne u statického výpisu služeb bez JS. */
.hp-rotator.is-typing::after {
    content: '';
    display: inline-block;
    width: 2px;
    height: 1em;
    margin-left: 2px;
    vertical-align: text-bottom;
    background: #57b0fe;
    animation: hp-caret 0.8s step-end infinite;
}

@keyframes hp-caret {
    50% {
        opacity: 0;
    }
}

/* Dvě modré, a je to schválně: #1f74f7 je značková a zůstává na ikonách,
   linkách a rámečcích, kde jde o grafiku (stačí 3:1). Pod bílým textem
   dává ale jen 4,29:1, takže tlačítka mají tmavší #0860e7 (5,47:1).
   Hlídá to ContrastTest — kdo odstín změní, dozví se to z testů. */
.hp-cta-btn {
    display: inline-block;
    padding: 0.65rem 2rem;
    background: #0860e7;
    color: #fff !important;
    border-radius: 7px;
    font-weight: 600;
    font-size: 0.95rem;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s;
}

.hp-cta-btn:hover {
    background: #0a4fbd;
    transform: translateY(-2px);
    color: #fff !important;
}

@media (max-width: 760px) {
    .hp-hero-inner {
        flex-direction: column-reverse;
        text-align: center;
        padding-top: 4.5rem;
    }

    .hp-hero-text {
        max-width: 100%;
    }

    .hp-hero-mark img {
        width: 96px;
    }
}

/* ─── Sections ───────────────────────────────────────────── */
.hp-section {
    padding: 5rem 0;
    background: #fff;
}

.hp-section-title {
    font-size: 1.9rem;
    font-weight: 700;
    color: #0f172a;
    text-align: center;
    margin-bottom: 0.5rem;
}

.hp-section-sub {
    text-align: center;
    color: #64748b;
    margin-bottom: 2.5rem;
    font-size: 1rem;
}

/* ─── Cards ──────────────────────────────────────────────── */
.hp-card {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 2rem 1.75rem;
    height: 100%;
    transition: box-shadow 0.2s, transform 0.2s;
}

.hp-card:hover {
    box-shadow: 0 8px 32px rgba(18, 139, 197, 0.11);
    transform: translateY(-3px);
}

.hp-card-icon {
    font-size: 1.75rem;
    color: #1f74f7;
    margin-bottom: 1rem;
}

.hp-card-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 0.65rem;
    text-align: left;
}

.hp-card-text {
    font-size: 0.93rem;
    color: #475569;
    line-height: 1.75;
    margin-bottom: 0;
}

/* ─── Tech stack ─────────────────────────────────────────── */
.hp-tech {
    background: #0f172a;
    padding: 3.5rem 0;
}

.hp-tech-label {
    font-size: 0.75rem;
    color: #94a3b8;
    letter-spacing: 0.12em;
    margin-bottom: 1.5rem;
    font-family: 'Courier New', monospace;
}

.hp-tech-pills {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.65rem;
}

.hp-pill {
    display: inline-block;
    padding: 0.35rem 1rem;
    background: rgba(18, 139, 197, 0.12);
    border: 1px solid rgba(18, 139, 197, 0.3);
    border-radius: 20px;
    color: #57b0fe;
    font-family: 'Courier New', monospace;
    font-size: 0.85rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s, transform 0.15s;
}

.hp-pill:hover,
.hp-pill:focus-visible {
    background: #0860e7;
    border-color: #0860e7;
    color: #fff;
    transform: translateY(-2px);
    outline: none;
}

.hp-tech-note {
    min-height: 1.5em;
    margin: 1.5rem 0 0;
    font-size: 0.85rem;
    color: #94a3b8;
}

/* ─── Steps ──────────────────────────────────────────────── */
.hp-steps-section {
    background: #f8fafc;
}

.hp-step {
    text-align: center;
    padding: 1rem 0.5rem;
}

.hp-step-num {
    font-size: 3.5rem;
    font-weight: 800;
    color: #1f74f7;
    opacity: 0.18;
    line-height: 1;
    margin-bottom: 0.75rem;
    font-family: 'Courier New', monospace;
}

.hp-step-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 0.65rem;
    text-align: center;
}

.hp-step-text {
    font-size: 0.93rem;
    color: #475569;
    line-height: 1.75;
}

/* ─── Contact form ───────────────────────────────────────── */
/* Šedá, ne bílá: nad ní je bílý pás „O mně" a dvě bílé sekce za sebou
   slily portrét s formulářem — zrovna v místě, kde má návštěvník kliknout.
   Bílá pole formuláře na šedé navíc líp vystoupí. */
.hp-contact-section {
    background: #f8fafc;
}

.hp-input {
    border-radius: 8px;
    border: 1.5px solid #e2e8f0;
    padding: 0.7rem 1rem;
    font-size: 0.95rem;
    font-family: inherit;
    color: #1e293b;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.hp-input:focus {
    border-color: #1f74f7;
    box-shadow: 0 0 0 3px rgba(18, 139, 197, 0.12);
    outline: none;
}

.hp-input::placeholder {
    color: #94a3b8;
}

/* ─── Plovoucí popisky ───────────────────────────────────── */
.hp-field {
    position: relative;
    margin-bottom: 1rem;
}

.hp-field .hp-input {
    width: 100%;
    padding: 1.35rem 1rem 0.5rem;
}

.hp-field label {
    position: absolute;
    top: 0.75rem;
    left: 1rem;
    color: #64748b;
    font-size: 0.95rem;
    pointer-events: none;
    transition: top 0.15s ease, font-size 0.15s ease, color 0.15s ease;
}

.hp-field .hp-input:focus + label,
.hp-field .hp-input:not(:placeholder-shown) + label {
    top: 0.3rem;
    color: #0860e7;
    font-size: 0.7rem;
}

.hp-field .hp-input.is-invalid {
    border-color: #dc2626;
}

.hp-field .hp-input.is-invalid + label {
    color: #dc2626;
}

.hp-submit-btn:disabled {
    background: #64748b;
    cursor: progress;
    transform: none;
}

.hp-submit-btn {
    background: #0860e7;
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 0.75rem 2rem;
    font-size: 0.975rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.2s, transform 0.2s;
}

.hp-submit-btn:hover {
    background: #0a4fbd;
    transform: translateY(-1px);
    color: #fff;
}

/* ─── Footer ─────────────────────────────────────────────── */
.hp-footer {
    background: #0f172a;
    color: #94a3b8;
    padding: 2rem 0;
    font-size: 0.875rem;
}

/* ─── Global ─────────────────────────────────────────────── */
a {
    color: inherit !important;
    text-decoration: none !important;
}

a:hover {
    color: #1f74f7 !important;
}

/* ─── Citát nad patičkou ─────────────────────────────────── */
.hp-quote {
    background: #0b1430;
    padding: 3rem 0;
    text-align: center;
}

.hp-quote-text {
    margin: 0 auto 0.5rem;
    max-width: 44rem;
    font-size: 1.05rem;
    font-style: italic;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.82);
}

.hp-quote-author {
    margin: 0;
    font-family: 'Courier New', monospace;
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    color: #57b0fe;
}

/* ─── Odhalování při scrollu ─────────────────────────────── */
.js [data-reveal] {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity 0.45s ease-out, transform 0.45s ease-out;
}

.js [data-reveal].is-revealed {
    opacity: 1;
    transform: none;
}

/* ─── Lišta po hero ──────────────────────────────────────── */
/* Zasunutá i bez JS, záměrně: lišta je jen zkratka, telefon i e-mail jsou
   v `.hp-header` nad hero a v kontaktní sekci. Trvale vysunutá fixní lišta
   by navíc překryla `.hp-header`, který je absolutně v pravém horním rohu. */
.hp-bar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 30;
    background: rgba(13, 27, 62, 0.96);
    border-bottom: 1px solid rgba(87, 176, 254, 0.28);
    transform: translateY(-110%);
    transition: transform 0.3s ease-out;
}

.hp-bar.is-visible {
    transform: none;
}

.hp-bar-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.55rem 1rem;
}

.hp-bar-brand img {
    display: block;
    height: 24px;
    width: auto;
}

.hp-bar-links {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    font-size: 0.85rem;
}

.hp-bar-link {
    color: rgba(255, 255, 255, 0.82) !important;
}

.hp-bar-link:hover {
    color: #fff !important;
}

.hp-bar-cta {
    padding: 0.35rem 1.1rem;
    background: #0860e7;
    border-radius: 6px;
    color: #fff !important;
    font-weight: 600;
    white-space: nowrap;
}

.hp-bar-cta:hover {
    background: #0a4fbd;
    color: #fff !important;
}

@media (max-width: 575px) {
    .hp-bar-mail {
        display: none;
    }
}

/* ─── Linka mezi kroky ───────────────────────────────────── */
.hp-rail {
    margin: 0 auto 1.5rem;
    max-width: 760px;
}

.hp-rail svg {
    display: block;
    width: 100%;
    height: 24px;
}

.hp-rail path {
    fill: none;
    stroke: #1f74f7;
    stroke-width: 2.5;
    stroke-dasharray: 880;
    transition: stroke-dashoffset 1.1s ease-out;
}

.hp-rail circle {
    fill: #f8fafc;
    stroke: #1f74f7;
    stroke-width: 2.5;
    transition: opacity 0.3s ease-out;
}

/* Nenakreslený stav jen tam, kde ho JS umí dokreslit — jinak by linka
   bez JS zmizela navždy, stejně jako odhalované sekce. */
.js .hp-rail path {
    stroke-dashoffset: 880;
}

.js .hp-rail circle {
    opacity: 0;
}

.hp-rail.is-drawn path {
    stroke-dashoffset: 0;
}

.hp-rail.is-drawn circle {
    opacity: 1;
}

.hp-rail.is-drawn circle:nth-of-type(2) {
    transition-delay: 0.5s;
}

.hp-rail.is-drawn circle:nth-of-type(3) {
    transition-delay: 1s;
}

/* Kroky se pod sebou spojovat nemají, linka by vedla napříč textem. */
@media (max-width: 767px) {
    .hp-rail {
        display: none;
    }
}

/* ─── Ikony ──────────────────────────────────────────────── */
.hp-icon {
    vertical-align: -0.125em;
}

.hp-header a .hp-icon,
.hp-bar-link .hp-icon {
    margin-right: 0.35rem;
}

.hp-cta-btn .hp-icon {
    margin-left: 0.4rem;
    transition: transform 0.2s ease;
}

.hp-cta-btn:hover .hp-icon {
    transform: translateY(3px);
}

.hp-card-icon .hp-icon {
    width: 1.75rem;
    height: 1.75rem;
}

/* ─── Vypnutý pohyb ──────────────────────────────────────── */
/* Kdo má v systému animace vypnuté, dostane stránku staticky —
   odhalované prvky viditelné, nic se nehýbe. */
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .js [data-reveal],
    .js [data-reveal].is-revealed {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .hp-hero-mark {
        animation: none;
    }

    .hp-hero-spot {
        display: none;
    }

    /* Stejná specificita jako skrytý stav výš, jinak by ho nepřebily. */
    .js .hp-rail path {
        stroke-dashoffset: 0;
        transition: none;
    }

    .js .hp-rail circle {
        opacity: 1;
        transition: none;
    }

    .hp-card:hover,
    .hp-pill:hover,
    .hp-cta-btn:hover,
    .hp-submit-btn:hover {
        transform: none;
    }

    .hp-bar {
        transition: none;
    }
}

/* ─── Časté dotazy ───────────────────────────────────────── */
.hp-faq-section {
    background: #f8fafc;
}

.hp-faq {
    max-width: 48rem;
    margin: 0 auto;
}

.hp-faq-item {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    margin-bottom: 0.75rem;
    padding: 1.1rem 1.4rem;
}

.hp-faq-q {
    cursor: pointer;
    font-weight: 600;
    color: #0f172a;
    list-style: none;
    position: relative;
    padding-right: 2rem;
}

.hp-faq-q::-webkit-details-marker {
    display: none;
}

/* Vlastní šipka: nativní trojúhelník vypadá v každém prohlížeči jinak. */
.hp-faq-q::after {
    content: '';
    position: absolute;
    right: 0.35rem;
    top: 0.35rem;
    width: 0.55rem;
    height: 0.55rem;
    border-right: 2px solid #1f74f7;
    border-bottom: 2px solid #1f74f7;
    transform: rotate(45deg);
    transition: transform 0.2s ease;
}

.hp-faq-item[open] .hp-faq-q::after {
    transform: rotate(-135deg);
}

.hp-faq-a {
    margin: 0.9rem 0 0;
    font-size: 0.93rem;
    line-height: 1.75;
    color: #475569;
}

/* ─── Case studies ───────────────────────────────────────── */
/* Mřížka sekce drží řádky, karty si je přebírají přes `subgrid` — proto
   se obor, nadpis, perex i odznak srovnají napříč všemi třemi, místo aby
   si každá karta řádky počítala sama. */
.hp-case-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
}

.hp-case-card {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    height: 100%;
    padding: 1.75rem;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    text-decoration: none;
    transition: box-shadow 0.2s, transform 0.2s;
}

.hp-case-card:hover {
    box-shadow: 0 8px 32px rgba(18, 139, 197, 0.11);
    transform: translateY(-3px);
}

.hp-case-sector {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #475569;
}

.hp-case-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
}

.hp-case-teaser {
    font-size: 0.93rem;
    line-height: 1.75;
    color: #475569;
}

/* Odznak nese výsledek, proto má vlastní pozadí — na kartě je to první,
   co oko najde. */
.hp-case-badge {
    align-self: flex-start;
    padding: 0.3rem 0.7rem;
    border-radius: 999px;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: 0.78rem;
    font-weight: 600;
}

.hp-case-more {
    margin-top: auto;
    font-size: 0.88rem;
    font-weight: 600;
    color: #1d4ed8;
}

/* Kde `subgrid` prohlížeč zná, přepne se zarovnání z „stejně vysoké karty"
   na „stejně umístěný obsah". Jinde zůstane sloupec výš a vypadá to jako
   dřív — proto je to v @supports a ne natvrdo. */
@supports (grid-template-rows: subgrid) {
    .hp-case-grid {
        grid-template-rows: auto auto auto 1fr auto auto;
    }

    .hp-case-card {
        display: grid;
        grid-row: span 6;
        grid-template-rows: subgrid;
        align-content: start;
    }

    .hp-case-badge {
        align-self: start;
    }

    .hp-case-more {
        margin-top: 0;
        align-self: end;
    }
}

@media (max-width: 767.98px) {
    .hp-case-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    @supports (grid-template-rows: subgrid) {
        .hp-case-grid {
            grid-template-rows: none;
        }

        .hp-case-card {
            grid-row: auto;
            grid-template-rows: none;
        }
    }
}

/* ─── Case study detail ──────────────────────────────────── */
.hp-case-crumbs {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
    font-size: 0.85rem;
    color: #475569;
}

.hp-case-crumbs a {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: #1d4ed8;
    text-decoration: none;
}

.hp-case-crumbs a:hover {
    text-decoration: underline;
}

.hp-case-h1 {
    font-size: 2.1rem;
    font-weight: 800;
    color: #0f172a;
    margin: 0.35rem 0 0.75rem;
}

.hp-case-lead {
    font-size: 1.1rem;
    line-height: 1.7;
    color: #334155;
    max-width: 62ch;
}

.hp-case-body {
    max-width: 68ch;
    color: #334155;
    font-size: 1rem;
    line-height: 1.8;
}

.hp-case-body p {
    margin-bottom: 1.1rem;
}

.hp-case-h2 {
    font-size: 1.25rem;
    font-weight: 700;
    color: #0f172a;
    margin: 2.25rem 0 0.85rem;
}

.hp-case-stack {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0;
    margin: 0;
    list-style: none;
}

.hp-case-stack li {
    padding: 0.3rem 0.75rem;
    border: 1px solid #e2e8f0;
    border-radius: 999px;
    background: #f8fafc;
    font-size: 0.82rem;
    color: #334155;
}

/* Dva sloupce: text si drží čitelnou délku řádku a vedle něj stojí
   shrnutí místo prázdné plochy. */
.hp-case-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 19rem;
    gap: 3.5rem;
    align-items: start;
}

.hp-case-side {
    position: sticky;
    top: 5rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.hp-case-side-title {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    color: #0f172a;
}

@media (max-width: 991.98px) {
    .hp-case-layout {
        grid-template-columns: minmax(0, 1fr);
        gap: 2.5rem;
    }

    .hp-case-side {
        position: static;
    }
}

.hp-case-cta {
    margin-top: 0.75rem;
    padding: 2rem;
    border-radius: 12px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    text-align: center;
}

.hp-case-cta-title {
    font-size: 1.2rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 0.5rem;
}

.hp-case-cta-text {
    color: #475569;
    margin-bottom: 1.25rem;
}

/* ─── Flow diagram ───────────────────────────────────────── */
.hp-case-flow {
    margin: 2rem 0 2.5rem;
    padding: 1.5rem 1rem;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #f8fafc;
}

/* Barvu určuje tahle vlastnost, SVG uvnitř kreslí `currentColor` —
   jinak by schéma potřebovalo druhou variantu pro tmavý podklad. */
.hp-case-flow svg {
    display: block;
    width: 100%;
    height: auto;
    color: #1d4ed8;
}

.hp-case-flow text {
    fill: #0f172a;
    font-size: 13px;
    font-weight: 600;
}

@media (max-width: 575.98px) {
    .hp-case-h1 {
        font-size: 1.65rem;
    }

    .hp-case-flow {
        padding: 1rem 0.5rem;
    }
}

/* Sekce s případovkami sousedí s „Jak pracuji", která je taky šedá —
   bílá je od sebe odděluje. */
.hp-cases-section {
    background: #fff;
}

.hp-cases-all {
    margin: 2rem 0 0;
    text-align: center;
    font-weight: 600;
}

.hp-cases-all a {
    color: #1d4ed8;
    text-decoration: none;
}

.hp-cases-all a:hover {
    text-decoration: underline;
}

.hp-hero-local {
    margin: 0 0 1.75rem;
    max-width: 48ch;
    font-size: 0.95rem;
    line-height: 1.7;
    color: #dbeafe;
}

/* ─── Cena ───────────────────────────────────────────────── */
/* Tmavá schválně: sousední sekce (případovky, FAQ) jsou bílá a šedá,
   takže třetí odstín je od sebe oddělí — a číslo, kvůli kterému sekce
   existuje, je vidět na první pohled. */
.hp-price-section {
    background: #0f172a;
}

.hp-price-title {
    font-size: 1.9rem;
    font-weight: 700;
    color: #ffffff;
    text-align: center;
    margin-bottom: 1.5rem;
}

.hp-price-figure {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.hp-price-from {
    font-size: 1.1rem;
    color: #cbd5e1;
}

.hp-price-value {
    font-size: 3.25rem;
    font-weight: 800;
    line-height: 1;
    color: #ffffff;
}

.hp-price-unit {
    font-size: 1.1rem;
    color: #cbd5e1;
}

.hp-price-vat {
    margin-bottom: 2.5rem;
    text-align: center;
    color: #dbeafe;
}

.hp-price-points {
    max-width: 62ch;
    margin: 0 auto;
    padding: 0;
    list-style: none;
    color: #e2e8f0;
    line-height: 1.8;
}

.hp-price-points li {
    padding-left: 1.4rem;
    margin-bottom: 0.9rem;
    border-left: 3px solid rgba(87, 176, 254, 0.45);
}

.hp-price-list {
    max-width: 62ch;
    margin: 2.5rem auto 0;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(226, 232, 240, 0.22);
}

.hp-price-list-title {
    margin-bottom: 1rem;
    font-size: 0.95rem;
    font-weight: 700;
    color: #ffffff;
}

.hp-price-list ul {
    padding: 0;
    margin: 0;
    list-style: none;
}

.hp-price-list li {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid rgba(226, 232, 240, 0.12);
}

.hp-price-list-label {
    color: #e2e8f0;
}

.hp-price-list-value {
    font-weight: 600;
    color: #ffffff;
    white-space: nowrap;
}

@media (max-width: 575.98px) {
    .hp-price-value {
        font-size: 2.4rem;
    }
}

/* ─── Pro koho to je ─────────────────────────────────────── */
.hp-audience-section {
    background: #f8fafc;
}

/* Řádky, ne mřížka: „Co dělám" nad tím je katalog ve kartách a dvě
   stejné mřížky za sebou splývaly. */
.hp-audience-list {
    max-width: 62rem;
    margin: 0 auto;
    border-top: 1px solid #e2e8f0;
}

.hp-audience-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: start;
    gap: 1.5rem;
    padding: 1.75rem 0;
    border-bottom: 1px solid #e2e8f0;
}

.hp-audience-mark {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 10px;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: 1.5rem;
}

.hp-audience-title {
    margin: 0 0 0.35rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
}

.hp-audience-text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.7;
    color: #475569;
}

.hp-audience-more {
    align-self: center;
    white-space: nowrap;
    font-size: 0.88rem;
    font-weight: 600;
    color: #1d4ed8;
    text-decoration: none;
}

.hp-audience-more:hover {
    text-decoration: underline;
}

/* Co nedělám. Druhá polovina téže sekce — stejné řádky, jen tišší.
   Přerušovaný rámeček tu býval a vypadal jako chybová hláška. */
.hp-audience-not {
    max-width: 62rem;
    margin: 2.5rem auto 0;
    color: #475569;
}

.hp-audience-not-title {
    margin-bottom: 1rem;
    font-size: 0.95rem;
    font-weight: 700;
    color: #0f172a;
}

.hp-audience-not-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem 2rem;
    padding: 0;
    margin: 0;
    list-style: none;
    font-size: 0.9rem;
    line-height: 1.65;
}

.hp-audience-not-list li {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.6rem;
}

.hp-audience-cross {
    color: #94a3b8;
    font-size: 1rem;
    line-height: 1.4;
}

@media (max-width: 767.98px) {
    .hp-audience-row {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 1rem;
    }

    .hp-audience-more {
        grid-column: 2;
        justify-self: start;
    }

    .hp-audience-not-list {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ─── Schéma na kartě případovky ─────────────────────────── */
.hp-case-mark {
    display: block;
    color: #1d4ed8;
}

.hp-case-mark-svg {
    display: block;
    width: 100%;
    max-width: 150px;
    height: auto;
}

/* ─── Pás „O mně" na homepage ────────────────────────────── */
.hp-intro-section {
    background: #fff;
}

.hp-intro {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 2.5rem;
    align-items: center;
    max-width: 56rem;
    margin: 0 auto;
}

.hp-intro-photo {
    aspect-ratio: 3 / 4;
    overflow: hidden;
    border-radius: 12px;
    background: #f8fafc;
}

.hp-intro-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.hp-intro-photo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    opacity: 0.3;
}

.hp-intro-photo-placeholder img {
    width: 72px;
    height: 72px;
    object-fit: contain;
}

.hp-intro-name {
    margin: 0 0 0.75rem;
    font-size: 1.5rem;
    font-weight: 800;
    color: #0f172a;
}

.hp-intro-lead {
    margin: 0;
    font-size: 1rem;
    line-height: 1.8;
    color: #334155;
}

.hp-intro-more {
    margin: 1.25rem 0 0;
    font-size: 0.9rem;
    font-weight: 600;
}

.hp-intro-more a {
    color: #1d4ed8;
    text-decoration: none;
}

.hp-intro-more a:hover {
    text-decoration: underline;
}

@media (max-width: 767.98px) {
    .hp-intro {
        grid-template-columns: minmax(0, 1fr);
        gap: 1.5rem;
    }

    .hp-intro-photo {
        max-width: 180px;
    }
}

/* ─── O mně ──────────────────────────────────────────────── */
.hp-about-grid {
    display: grid;
    grid-template-columns: minmax(0, 320px) minmax(0, 1fr);
    gap: 3rem;
    align-items: start;
}

/* Vizitka drží u čtenáře, dokud čte: fotka, jméno a jednověté shrnutí. */
.hp-about-aside {
    position: sticky;
    top: 5rem;
}

.hp-about-name {
    margin: 1.25rem 0 0.5rem;
    font-size: 1.6rem;
    font-weight: 800;
    color: #0f172a;
}

/* Fotka drží poměr 3:4 i bez souboru — jinak by se rozvržení po jejím
   dodání poskočilo. */
.hp-about-photo {
    aspect-ratio: 3 / 4;
    overflow: hidden;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
}

.hp-about-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.hp-about-photo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    opacity: 0.35;
}

.hp-about-photo-placeholder img {
    width: 96px;
    height: 96px;
    object-fit: contain;
}

.hp-about-lead {
    margin-bottom: 0;
    font-size: 0.98rem;
    line-height: 1.7;
    color: #334155;
}

.hp-about-body {
    max-width: 68ch;
    color: #334155;
    font-size: 1rem;
    line-height: 1.8;
}

.hp-about-body p {
    margin-bottom: 1.1rem;
}

.hp-about-cta-alt {
    margin: 1rem 0 0;
    font-size: 0.9rem;
    font-weight: 600;
}

.hp-about-cta-alt a {
    color: #1d4ed8;
    text-decoration: none;
}

.hp-about-cta-alt a:hover {
    text-decoration: underline;
}

@media (max-width: 767.98px) {
    .hp-about-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 2rem;
    }

    /* Lepkavá vizitka by na mobilu zabrala půl obrazovky. */
    .hp-about-aside {
        position: static;
    }

    .hp-about-photo {
        max-width: 240px;
    }

    .hp-about-name {
        font-size: 1.75rem;
    }
}

/* ─── Navigace ───────────────────────────────────────────── */
.hp-footer-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.5rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    font-size: 0.9rem;
}

.hp-footer-nav a {
    color: rgba(255, 255, 255, 0.86) !important;
    text-decoration: none;
}

.hp-footer-nav a:hover {
    color: #fff !important;
    text-decoration: underline;
}

/* Odkazy v liště padají dřív než e-mail: lišta má na úzkém okně
   udržet telefon a tlačítko, zbytek je bonus. */
@media (max-width: 991.98px) {
    .hp-bar-nav {
        display: none;
    }
}

/* ─── Fotky v textu O mně ────────────────────────────────── */
/* Poměr drží rámeček, ne obrázek: rozměry fotek nejsou známé dopředu
   a bez toho by stránka po jejich načtení poskakovala. */
.hp-about-figure {
    margin: 1.75rem 0 2rem;
}

.hp-about-figure img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
}

.hp-about-caption {
    margin-top: 0.6rem;
    font-size: 0.85rem;
    line-height: 1.6;
    color: #475569;
}

/* Dvě fotky vedle sebe, když jdou za sebou ve stejném místě textu. */
.hp-about-figure + .hp-about-figure {
    margin-top: -0.75rem;
}

@media (min-width: 576px) {
    .hp-about-body .hp-about-figure + .hp-about-figure {
        margin-top: 1.75rem;
    }
}

.hp-quote-why {
    margin: 0.75rem 0 0;
    font-size: 0.85rem;
    color: #bfdbfe;
}

.hp-quote-why a {
    color: #bfdbfe !important;
    text-decoration: none;
}

.hp-quote-why a:hover {
    color: #fff !important;
    text-decoration: underline;
}

/* Text „O mně" běží bez mezinadpisů — části od sebe oddělují fotky
   a odstupy. Odstavce proto dýchají víc než v případovkách. */
.hp-about-body p {
    margin-bottom: 1.4rem;
}

/* Odkaz z citátu na homepage míří doprostřed textu; bez odsazení by
   cíl schovala lišta. */
.hp-about-body [id] {
    scroll-margin-top: 5rem;
}

/* Citát je v plynulém textu jediný záchytný bod — proto je vysazený. */
.hp-about-quote {
    display: block;
    margin: 0.25rem 0;
    font-size: 1.08rem;
    font-style: italic;
    color: #0f172a;
}

/* Bez mezinadpisů je zvýrazněná fráze jediné, čeho se oko při přelétnutí
   chytí. Proto je sytější než okolní text, ne jen tučnější. */
.hp-about-body strong {
    font-weight: 650;
    color: #0f172a;
}
