
  :root{
    --navy:#0B1623;
    --navy-2:#0E1B2A;
    --graphite:#1A2332;
    --graphite-2:#243042;
    --line:#2A3850;
    --line-2:#3A4860;
    --paper:#F4F4F1;
    --paper-2:#EBEBE6;
    --ink:#0B1623;
    --muted:#6B7280;
    --red:#E11D2E;
    --red-dark:#B91524;
    --steel:#9AA6B8;
  }
  *{box-sizing:border-box}
  html,body{margin:0;padding:0}
  body{
    font-family:'IBM Plex Sans', system-ui, sans-serif;
    color:var(--ink);
    background:var(--paper);
    font-size:16px;
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
  }
  .mono{font-family:'IBM Plex Mono', monospace; letter-spacing:.02em}
  .cond{font-family:'IBM Plex Sans Condensed', sans-serif}
  a{color:inherit; text-decoration:none}
  img{max-width:100%; display:block}

  /* ---------- top utility bar ---------- */
  .util{
    background:#06101B;
    color:#9AA6B8;
    font-family:'IBM Plex Mono', monospace;
    font-size:11.5px;
    letter-spacing:.06em;
    text-transform:uppercase;
    border-bottom:1px solid #15212F;
  }
  .util-wrap{
    max-width:1440px; margin:0 auto;
    padding:8px 32px;
    display:flex; justify-content:space-between; align-items:center; gap:24px;
  }
  .util-left{display:flex; gap:24px}
  .util-right{display:flex; gap:24px; align-items:center}
  .util .dot{display:inline-block; width:6px; height:6px; background:#3FB950; border-radius:50%; margin-right:8px; vertical-align:middle}
  .util a:hover{color:#fff}

  /* ---------- nav ---------- */
  .nav{
    background:var(--navy);
    color:#fff;
    border-bottom:1px solid #1B2738;
    position:sticky; top:0; z-index:50;
  }
  .nav-wrap{
    max-width:1440px; margin:0 auto;
    padding:14px 32px;
    display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:48px;
  }
  .logo{
    display:flex; align-items:center; gap:14px;
    font-weight:700; font-size:22px; letter-spacing:.04em;
  }
  .logo-img{ height:64px; width:auto; display:block }
  .logo-img-foot{ height:88px }
  .menu{display:flex; gap:30px; justify-content:center}
  .menu a{
    font-family:'IBM Plex Sans', Arial, sans-serif;
    font-size:15px; color:#E6EDF7; font-weight:800;
    padding:8px 0; position:relative;
    letter-spacing:.01em;
    transition:color .2s ease, transform .2s ease;
  }
  .menu a:hover{color:#fff; transform:translateY(-1px)}
  .menu a.active{color:#fff}
  .menu a.active::after{
    content:""; position:absolute; left:0; right:0; bottom:-4px; height:2px; background:var(--red);
  }
  .nav-cta{display:flex; gap:12px; align-items:center}
  .btn{
    display:inline-flex; align-items:center; gap:10px;
    padding:11px 18px; font-size:13px; font-weight:600;
    letter-spacing:.04em; text-transform:uppercase;
    border:1px solid transparent; cursor:pointer; transition:all .15s;
    font-family:'IBM Plex Sans', sans-serif;
  }
  .btn-primary{background:var(--red); color:#fff}
  .btn-primary:hover{background:var(--red-dark)}
  .btn-ghost{background:transparent; color:#fff; border-color:#37475F}
  .btn-ghost:hover{border-color:#fff}
  .btn-ink{background:var(--ink); color:#fff}
  .btn-ink:hover{background:#000}
  .btn-paper{background:var(--paper); color:var(--ink); border-color:#D3D3CD}
  .btn-paper:hover{border-color:var(--ink)}
  .btn .arrow{font-family:'IBM Plex Mono', monospace; font-weight:400}

  /* ---------- hero ---------- */
  .hero{
    background:
      linear-gradient(180deg, rgba(11,22,35,.92), rgba(11,22,35,.82)),
      linear-gradient(0deg, rgba(11,22,35,.95), rgba(11,22,35,.4)),
      #0B1623;
    color:#fff;
    position:relative;
    overflow:hidden;
    border-bottom:1px solid #1B2738;
  }
  .blueprint{
    position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(rgba(255,255,255,.015) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.015) 1px, transparent 1px);
    background-size:120px 120px, 120px 120px, 24px 24px, 24px 24px;
    background-position:0 0, 0 0, 0 0, 0 0;
    pointer-events:none;
  }
  .hero-wrap{
    max-width:1440px; margin:0 auto;
    padding:80px 32px 100px;
    display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:88px;
    position:relative;
  }
  .hero-eyebrow{
    display:inline-flex; align-items:center; gap:12px;
    font-family:'IBM Plex Mono', monospace; font-size:12px;
    letter-spacing:.18em; text-transform:uppercase;
    color:#9AA6B8; margin-bottom:32px;
  }
  .hero-eyebrow .bar{ width:32px; height:1px; background:var(--red) }
  .hero h1{
    font-family:'IBM Plex Sans', sans-serif;
    font-size:78px; line-height:.98; letter-spacing:-.015em;
    font-weight:700; margin:0 0 28px;
    text-transform:uppercase;
    text-wrap:balance;
  }
  .hero h1 .red{ color:var(--red) }
  .hero h1 .white{ color:#fff }
  .hero p.lead{
    font-size:18px; line-height:1.55; color:#C9D2DE; max-width:560px;
    margin:0 0 40px;
  }
  .hero-ctas{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:48px}
  .hero-tags{
    display:flex; flex-wrap:wrap; gap:10px;
    font-family:'IBM Plex Mono', monospace; font-size:11.5px;
    letter-spacing:.06em; text-transform:uppercase;
    color:#9AA6B8;
    max-width:760px;
  }
  .hero-tags span{
    border:1px solid #2A3850; padding:6px 12px;
    white-space:nowrap;
  }
  .hero-tags span::before{ content:"// " }

  /* hero technical sidecard */
  .spec-card{
    background:rgba(13,24,40,.7);
    border:1px solid #2A3850;
    backdrop-filter:blur(4px);
    padding:0;
    align-self:start;
    position:relative;
  }
  .spec-card::before,
  .spec-card::after{
    content:""; position:absolute; width:14px; height:14px; border:1px solid var(--red);
  }
  .spec-card::before{ left:-1px; top:-1px; border-right:0; border-bottom:0 }
  .spec-card::after{ right:-1px; bottom:-1px; border-left:0; border-top:0 }
  .spec-head{
    padding:14px 20px; display:flex; justify-content:space-between;
    border-bottom:1px solid #1F2C40;
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:#7A8699; letter-spacing:.12em; text-transform:uppercase;
  }
  .spec-head b{color:#fff; font-weight:500}
  .spec-img{
    aspect-ratio:4/3;
    background:#0E1A26;
    border-bottom:1px solid #1F2C40;
    position:relative;
    overflow:hidden;
  }
  /* static photo base — placeholder for real project photo */
  .spec-photo-base{
    position:absolute; inset:0;
    background:
      repeating-linear-gradient(0deg, rgba(255,255,255,.012) 0 1px, transparent 1px 4px),
      repeating-linear-gradient(45deg, rgba(255,255,255,.022) 0 2px, transparent 2px 14px),
      radial-gradient(ellipse 60% 40% at 22% 32%, rgba(255,255,255,.05), transparent 60%),
      radial-gradient(ellipse 55% 35% at 75% 72%, rgba(0,0,0,.22), transparent 60%),
      radial-gradient(ellipse 40% 25% at 60% 45%, rgba(180,150,120,.04), transparent 60%),
      linear-gradient(135deg, #14222F 0%, #1B2C3F 55%, #0F1B27 100%);
    transform:scale(1.025);
    transform-origin:center;
    will-change:transform;
    transition: transform .8s cubic-bezier(.2,.7,.3,1);
  }
  .spec-photo-hint{
    position:absolute; left:12px; bottom:8px; z-index:7;
    font-family:'IBM Plex Mono', monospace; font-size:9px;
    color:#5C6B82; letter-spacing:.16em; text-transform:uppercase;
    opacity:.45; pointer-events:none;
  }

  /* overlay group — gets parallax */
  .spec-overlay{
    position:absolute; inset:0;
    z-index:2;
    will-change:transform;
    transition: transform .8s cubic-bezier(.2,.7,.3,1);
    pointer-events:none;
  }
  .spec-svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible }

  /* subtle vignette over photo, behind overlay */
  .spec-img::after{
    content:""; position:absolute; inset:0; pointer-events:none;
    background:radial-gradient(ellipse 90% 80% at 50% 50%, transparent 55%, rgba(0,0,0,.35) 100%);
    z-index:1;
  }

  /* scan line — slow drafting sweep */
  .scan-line{
    position:absolute; left:0; right:0; top:0; height:1px;
    background:linear-gradient(90deg, transparent 0%, rgba(225,29,46,.5) 30%, rgba(255,255,255,.55) 50%, rgba(225,29,46,.5) 70%, transparent 100%);
    box-shadow:0 0 10px rgba(225,29,46,.28);
    opacity:0;
    z-index:3;
    animation: ovScan 6s 3.4s cubic-bezier(.55,0,.45,1) infinite;
  }
  @keyframes ovScan{
    0%   { transform:translateY(-2%); opacity:0 }
    8%   { opacity:.9 }
    92%  { opacity:.9 }
    100% { transform:translateY(102%); opacity:0 }
  }

  /* HTML labels — crisp text on top */
  .ov-label, .ov-pill{
    position:absolute;
    font-family:'IBM Plex Mono', monospace;
    font-size:9.5px; letter-spacing:.14em; text-transform:uppercase;
    color:#fff; white-space:nowrap;
    opacity:0;
    animation: ovFadeIn .55s cubic-bezier(.2,.7,.3,1) forwards;
    z-index:4;
  }
  @keyframes ovFadeIn{ from { opacity:0 } to { opacity:1 } }

  .ov-label-w{
    top:7%; left:50%; transform:translateX(-50%);
    background:rgba(11,22,35,.78); padding:3px 7px;
    border:1px solid rgba(225,29,46,.55);
    animation-delay:1.85s;
  }
  .ov-label-h{
    top:50%; right:-2%;
    transform:translate(-50%, -50%) rotate(-90deg);
    transform-origin:center;
    background:rgba(11,22,35,.78); padding:3px 7px;
    border:1px solid rgba(225,29,46,.55);
    animation-delay:2.0s;
  }
  .ov-label-d{
    top:25%; left:64%;
    background:rgba(11,22,35,.88); padding:4px 8px;
    border:1px solid rgba(225,29,46,.65);
    animation-delay:2.45s;
  }
  .ov-label-d::before, .ov-label-d::after{
    content:""; position:absolute; width:5px; height:5px;
  }
  .ov-label-d::before{ left:-1px; top:-1px; border-left:1px solid #E11D2E; border-top:1px solid #E11D2E }
  .ov-label-d::after{ right:-1px; bottom:-1px; border-right:1px solid #E11D2E; border-bottom:1px solid #E11D2E }

  .ov-label-zone{
    top:23%; left:22%;
    font-size:8.5px; color:#9AA6B8;
    animation-delay:2.65s;
  }
  .ov-label-sec{
    top:23%; right:22%;
    font-size:8.5px; color:#9AA6B8;
    animation-delay:2.75s;
  }

  .ov-pill{
    bottom:30%; left:22%;
    background:var(--red); color:#fff;
    padding:3px 8px; font-weight:600; font-size:9px;
    animation-delay:2.95s;
  }

  /* bottom tag chips */
  .ov-tags{
    position:absolute; left:50%; bottom:5%;
    transform:translateX(-50%);
    display:flex; gap:6px;
    z-index:5;
    flex-wrap:wrap;
    justify-content:center;
    width:90%;
  }
  .ov-tag{
    padding:3px 7px;
    border:1px solid rgba(255,255,255,.12);
    background:rgba(11,22,35,.46);
    -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
    font-family:'IBM Plex Mono', monospace;
    font-size:8.5px; letter-spacing:.12em; text-transform:uppercase;
    color:rgba(201,210,222,.78);
    opacity:0;
    animation: ovFadeIn .5s cubic-bezier(.2,.7,.3,1) forwards;
  }
  .ov-tag:nth-child(1){ animation-delay:3.15s }
  .ov-tag:nth-child(2){ animation-delay:3.25s }
  .ov-tag:nth-child(3){ animation-delay:3.35s }
  .ov-tag:nth-child(4){ animation-delay:3.45s }
  .ov-tag.active{
    border-color:rgba(225,29,46,.48);
    color:#fff;
    display:inline-flex; align-items:center; gap:5px;
  }
  .ov-tag.active i{
    width:5px; height:5px; background:var(--red); border-radius:50%;
    box-shadow:0 0 0 0 rgba(225,29,46,.7);
    animation: ovPulse 2.4s ease-out infinite;
    animation-delay:4s;
  }
  @keyframes ovPulse{
    0%   { box-shadow:0 0 0 0 rgba(225,29,46,.55) }
    70%  { box-shadow:0 0 0 7px rgba(225,29,46,0) }
    100% { box-shadow:0 0 0 0 rgba(225,29,46,0) }
  }

  /* SVG element animations */
  .ov-grid{ opacity:0; animation: ovFadeIn .9s .2s cubic-bezier(.2,.7,.3,1) forwards }

  .ov-corners .corner{
    opacity:0;
    transform-box: fill-box;
    transform-origin: center;
    animation: ovCornerIn .55s cubic-bezier(.2,.7,.3,1) forwards;
  }
  @keyframes ovCornerIn{
    from { opacity:0; transform:scale(.35) }
    to   { opacity:1; transform:scale(1) }
  }
  .ov-corners .c1{ animation-delay:.55s }
  .ov-corners .c2{ animation-delay:.7s }
  .ov-corners .c3{ animation-delay:.85s }
  .ov-corners .c4{ animation-delay:1.0s }

  .ov-rect{ opacity:0; animation: ovRectIn 1s 1.2s cubic-bezier(.2,.7,.3,1) forwards }
  @keyframes ovRectIn{ from { opacity:0 } to { opacity:.45 } }

  .ov-dim line{ opacity:0; animation: ovFadeIn .35s cubic-bezier(.2,.7,.3,1) forwards }
  .ov-dim-w line:nth-child(1){ animation-delay:1.65s }
  .ov-dim-w line:nth-child(2){ animation-delay:1.75s }
  .ov-dim-w .ov-line{
    stroke-dasharray:240; stroke-dashoffset:240;
    animation: ovLineDraw .75s 1.7s cubic-bezier(.2,.7,.3,1) forwards, ovFadeIn .1s 1.7s forwards;
  }
  .ov-dim-h line:nth-child(1){ animation-delay:1.82s }
  .ov-dim-h line:nth-child(2){ animation-delay:1.92s }
  .ov-dim-h .ov-line{
    stroke-dasharray:160; stroke-dashoffset:160;
    animation: ovLineDraw .7s 1.88s cubic-bezier(.2,.7,.3,1) forwards, ovFadeIn .1s 1.88s forwards;
  }
  @keyframes ovLineDraw{ to { stroke-dashoffset:0 } }

  .ov-callout circle{ opacity:0; animation: ovFadeIn .3s 2.3s forwards }
  .ov-callout .ov-line{
    opacity:0; stroke-dasharray:3 3;
    animation: ovFadeIn .5s 2.32s forwards;
  }

  @media (prefers-reduced-motion: reduce){
    .spec-overlay *, .spec-overlay *::before, .spec-overlay *::after,
    .scan-line, .spec-photo-base{
      animation:none !important;
      opacity:1 !important;
      stroke-dashoffset:0 !important;
      transition:none !important;
    }
    .ov-rect{ opacity:.45 !important }
    .scan-line{ display:none }
  }
  .spec-meta{
    padding:18px 20px; display:grid; grid-template-columns:1fr 1fr; gap:14px 24px;
  }
  .spec-meta dt{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:#6B7A92; letter-spacing:.14em; text-transform:uppercase;
    margin:0 0 4px;
  }
  .spec-meta dd{ margin:0; color:#fff; font-size:15px; font-weight:500 }
  .spec-foot{
    border-top:1px solid #1F2C40; padding:12px 20px;
    display:flex; justify-content:space-between; align-items:center;
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:#7A8699; letter-spacing:.12em; text-transform:uppercase;
  }
  .spec-foot .red-dot{ width:6px; height:6px; background:var(--red); display:inline-block; margin-right:6px; vertical-align:middle }

  /* hero bottom strip — KPI / trust */
  .hero-strip{
    border-top:1px solid #1B2738;
    background:#06101B;
    position:relative; z-index:1;
  }
  .hero-strip-wrap{
    max-width:1440px; margin:0 auto;
    padding:0 32px;
    display:grid; grid-template-columns:repeat(4, 1fr);
  }
  .strip-cell{
    padding:22px 28px;
    border-right:1px solid #1B2738;
    display:flex; flex-direction:column; gap:4px;
  }
  .strip-cell:last-child{ border-right:0 }
  .strip-cell .label{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:#6B7A92; letter-spacing:.14em; text-transform:uppercase;
  }
  .strip-cell .value{ color:#fff; font-size:15px; font-weight:500 }
  .strip-cell .value .red{ color:var(--red) }

  /* ---------- section base ---------- */
  section{ position:relative }
  .section-head{
    max-width:1440px; margin:0 auto;
    padding:96px 32px 32px;
    display:grid; grid-template-columns:auto 1fr auto; align-items:end; gap:48px;
  }
  .section-num{
    font-family:'IBM Plex Mono', monospace; font-size:12px;
    color:var(--red); letter-spacing:.16em; text-transform:uppercase;
    border:1px solid #D3D3CD; padding:6px 10px;
  }
  .section-title{
    margin:0; font-size:46px; line-height:1.05; letter-spacing:-.02em;
    font-weight:600; text-wrap:balance;
  }
  .section-title em{
    font-style:normal; color:var(--red);
  }
  .section-sub{
    font-family:'IBM Plex Mono', monospace; font-size:12px;
    color:var(--muted); letter-spacing:.12em; text-transform:uppercase;
    text-align:right;
  }
  .section-divider{
    max-width:1440px; margin:0 auto;
    padding:0 32px;
  }
  .section-divider hr{
    border:0; border-top:1px solid #D3D3CD; margin:0;
  }
  .section-wrap{
    max-width:1440px; margin:0 auto;
    padding:32px 32px 96px;
  }

  /* ---------- services ---------- */
  .services{ background:var(--paper) }
  .service-catalog{padding-bottom:76px}
  .service-catalog-top{
    display:grid;
    grid-template-columns:minmax(0, 1fr) auto;
    gap:24px;
    align-items:start;
    margin-bottom:22px;
  }
  .section-note{
    max-width:760px;
    margin:0;
    color:#586579;
    font-size:15px;
    line-height:1.6;
  }
  .svc-rail{
    display:grid;
    grid-template-columns:repeat(5, minmax(0, 1fr));
    overflow:visible;
    scroll-padding-left:1px;
    border-top:1px solid #D3D3CD;
    border-left:1px solid #D3D3CD;
  }
  .svc{
    background:#fff;
    border-right:1px solid #D3D3CD;
    border-bottom:1px solid #D3D3CD;
    padding:18px;
    display:flex; flex-direction:column; align-items:flex-start; gap:15px;
    position:relative;
    transition:background .15s, transform .18s;
    min-height:0;
  }
  .svc:hover{ background:#FAFAF7; transform:translateY(-2px) }
  .svc-num{
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:var(--muted); letter-spacing:.16em; text-transform:uppercase;
    display:flex; justify-content:space-between; align-items:center;
  }
  .svc-num b{ color:var(--ink); font-weight:600 }
  .svc h3{
    margin:0; font-size:21px; line-height:1.15; letter-spacing:-.01em;
    font-weight:600;
  }
  .svc p{ margin:0; color:#3A4759; font-size:14px; line-height:1.5 }
  .svc-meta{
    border-top:1px solid #E5E5DF; padding-top:14px; margin-top:0;
    display:grid; grid-template-columns:1fr; gap:8px;
  }
  .svc-meta-row{
    display:grid; grid-template-columns:1fr; gap:3px;
    font-size:12.5px;
  }
  .svc-meta-row dt{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:var(--muted); letter-spacing:.12em; text-transform:uppercase;
    padding-top:2px;
  }
  .svc-meta-row dd{ margin:0; color:var(--ink) }
  .svc-cta{
    margin-top:8px;
    display:inline-flex; align-items:center; gap:8px;
    font-family:'IBM Plex Mono', monospace; font-size:12px;
    letter-spacing:.08em; text-transform:uppercase;
    color:var(--ink); font-weight:600;
    border-bottom:1px solid var(--red); padding-bottom:4px; align-self:flex-start;
  }
  .svc-cta .red{ color:var(--red) }
  .svc-cta:hover{ color:var(--red) }

  .svc-img{
    width:156px;
    height:156px;
    min-height:0;
    border-radius:999px;
    overflow:hidden;
    background:
      repeating-linear-gradient(45deg, rgba(11,22,35,.04) 0 2px, transparent 2px 14px),
      #E8E8E2;
    border:1px solid #D3D3CD;
    display:grid; place-items:center;
    color:#6B7A92; font-family:'IBM Plex Mono', monospace;
    font-size:11px; letter-spacing:.14em; text-transform:uppercase;
    margin-bottom:6px;
    position:relative;
    isolation:isolate;
    transition:filter .35s ease;
  }
  .services .svc-rail .svc-img.photo-hydro,
  .services .svc-rail .svc-img.photo-sanace,
  .services .svc-rail .svc-img.photo-torkret,
  .services .svc-rail .svc-img.photo-injektaze,
  .services .svc-rail .svc-img.photo-opravy{
    min-height:0;
    color:#fff;
    background-size:auto, cover;
    background-position:center;
    transition:background-size .35s ease, filter .35s ease;
  }
  .services .svc-rail .svc-img.photo-torkret{background:url('/service-illu-torkret.svg') center / cover no-repeat}
  .services .svc-rail .svc-img.photo-sanace{background:url('/service-illu-sanace.svg') center / cover no-repeat}
  .services .svc-rail .svc-img.photo-hydro{background:url('/service-illu-hydro.svg') center / cover no-repeat}
  .services .svc-rail .svc-img.photo-injektaze{background:url('/service-illu-injektaze.svg') center / cover no-repeat}
  .services .svc-rail .svc-img.photo-opravy{background:url('/service-illu-opravy-zb.svg') center / cover no-repeat}
  .services .svc:hover .svc-img{
    filter:saturate(1.08) contrast(1.05);
  }
  .services .svc:hover .svc-img.photo-hydro,
  .services .svc:hover .svc-img.photo-sanace,
  .services .svc:hover .svc-img.photo-torkret,
  .services .svc:hover .svc-img.photo-injektaze,
  .services .svc:hover .svc-img.photo-opravy{background-size:102%}
  .svc-img::before, .svc-img::after{
    content:""; position:absolute; width:22px; height:22px; border:1px solid rgba(255,255,255,.7);
    z-index:2;
    transition:border-color .18s, width .18s, height .18s;
  }
  .svc-img::before{ left:18px; top:18px; border-right:0; border-bottom:0 }
  .svc-img::after{ right:18px; bottom:18px; border-left:0; border-top:0 }
  .svc:hover .svc-img::before,
  .svc:hover .svc-img::after{
    width:24px; height:24px; border-color:var(--red);
  }
  .svc-img .measure{
    position:absolute;
    z-index:3;
    display:inline-flex;
    align-items:center;
    min-height:20px;
    padding:0 8px;
    border:1px solid rgba(220,38,38,.72);
    background:rgba(5,12,20,.72);
    color:#fff;
    font-family:'IBM Plex Mono', monospace;
    font-size:9px;
    line-height:1;
    letter-spacing:.12em;
    text-transform:uppercase;
    opacity:.58;
    transform:translateY(2px);
    transition:opacity .18s, transform .18s, border-color .18s;
  }
  .svc:hover .measure{
    opacity:1;
    transform:translateY(0);
    border-color:var(--red);
  }
  .measure-top{top:22px; right:12px}
  .measure-side{display:none}
  .svc:hover .measure-side{transform:translateY(-50%)}
  .measure-area{left:18px; bottom:20px; background:rgba(220,38,38,.9)}
  .service-actions{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:20px;
    margin-top:26px;
  }
  .service-detail-link{
    display:inline-flex;
    align-items:center;
    gap:9px;
    color:var(--ink);
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    font-weight:700;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-bottom:1px solid var(--red);
    padding-bottom:5px;
  }
  .service-detail-link span,
  .service-actions .arrow{transition:transform .18s}
  .service-detail-link:hover{color:var(--red)}
  .service-detail-link:hover span,
  .service-actions .btn:hover .arrow{transform:translateX(3px)}

  @media (prefers-reduced-motion: reduce){
    .svc,
    .svc-img,
    .svc-img::before,
    .svc-img::after,
    .svc-img .measure,
    .service-detail-link span,
    .service-actions .arrow{
      transition:none !important;
    }
    .services .svc:hover .svc-img.photo-hydro,
    .services .svc:hover .svc-img.photo-sanace,
    .services .svc:hover .svc-img.photo-torkret,
    .services .svc:hover .svc-img.photo-injektaze,
    .services .svc:hover .svc-img.photo-opravy{background-size:cover}
  }

  /* ---------- for whom (klienti) ---------- */
  .clients{ background:var(--paper-2) }
  .cli-grid{
    display:grid; grid-template-columns:repeat(4, 1fr); gap:0;
    border-top:1px solid #D3D3CD; border-left:1px solid #D3D3CD;
  }
  .cli{
    background:var(--paper);
    border-right:1px solid #D3D3CD;
    border-bottom:1px solid #D3D3CD;
    padding:28px 24px 24px;
    min-height:200px;
    display:flex; flex-direction:column; gap:14px;
    position:relative;
    transition:background .2s ease, box-shadow .25s ease, transform .25s ease;
  }
  .cli:hover{
    background:#fff;
    box-shadow:0 22px 55px rgba(11,22,35,.09);
    transform:translateY(-3px);
    z-index:2;
  }
  .cli-icon{
    width:56px; height:56px;
    border:1px solid rgba(11,22,35,.78); position:relative;
    display:grid; place-items:center;
    background:
      linear-gradient(135deg, rgba(220,38,38,.08), transparent 42%),
      rgba(255,255,255,.42);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);
    transition:border-color .25s ease, background .25s ease, transform .25s ease;
  }
  .cli-icon::before,
  .cli-icon::after{
    content:""; position:absolute; width:12px; height:12px;
    border:1px solid var(--red);
    opacity:.8;
    transition:width .25s ease, height .25s ease, opacity .25s ease;
  }
  .cli-icon::before{ left:-1px; top:-1px; border-right:0; border-bottom:0 }
  .cli-icon::after{ right:-1px; bottom:-1px; border-left:0; border-top:0 }
  .cli-icon svg{
    width:30px; height:30px;
    stroke:var(--ink); stroke-width:1.35; fill:none;
    stroke-linecap:square; stroke-linejoin:miter;
    transition:transform .25s ease, stroke .25s ease;
  }
  .cli-icon svg .accent{ stroke:var(--red); opacity:.95 }
  .cli-icon svg .accent-fill{ fill:var(--red); stroke:none; opacity:.95 }
  .cli:hover .cli-icon{
    border-color:var(--red);
    background:
      linear-gradient(135deg, rgba(220,38,38,.14), transparent 46%),
      #fff;
    transform:translateY(-2px);
  }
  .cli:hover .cli-icon::before,
  .cli:hover .cli-icon::after{ width:18px; height:18px; opacity:1 }
  .cli:hover .cli-icon svg{ transform:scale(1.06); stroke:#071321 }
  .cli-num{
    position:absolute; top:14px; right:18px;
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:var(--muted); letter-spacing:.12em;
  }
  .cli h4{
    margin:0; font-size:17px; line-height:1.25; font-weight:600;
  }
  .cli p{
    margin:0; font-size:13px; line-height:1.5; color:#4A5566;
  }

  /* ---------- problems ---------- */
  .problems{ background:#0B1623; color:#fff; }
  .problems .section-num{ color:var(--red); border-color:#2A3850 }
  .problems .section-sub{ color:#7A8699 }
  .problems .section-title{ color:#fff }
  .problems .section-divider hr{ border-color:#1F2C40 }
  .prob-grid{
    display:grid; grid-template-columns:repeat(4, 1fr); gap:0;
    border-top:1px solid #1F2C40; border-left:1px solid #1F2C40;
  }
  .prob{
    background:#0B1623;
    border-right:1px solid #1F2C40; border-bottom:1px solid #1F2C40;
    padding:28px 24px; min-height:240px;
    display:flex; flex-direction:column; gap:14px;
    position:relative;
    transition:background .15s;
  }
  .prob:hover{ background:#0E1B2A }
  .prob-tag{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:var(--red); letter-spacing:.14em; text-transform:uppercase;
    display:flex; align-items:center; gap:8px;
  }
  .prob-tag::before{
    content:""; width:18px; height:1px; background:var(--red);
  }
  .prob h4{ margin:0; font-size:18px; line-height:1.25; font-weight:600; color:#fff }
  .prob p{ margin:0; font-size:13px; line-height:1.55; color:#9AA6B8 }
  .prob-solution{
    margin-top:auto; padding-top:14px; border-top:1px solid #1F2C40;
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:#C9D2DE; letter-spacing:.06em; text-transform:uppercase;
  }
  .prob-solution b{ color:#fff; font-weight:500 }
  .problem-cta{
    margin-top:0;
    border:1px solid #1F2C40;
    border-top:0;
    background:
      linear-gradient(90deg, rgba(220,38,38,.12), transparent 42%),
      #0B1623;
    padding:28px 32px;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:28px;
    align-items:center;
    position:relative;
  }
  .problem-cta::before{
    content:""; position:absolute; left:0; top:0; width:72px; height:2px;
    background:var(--red);
  }
  .problem-cta h3{
    margin:0 0 8px; color:#fff; font-size:24px; line-height:1.2; font-weight:700;
  }
  .problem-cta p{
    margin:0; max-width:760px; color:#9AA6B8; font-size:15px; line-height:1.6;
  }

  /* ---------- process ---------- */
  .process{ background:var(--paper) }
  .proc-grid{
    display:grid; grid-template-columns:repeat(4, 1fr); gap:0;
    border-top:1px solid var(--ink); border-left:1px solid #D3D3CD;
    position:relative;
  }
  .proc{
    background:#fff;
    border-right:1px solid #D3D3CD; border-bottom:1px solid #D3D3CD;
    padding:32px 28px 28px;
    display:flex; flex-direction:column; gap:14px;
    position:relative;
    min-height:280px;
  }
  .proc::before{
    content:""; position:absolute; top:-1px; left:28px; width:54px; height:2px;
    background:var(--red); opacity:.9;
  }
  .proc:not(:last-child)::after{
    content:""; position:absolute; top:48px; right:-18px; width:36px; height:1px;
    background:linear-gradient(90deg, var(--red), transparent);
    z-index:1;
  }
  .proc-step{
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
    display:flex; justify-content:space-between;
  }
  .proc-step b{ color:var(--ink); font-size:38px; font-family:'IBM Plex Sans Condensed'; font-weight:700; letter-spacing:-.02em; line-height:1 }
  .proc-title{ margin:0; font-size:20px; font-weight:600; line-height:1.25 }
  .proc p{ margin:0; font-size:14px; line-height:1.55; color:#4A5566 }
  .proc-list{
    margin-top:auto; padding-top:14px; border-top:1px solid #E5E5DF;
    display:flex; flex-direction:column; gap:6px;
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:#3A4759; letter-spacing:.04em; text-transform:uppercase;
  }
  .proc-list span::before{ content:"› "; color:var(--red) }

  /* ---------- why torpro ---------- */
  .why{ background:var(--paper-2) }
  .why-grid{
    display:grid; grid-template-columns:1.2fr .8fr; gap:0;
    border-top:1px solid #D3D3CD;
  }
  .why-left{
    background:#fff;
    padding:48px;
    border-right:1px solid #D3D3CD;
    border-bottom:1px solid #D3D3CD;
    border-left:1px solid #D3D3CD;
  }
  .why-right{
    background:var(--navy);
    color:#fff;
    padding:48px;
    border-bottom:1px solid #D3D3CD;
    border-right:1px solid #D3D3CD;
    position:relative;
    overflow:hidden;
  }
  .why-right::before{
    content:""; position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
    background-size:48px 48px;
    pointer-events:none;
  }
  .why-list{
    display:flex; flex-direction:column;
  }
  .why-item{
    padding:22px 0;
    border-top:1px solid #E5E5DF;
    display:grid; grid-template-columns:60px 1fr auto; gap:24px; align-items:start;
  }
  .why-item:first-child{ border-top:0; padding-top:0 }
  .why-item .num{
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:var(--muted); letter-spacing:.12em; padding-top:4px;
  }
  .why-item h5{ margin:0 0 6px; font-size:18px; font-weight:600; line-height:1.25 }
  .why-item p{ margin:0; font-size:14px; color:#4A5566; line-height:1.55 }
  .why-item .mark{
    width:20px; height:20px; border:1.5px solid var(--red);
    position:relative; flex:0 0 auto;
  }
  .why-item .mark::after{
    content:""; position:absolute; left:3px; top:3px; right:3px; bottom:3px;
    background:var(--red);
  }

  .why-right h3{
    font-family:'IBM Plex Sans'; margin:0 0 24px;
    font-size:32px; line-height:1.15; font-weight:600; position:relative;
  }
  .why-right .stat{
    position:relative;
    border-top:1px solid #2A3850;
    padding:20px 0;
    display:grid; grid-template-columns:1fr auto; align-items:end; gap:16px;
  }
  .why-right .stat-label{
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:#7A8699; letter-spacing:.12em; text-transform:uppercase;
  }
  .why-right .stat-value{
    font-family:'IBM Plex Sans Condensed', sans-serif;
    font-size:48px; line-height:1; font-weight:700; letter-spacing:-.02em;
  }
  .why-right .stat-value small{
    font-size:14px; color:#9AA6B8; font-weight:400; letter-spacing:0; margin-left:6px;
  }
  .why-right .stat-value small:first-child{
    margin-left:0; margin-right:6px;
  }
  .why-right .stat-value.stat-region{
    display:flex; flex-direction:column; align-items:flex-end; gap:5px;
    font-size:48px;
  }
  .why-right .stat-value.stat-region small{
    margin:0; font-family:'IBM Plex Mono', monospace; font-size:10px;
    color:#7A8699; letter-spacing:.08em; text-transform:uppercase;
    white-space:nowrap;
  }

  /* ---------- documentation ---------- */
  .docs{ background:var(--paper) }
  .doc-grid{
    display:grid; grid-template-columns:repeat(3, 1fr); gap:0;
    border:1px solid #D3D3CD;
  }
  .doc{
    background:#fff; padding:32px 28px 28px;
    border-right:1px solid #D3D3CD;
    display:flex; flex-direction:column; gap:14px; min-height:280px;
    overflow:hidden;
    transition:transform .35s ease, box-shadow .35s ease, border-color .35s ease;
  }
  .doc:hover{
    transform:translateY(-8px);
    border-color:rgba(220,38,38,.42);
    box-shadow:0 28px 70px rgba(11,22,35,.18);
    z-index:2;
  }
  .doc:last-child{ border-right:0 }
  .doc-img{
    aspect-ratio:4/3;
    background:
      repeating-linear-gradient(45deg, rgba(11,22,35,.04) 0 2px, transparent 2px 14px),
      #E8E8E2;
    border:1px solid #D3D3CD;
    display:grid; place-items:center;
    color:#6B7A92; font-family:'IBM Plex Mono', monospace;
    font-size:11px; letter-spacing:.14em; text-transform:uppercase;
    position:relative;
    overflow:hidden;
    isolation:isolate;
  }
  .doc-img img{
    width:100%; height:100%;
    object-fit:cover;
    display:block;
    transform:scale(1.025);
    filter:saturate(.92) contrast(1.05);
    transition:transform .65s cubic-bezier(.2,.8,.2,1), filter .65s ease;
  }
  .doc-img-photo::before{
    z-index:2;
  }
  .doc-img-photo::after{
    z-index:2;
  }
  .doc-img-photo{
    background:#0B1623;
  }
  .doc-img-photo:has(img)::before,
  .doc-img-photo:has(img)::after{
    pointer-events:none;
  }
  .doc-img-photo span{display:none}
  .doc:hover .doc-img img{
    transform:scale(1.09) translate3d(10px,-8px,0);
    filter:saturate(1.08) contrast(1.1) brightness(1.03);
  }
  .doc-img-photo::selection{background:transparent}
  .doc-img-photo:after{
    content:""; position:absolute; inset:auto 0 0 0; height:44%;
    background:linear-gradient(180deg, transparent, rgba(11,22,35,.45));
    border:0;
    width:auto;
    pointer-events:none;
  }
  .doc:hover .doc-img-photo:after{
    background:linear-gradient(180deg, transparent, rgba(220,38,38,.22) 42%, rgba(11,22,35,.52));
  }
  .doc-img::before, .doc-img::after{
    content:""; position:absolute; width:16px; height:16px; border:1px solid var(--red);
  }
  .doc-img::before{ left:8px; top:8px; border-right:0; border-bottom:0 }
  .doc-img::after{ right:8px; bottom:8px; border-left:0; border-top:0 }
  .doc-img-photo{
    box-shadow:inset 0 -90px 80px rgba(11,22,35,.34);
  }
  .doc:hover .doc-img-photo{
    box-shadow:inset 0 -100px 90px rgba(220,38,38,.18), inset 0 0 0 1px rgba(220,38,38,.22);
  }
  .doc h4{ margin:0; font-size:18px; font-weight:600 }
  .doc p{ margin:0; font-size:14px; color:#4A5566 }

  /* ---------- contact / form ---------- */
  .contact{
    background:var(--navy);
    color:#fff;
    border-top:1px solid #1B2738;
    position:relative;
    overflow:hidden;
  }
  .contact::before{
    content:""; position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
    background-size:80px 80px;
    pointer-events:none;
  }
  .contact .section-num{ color:var(--red); border-color:#2A3850 }
  .contact .section-title{ color:#fff }
  .contact .section-sub{ color:#7A8699 }
  .contact .section-divider hr{ border-color:#1F2C40 }
  .contact-grid{
    display:grid; grid-template-columns:.85fr 1.15fr; gap:0;
    border:1px solid #1F2C40; position:relative;
  }
  .contact-left{
    padding:40px;
    border-right:1px solid #1F2C40;
    background:#0E1B2A;
  }
  .contact-left h3{
    margin:0 0 16px; font-size:24px; font-weight:600; line-height:1.2;
  }
  .contact-left p{ color:#9AA6B8; font-size:14px; line-height:1.6; margin:0 0 28px }
  .contact-list{
    display:flex; flex-direction:column; gap:18px;
    border-top:1px solid #1F2C40; padding-top:24px;
  }
  .contact-list dt{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:#6B7A92; letter-spacing:.14em; text-transform:uppercase;
    margin:0 0 4px;
  }
  .contact-list dd{ margin:0; font-size:16px; font-weight:500 }
  .contact-list dd small{ color:#9AA6B8; font-weight:400; display:block; font-size:13px; margin-top:2px }
  .contact-right{
    padding:40px;
    background:#0B1623;
  }
  form{ display:grid; grid-template-columns:1fr 1fr; gap:18px 20px }
  .form-row{ grid-column:span 1; display:flex; flex-direction:column; gap:6px }
  .form-row.full{ grid-column:span 2 }
  .form-row label{
    font-family:'IBM Plex Mono', monospace; font-size:10.5px;
    color:#7A8699; letter-spacing:.12em; text-transform:uppercase;
  }
  .form-row label .req{ color:var(--red) }
  .form-row input, .form-row select, .form-row textarea{
    background:transparent;
    border:0; border-bottom:1px solid #2A3850;
    color:#fff; font-size:15px; padding:8px 0 10px;
    font-family:inherit; outline:none;
    transition:border .15s;
  }
  .form-row input:focus, .form-row select:focus, .form-row textarea:focus{ border-bottom-color:var(--red) }
  .form-row textarea{ min-height:80px; resize:vertical }
  .form-row select{ appearance:none; background-image:linear-gradient(45deg, transparent 50%, #7A8699 50%), linear-gradient(135deg, #7A8699 50%, transparent 50%); background-position:calc(100% - 14px) 50%, calc(100% - 8px) 50%; background-size:6px 6px, 6px 6px; background-repeat:no-repeat }
  .form-row select option{ background:#0E1B2A; color:#fff }
  .upload{
    border:1px dashed #2A3850; padding:18px;
    text-align:left;
    font-family:'IBM Plex Mono', monospace; font-size:11.5px;
    color:#7A8699; letter-spacing:.06em; text-transform:uppercase;
    cursor:pointer; transition:border .15s, background .15s, color .15s;
    display:flex; flex-direction:column; gap:6px;
    background:rgba(255,255,255,.015);
  }
  .upload:hover{ border-color:var(--red); color:#fff; background:rgba(220,38,38,.06) }
  .upload input{ position:absolute; opacity:0; pointer-events:none }
  .upload b{ color:#fff; font-weight:700 }
  .upload b::before{ content:"+"; color:var(--red); margin-right:10px }
  .upload span{ color:#7A8699; font-size:10px; line-height:1.4 }
  .upload.has-files{ border-color:var(--red); background:rgba(220,38,38,.08) }
  .form-foot{
    grid-column:span 2; display:flex; justify-content:space-between; align-items:center;
    margin-top:8px; padding-top:18px; border-top:1px solid #1F2C40;
  }
  .form-foot small{
    color:#7A8699; font-family:'IBM Plex Mono', monospace;
    font-size:10.5px; letter-spacing:.06em; text-transform:uppercase;
  }
  .privacy-note{
    grid-column:span 2;
    margin:0;
    color:#7A8699;
    font-size:12px;
    line-height:1.55;
  }
  .privacy-note a{ color:#fff; text-decoration:underline; text-decoration-color:var(--red); text-underline-offset:3px }

  /* ---------- legal pages ---------- */
  .legal-page{
    background:#0B1623;
    color:#fff;
    position:relative;
    overflow:hidden;
    min-height:70vh;
  }
  .legal-page .section-title{color:#fff}
  .legal-page .section-num{color:var(--red); border-color:#2A3850}
  .legal-page .section-sub{color:#7A8699}
  .legal-page .section-divider hr{border-color:#1F2C40}
  .legal-wrap{position:relative; padding-top:24px; padding-bottom:80px}
  .legal-card{
    max-width:980px;
    border:1px solid #1F2C40;
    background:rgba(11,22,35,.82);
    padding:42px;
  }
  .legal-card h2{
    margin:34px 0 10px;
    color:#fff;
    font-size:22px;
    line-height:1.2;
  }
  .legal-card h2:first-child{margin-top:0}
  .legal-card p{
    margin:0 0 14px;
    color:#B7C2D2;
    font-size:15px;
    line-height:1.7;
  }
  .legal-card a{color:#fff; text-decoration:underline; text-decoration-color:var(--red); text-underline-offset:3px}
  .legal-bottom{margin-top:0}

  /* ---------- footer ---------- */
  footer{
    background:#06101B; color:#9AA6B8;
    border-top:1px solid #1B2738;
    padding:64px 0 32px;
  }
  .foot-wrap{
    max-width:1440px; margin:0 auto;
    padding:0 32px;
    display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:48px;
  }
  .foot-col h6{
    margin:0 0 18px;
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:#fff; letter-spacing:.14em; text-transform:uppercase; font-weight:500;
  }
  .foot-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px }
  .foot-col a{ font-size:14px; color:#9AA6B8 }
  .foot-col a:hover{ color:#fff }
  .foot-brand p{ font-size:14px; line-height:1.6; color:#9AA6B8; max-width:340px }
  .foot-bottom{
    max-width:1440px; margin:48px auto 0;
    padding:24px 32px 0;
    border-top:1px solid #1B2738;
    display:flex; justify-content:space-between;
    font-family:'IBM Plex Mono', monospace; font-size:11px;
    color:#6B7A92; letter-spacing:.1em; text-transform:uppercase;
  }

  /* ---------- responsive trim (keep simple) ---------- */
  @media (max-width:1100px){
    .hero h1{font-size:54px}
    .hero-wrap{grid-template-columns:1fr; gap:48px; padding:56px 24px 72px}
    .section-head{grid-template-columns:auto 1fr; padding:72px 24px 24px}
    .section-sub{display:none}
  .section-title{font-size:36px}
    .svc-rail{grid-template-columns:repeat(2, minmax(0, 1fr))}
    .cli-grid, .prob-grid, .proc-grid, .doc-grid{grid-template-columns:repeat(2,1fr)}
    .why-grid, .contact-grid{grid-template-columns:1fr}
    .why-right, .contact-left{border-right:0}
    form{grid-template-columns:1fr}
    .form-row.full, .form-foot, .privacy-note{grid-column:span 1}
    .foot-wrap{grid-template-columns:1fr 1fr}
    .hero-strip-wrap{grid-template-columns:repeat(2,1fr)}
    .strip-cell:nth-child(2){border-right:0}
    .menu{display:none}
    .proc:not(:last-child)::after{display:none}
  }


/* Production TORPRO additions */
.spec-photo-base{
  background:
    linear-gradient(180deg, rgba(11,22,35,.12), rgba(11,22,35,.58)),
    url('/hero-bg.png') center / cover no-repeat !important;
}
.svc-img.photo-hydro{background:linear-gradient(180deg,rgba(11,22,35,.08),rgba(11,22,35,.5)),url('/service-hydroizolace.png') center / cover no-repeat}
.svc-img.photo-sanace{background:linear-gradient(180deg,rgba(11,22,35,.08),rgba(11,22,35,.5)),url('/service-sanace-betonu.png') center / cover no-repeat}
.svc-img.photo-torkret{background:linear-gradient(180deg,rgba(11,22,35,.08),rgba(11,22,35,.5)),url('/service-strikany-beton.png') center / cover no-repeat}
.svc-img.photo-injektaze{background:linear-gradient(180deg,rgba(11,22,35,.08),rgba(11,22,35,.5)),url('/service-injektaze.png') center / cover no-repeat}
.svc-img.photo-opravy{background:linear-gradient(180deg,rgba(11,22,35,.08),rgba(11,22,35,.5)),url('/service-sanace-betonu.png') center / cover no-repeat}
.svc-img.photo-hydro,.svc-img.photo-sanace,.svc-img.photo-torkret,.svc-img.photo-injektaze,.svc-img.photo-opravy{color:transparent; min-height:210px}
.services .svc-rail .svc-img.photo-hydro,
.services .svc-rail .svc-img.photo-sanace,
.services .svc-rail .svc-img.photo-torkret,
.services .svc-rail .svc-img.photo-injektaze,
.services .svc-rail .svc-img.photo-opravy{
  min-height:0;
  color:#fff;
  background-size:auto, cover;
}
.services .svc-rail .svc-img.photo-torkret{background:url('/service-illu-torkret.svg') center / cover no-repeat}
.services .svc-rail .svc-img.photo-sanace{background:url('/service-illu-sanace.svg') center / cover no-repeat}
.services .svc-rail .svc-img.photo-hydro{background:url('/service-illu-hydro.svg') center / cover no-repeat}
.services .svc-rail .svc-img.photo-injektaze{background:url('/service-illu-injektaze.svg') center / cover no-repeat}
.services .svc-rail .svc-img.photo-opravy{background:url('/service-illu-opravy-zb.svg') center / cover no-repeat}
.service-page-img{aspect-ratio:4/3; min-height:0; border:0; margin:0}
.lead-text{max-width:900px; margin:0 0 28px; color:#3A4759; font-size:18px}
.mini-contact{background:#0B1623}
.mini-contact .section-title{color:#fff}
.contact-list a{color:#fff}
.service-lead-text{
  max-width:1040px;
  color:#B7C2D2;
  font-size:17px;
  line-height:1.65;
}
.service-detail-grid{
  grid-template-columns:repeat(5, minmax(0, 1fr));
}
.service-detail-grid .prob{
  min-height:260px;
}
.service-cta-section{
  border-top:1px solid #1F2C40;
  border-bottom:1px solid #1F2C40;
}
.service-cta-wrap{
  display:grid;
  grid-template-columns:minmax(0, 1fr) auto;
  gap:32px;
  align-items:center;
  padding-top:56px !important;
  padding-bottom:64px;
}
.service-cta-copy{
  max-width:860px;
}
.service-cta-copy .section-num{
  display:inline-flex;
  margin-bottom:18px;
  color:var(--red);
  border-color:#2A3850;
}
.service-cta-copy .section-title{
  margin:0;
  font-size:38px;
}
.service-cta-copy p{
  margin:18px 0 0;
  max-width:720px;
  color:#B7C2D2;
  font-size:16px;
  line-height:1.65;
}
@media (max-width:700px){
  .util-wrap{padding:8px 18px; align-items:flex-start; flex-direction:column; gap:8px}
  .util-left,.util-right{flex-wrap:wrap; gap:12px}
  .nav-wrap{grid-template-columns:1fr; gap:16px; padding:14px 20px}
  .nav-cta{flex-wrap:wrap}
  .nav-cta .btn{width:100%; justify-content:center}
  .hero h1{font-size:40px}
  .hero-strip-wrap{grid-template-columns:1fr}
  .strip-cell{border-right:0; border-bottom:1px solid #1B2738}
  .service-catalog-top{grid-template-columns:1fr; gap:16px}
  .svc-rail{grid-template-columns:1fr}
  .svc{padding:14px; gap:14px}
  .svc-img{width:150px; height:150px}
  .svc h3{font-size:22px}
  .svc-meta-row{grid-template-columns:1fr; gap:3px}
  .service-actions .btn{width:100%; justify-content:center}
  .service-detail-link{width:100%; justify-content:center}
  .cli-grid,.prob-grid,.proc-grid,.doc-grid{grid-template-columns:1fr}
  .service-detail-grid{grid-template-columns:1fr}
  .service-cta-wrap{grid-template-columns:1fr; padding-top:44px !important}
  .service-cta-wrap .btn{width:100%; justify-content:center}
  .service-cta-copy .section-title{font-size:30px}
  .problem-cta{grid-template-columns:1fr; padding:26px 22px}
  .problem-cta .btn{width:100%; justify-content:center}
  .problem-cta h3{font-size:22px}
  .foot-wrap{grid-template-columns:1fr}
}

/* ---------- focused mobile UX ---------- */
.mobile-only,
.mobile-menu-toggle,
.mobile-bottom-cta{
  display:none;
}
.form-fallback{
  grid-column:span 2;
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:-4px;
}
.form-fallback a{
  color:#fff;
  font-weight:700;
  text-decoration:underline;
  text-decoration-color:var(--red);
  text-underline-offset:4px;
}

@media (max-width:768px){
  body{padding-bottom:78px}
  .mobile-only{display:inline-flex}
  .util{display:none}

  .nav-wrap{
    grid-template-columns:auto 1fr;
    gap:14px;
    padding:10px 18px;
    position:relative;
  }
  .logo-img{height:46px}
  .nav-cta{
    justify-content:flex-end;
    gap:10px;
    flex-wrap:nowrap;
  }
  .nav-cta .btn{
    width:auto;
    min-height:44px;
    padding:10px 14px;
    font-size:12px;
  }
  .mobile-menu-toggle{
    width:46px;
    height:46px;
    display:inline-flex;
    flex-direction:column;
    justify-content:center;
    gap:5px;
    padding:0 12px;
    border:1px solid #2A3850;
    background:#0B1623;
    color:#fff;
    cursor:pointer;
  }
  .mobile-menu-toggle span{
    display:block;
    height:2px;
    width:100%;
    background:#fff;
    transition:transform .2s ease, opacity .2s ease;
  }
  .nav.is-open .mobile-menu-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav.is-open .mobile-menu-toggle span:nth-child(2){opacity:0}
  .nav.is-open .mobile-menu-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .menu{
    display:none;
    position:absolute;
    left:0;
    right:0;
    top:100%;
    z-index:60;
    flex-direction:column;
    gap:0;
    padding:10px 18px 18px;
    background:#0B1623;
    border-top:1px solid #1B2738;
    border-bottom:1px solid #1B2738;
  }
  .nav.is-open .menu{display:flex}
  .menu a{
    min-height:46px;
    display:flex;
    align-items:center;
    border-bottom:1px solid #1B2738;
    font-size:15px;
  }

  .hero-wrap{
    display:block;
    padding:44px 20px 42px;
  }
  .hero-eyebrow{
    margin-bottom:20px;
    font-size:10px;
    letter-spacing:.12em;
  }
  .hero h1{
    font-size:clamp(42px, 12vw, 64px);
    line-height:1;
    margin-bottom:18px;
    max-width:11ch;
  }
  .hero p.lead{
    font-size:16px;
    line-height:1.65;
    margin-bottom:24px;
    max-width:100%;
  }
  .hero-ctas{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    margin-bottom:22px;
  }
  .hero-ctas .btn{
    min-height:48px;
    justify-content:center;
    padding:12px 10px;
  }
  .btn-call{
    background:#fff;
    color:#0B1623;
    border-color:#fff;
  }
  .hero-ctas .btn-ghost{
    display:none;
  }
  .hero-tags{
    flex-wrap:nowrap;
    overflow-x:auto;
    gap:8px;
    padding-bottom:8px;
    scroll-snap-type:x proximity;
  }
  .hero-tags span{
    scroll-snap-align:start;
    font-size:10.5px;
    padding:7px 10px;
  }
  .spec-card{
    display:none;
  }
  .hero-strip-wrap{
    grid-template-columns:1fr 1fr;
  }
  .strip-cell{
    min-height:auto;
    padding:18px 20px;
  }

  .section-head{
    grid-template-columns:1fr;
    padding:56px 20px 20px;
    gap:14px;
  }
  .section-num{
    justify-self:start;
    font-size:10px;
    letter-spacing:.12em;
  }
  .section-title,
  .service-cta-copy .section-title{
    font-size:clamp(28px, 8vw, 38px);
    line-height:1.08;
  }
  .section-wrap{
    padding:20px 20px 56px;
  }

  .service-catalog{padding-bottom:54px}
  .svc-rail{
    display:grid;
    grid-auto-flow:column;
    grid-auto-columns:minmax(280px, 84vw);
    grid-template-columns:none;
    overflow-x:auto;
    overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;
    border-top:1px solid #D3D3CD;
    scrollbar-width:thin;
    scrollbar-color:var(--red) #E2E2DC;
  }
  .svc{
    scroll-snap-align:start;
    padding:18px;
    gap:12px;
  }
  .svc-img{
    width:100%;
    height:168px;
    border-radius:0;
  }
  .svc h3{font-size:22px}
  .svc p{
    font-size:14px;
    line-height:1.5;
  }
  .svc-meta{
    padding-top:12px;
  }
  .svc-meta-row dt{
    font-size:10px;
    letter-spacing:.08em;
  }

  .cli-grid,
  .prob-grid,
  .doc-grid{
    grid-template-columns:1fr;
  }
  .prob{
    min-height:auto;
    padding:22px 20px;
  }
  .prob p{
    font-size:14px;
    line-height:1.55;
  }
  .problem-cta{
    grid-template-columns:1fr;
    padding:24px 20px;
    gap:18px;
  }
  .problem-cta .btn{width:100%; justify-content:center}

  .proc-grid{
    grid-template-columns:1fr;
    position:relative;
    border-left:1px solid #D3D3CD;
  }
  .proc{
    min-height:auto;
    padding:24px 20px 24px 28px;
    border-left:0;
    position:relative;
  }
  .proc::before{
    content:"";
    position:absolute;
    left:-7px;
    top:32px;
    width:12px;
    height:12px;
    background:var(--red);
  }
  .proc-title{font-size:20px}
  .proc p{font-size:14px}

  .why-grid,
  .contact-grid{
    grid-template-columns:1fr;
  }
  .why-left,
  .why-right,
  .contact-left,
  .contact-right{
    padding:24px 20px;
  }
  .why-item{
    grid-template-columns:36px 1fr;
    gap:14px;
    padding:18px 0;
  }
  .why-item h5{font-size:18px}
  .why-item p{font-size:14px}
  .stat-value,
  .stat-region{
    font-size:44px;
  }
  .stat-region small{
    font-size:12px;
  }

  form{
    grid-template-columns:1fr;
    gap:16px;
  }
  .form-row,
  .form-row.full,
  .form-foot,
  .privacy-note,
  .form-fallback{
    grid-column:span 1;
  }
  .form-row input,
  .form-row select{
    min-height:50px;
    font-size:16px;
  }
  .form-row textarea{
    min-height:132px;
    font-size:16px;
  }
  .upload{
    padding:18px 16px;
    min-height:88px;
  }
  .form-foot{
    flex-direction:column;
    align-items:stretch;
    gap:14px;
  }
  .form-foot .btn{
    width:100%;
    justify-content:center;
    min-height:52px;
  }
  .form-fallback{
    flex-direction:column;
    gap:8px;
  }
  .privacy-note{
    font-size:12px;
  }

  .foot-wrap{
    grid-template-columns:1fr;
    padding:38px 20px;
  }
  .foot-bottom{
    padding:16px 20px 92px;
    flex-direction:column;
    gap:8px;
  }

  .mobile-bottom-cta{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:90;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));
    background:#0B1623;
    border-top:1px solid #1B2738;
  }
  .mobile-bottom-cta a{
    min-height:48px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:#fff;
    font-weight:800;
    text-transform:uppercase;
    font-size:13px;
    letter-spacing:.04em;
    border:1px solid #2A3850;
  }
  .mobile-bottom-cta a:last-child{
    background:var(--red);
    border-color:var(--red);
  }
}

@media (prefers-reduced-motion: reduce){
  .mobile-menu-toggle span{
    transition:none;
  }
}

/* ---------- hero video visual replacement ---------- */
.hero-visual{
  align-self:start;
  position:relative;
  width:min(46vw, 680px);
  max-width:680px;
  justify-self:end;
  margin-top:82px;
  background:rgba(8,20,32,.72);
  border:1px solid rgba(220,38,38,.34);
  -webkit-backdrop-filter:blur(4px);
  backdrop-filter:blur(4px);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.04),
    inset 0 0 0 2px rgba(220,38,38,.06),
    0 24px 80px rgba(0,0,0,.28);
  transition:border-color .45s ease, box-shadow .45s ease;
}
.hero-visual::before,
.hero-visual::after{
  content:"";
  position:absolute;
  z-index:4;
  width:38px;
  height:38px;
  border:2px solid var(--red);
  opacity:1;
  transition:opacity .45s ease, box-shadow .45s ease;
  pointer-events:none;
}
.hero-visual::before{left:-2px;top:-2px;border-right:0;border-bottom:0}
.hero-visual::after{right:-2px;bottom:-2px;border-left:0;border-top:0}
.visual-header{
  min-height:46px;
  padding:0 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  border-bottom:1px solid rgba(120,150,180,.18);
  color:#7A8699;
  font-family:'IBM Plex Mono', monospace;
  font-size:11px;
  letter-spacing:.12em;
  text-transform:uppercase;
  position:relative;
}
.visual-header::before{
  content:"";
  width:22px;
  height:1px;
  background:var(--red);
  position:absolute;
  left:18px;
  bottom:-1px;
}
.visual-header span:last-child{color:#fff}
.video-frame{
  position:relative;
  overflow:hidden;
  aspect-ratio:16/10;
  height:clamp(390px, 29vw, 470px);
  background:
    linear-gradient(180deg, rgba(11,22,35,.24), rgba(11,22,35,.68)),
    #07131f;
}
.video-frame::before,
.video-frame::after{
  content:"";
  position:absolute;
  z-index:3;
  pointer-events:none;
}
.video-frame::before{
  left:0;
  top:0;
  right:0;
  height:1px;
  background:linear-gradient(90deg, rgba(220,38,38,.92), transparent 34%, transparent 68%, rgba(220,38,38,.45));
}
.video-frame::after{
  inset:0;
  border:1px solid rgba(220,38,38,.16);
}
.visual-video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:60% center;
  transform:scale(1.001);
  filter:saturate(.95) contrast(1.05) brightness(.78);
  transition:transform .55s cubic-bezier(.2,.7,.3,1), filter .55s cubic-bezier(.2,.7,.3,1);
}
.video-overlay{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:
    linear-gradient(90deg, rgba(5,12,20,.36), rgba(5,12,20,.08) 46%, rgba(5,12,20,.36)),
    linear-gradient(180deg, rgba(5,12,20,.12), rgba(5,12,20,.42)),
    radial-gradient(ellipse 90% 70% at 50% 50%, transparent 50%, rgba(0,0,0,.42) 100%);
}
.corner{
  position:absolute;
  z-index:3;
  width:30px;
  height:30px;
  border-color:rgba(220,38,38,.95);
  border-style:solid;
  opacity:.96;
  transition:opacity .45s ease, filter .45s ease;
  pointer-events:none;
}
.corner-tl{left:16px;top:16px;border-width:1px 0 0 1px}
.corner-tr{right:16px;top:16px;border-width:1px 1px 0 0; border-color:rgba(190,210,230,.5)}
.corner-bl{left:16px;bottom:16px;border-width:0 0 1px 1px; border-color:rgba(190,210,230,.5)}
.corner-br{right:16px;bottom:16px;border-width:0 1px 1px 0}
.measurement-overlay{
  position:absolute;
  inset:0;
  z-index:2;
  opacity:.36;
  pointer-events:none;
  transition:opacity .45s ease;
}
.measure-line{
  position:absolute;
  left:17%;
  top:38%;
  width:48%;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.55), rgba(220,38,38,.86), transparent);
  transform:scaleX(.78);
  transform-origin:left;
  transition:transform .55s cubic-bezier(.2,.7,.3,1);
}
.measure-line::before{
  content:"";
  position:absolute;
  left:42%;
  top:-3px;
  width:7px;
  height:7px;
  background:var(--red);
  box-shadow:0 0 14px rgba(220,38,38,.45);
}
.measure-label{
  position:absolute;
  padding:4px 7px;
  border:1px solid rgba(220,38,38,.48);
  background:rgba(7,20,33,.62);
  color:#fff;
  font-family:'IBM Plex Mono', monospace;
  font-size:9px;
  letter-spacing:.12em;
  text-transform:uppercase;
  white-space:nowrap;
  box-shadow:0 8px 22px rgba(0,0,0,.24);
}
.measure-depth{right:24px;top:24px}
.measure-area{left:24px;bottom:24px;background:rgba(220,38,38,.9);border-color:rgba(255,255,255,.18)}
.video-frame .scan-line{
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(220,38,38,.5), rgba(255,255,255,.45), rgba(220,38,38,.5), transparent);
  opacity:0;
  animation:videoScan 7s 2s ease-in-out infinite;
}
@keyframes videoScan{
  0%{transform:translateY(-2%);opacity:0}
  10%{opacity:.45}
  90%{opacity:.35}
  100%{transform:translateY(102%);opacity:0}
}
.hero-visual:hover{
  border-color:rgba(170,195,225,.42);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.045),
    0 0 0 1px rgba(220,38,38,.18),
    0 22px 70px rgba(0,0,0,.26);
}
.hero-visual:hover::before,
.hero-visual:hover::after,
.hero-visual:hover .corner{
  opacity:1;
  filter:drop-shadow(0 0 8px rgba(220,38,38,.38));
}
.hero-visual:hover .visual-video{
  transform:scale(1.018);
  filter:saturate(1) contrast(1.08) brightness(.86);
}
.hero-visual:hover .measurement-overlay{opacity:.58}
.hero-visual:hover .measure-line{transform:scaleX(1)}

@media (max-width:1100px){
  .hero-visual{
    width:min(100%, 520px);
    max-width:520px;
    justify-self:start;
    margin-top:16px;
  }
}

@media (max-width:768px){
  .hero-visual{
    display:none;
  }
  .visual-header{
    min-height:42px;
    padding:12px 14px;
    font-size:9px;
    letter-spacing:.08em;
  }
  .video-frame{
    height:clamp(220px, 62vw, 280px);
    aspect-ratio:auto;
  }
  .visual-video{
    display:none;
  }
  .measurement-overlay{
    opacity:.28;
  }
  .corner{
    width:14px;
    height:14px;
  }
  .corner-tl{left:14px;top:14px}
  .corner-tr{right:14px;top:14px}
  .corner-bl{left:14px;bottom:14px}
  .corner-br{right:14px;bottom:14px}
}

@media (prefers-reduced-motion: reduce){
  .visual-video,
  .hero-visual,
  .hero-visual *,
  .hero-visual *::before,
  .hero-visual *::after{
    animation:none !important;
    transition:none !important;
  }
}
