/* ---- Design tokens (extracted from bimforyou.sk) ---- */
:root{
  --bg: #ECF0F3;
  --ink: #000000;
  --muted: #8293A1;
  --muted-2: #777777;
  --accent: #0500FA;
  --btn-text: #184993;
  --shadow-dark: rgba(209,217,230,1);
  --shadow-light: rgba(255,255,255,1);
  --radius-card: 20px;
  --radius-btn: 10px;
  --font-head: "Mukta Mahee", sans-serif;
  --font-body: "Catamaran", sans-serif;
  --container: 1200px;
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; font-size: 62.5%; } /* 1rem = 10px, matches original site */
body{
  margin:0;
  background: var(--bg);
  color: var(--muted-2);
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
img[hidden]{ display:none; }
a{ text-decoration:none; color:inherit; }
.center{ text-align:center; }

.wrap, .service-grid, .contact, .why, .intro, .claim, .footer-inner, .audience, .faq{
  max-width: var(--container);
  margin-left:auto;
  margin-right:auto;
  padding-left: 20px;
  padding-right: 20px;
}

h1,h2,h3{
  font-family: var(--font-head);
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 16px;
  text-wrap: balance;
}
h1{ font-size: 44px; line-height: 1.05; }
h1 span{
  color: var(--accent);
  animation: pulse-color 5s ease-in-out infinite;
}
@keyframes pulse-color{
  0%, 100%{ color: #0500FA; }
  33%{ color: #7B2FF7; }
  66%{ color: #17A589; }
}
h2{ font-size: 30px; line-height: 1.15; color: var(--muted); }
h3{ font-size: 24px; line-height: 1.2; color: var(--muted); }
p{ margin:0 0 16px; }
.eyebrow{
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 10px;
}
.lead{ color: var(--muted); font-size: 17px; max-width: 62ch; }
.lead.center{ margin-left:auto; margin-right:auto; }

.text-link{ color: var(--btn-text); font-weight: 600; }

/* ---- neumorphic components ---- */
.card, .btn, .panel-row, .contact-form, input, textarea{
  background: var(--bg);
  border-radius: var(--radius-card);
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
}
/* ŠABLÓNA "Button 1" — schválený štandardný štýl tlačidiel pre celý web.
   Neumorfný vzhľad: v pokoji vystúpené (outset tieň), pri hoveri vtlačené (inset tieň). */
.btn{
  display:inline-block;
  border-radius: var(--radius-btn);
  padding: 14px 46px;
  color: var(--btn-text);
  font-weight: 500;
  font-size: 15px;
  border:none;
  cursor:pointer;
  font-family: var(--font-body);
  transition: box-shadow .5s ease;
}
.btn:hover{
  box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light);
}
.btn-sm{ padding: 10px 22px; font-size:14px; }
.btn-row{ display:flex; gap:16px; flex-wrap:wrap; margin-top: 36px; }
.btn-row.center{ justify-content:center; }

/* ---- header ---- */
.site-header{ padding: 16px 16px 0; position: sticky; top:0; z-index:50; }
#domov, #o-nas{ scroll-margin-top: 64px; }
#sluzby{ scroll-margin-top: 76px; }
#referencie{ scroll-margin-top: 136px; }
#kontakt{ scroll-margin-top: 116px; }
.header-pill{
  max-width: var(--container);
  margin: 0 auto;
  background: var(--bg);
  border-radius: 16px;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  height: 80px;
  padding: 0 30px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.logo img{ height: 27px; width: auto; }
.nav{ display:none; gap: 28px; font-weight:600; font-size:1.5rem; color: var(--muted); }
.nav a:hover{ color: var(--btn-text); }

.nav-item{ position:relative; }
.nav-dropdown{ display:flex; flex-direction:column; margin: 10px 0 0 16px; }
.nav-dropdown-inner{ display:flex; flex-direction:column; gap:2px; }
.nav-dropdown a{ font-size:13px; font-weight:500; }
.nav-toggle{
  background:none; border:none; cursor:pointer; padding:6px;
  display:flex; flex-direction:column; gap:5px; justify-content:center;
}
.nav-toggle span{ width:24px; height:2px; background: var(--muted); display:block; }
.nav.open{ display:flex; flex-direction:column; position:absolute; top:70px; left:16px; right:16px; background:#fff; border-radius:16px; padding:18px 24px; box-shadow:0 12px 30px rgba(24,73,147,0.12); gap:16px; }

/* ---- hero ---- */
.hero{ padding: 72px 20px 48px; }
.hero-inner{ max-width: var(--container); margin:0 auto; display:flex; flex-direction:column-reverse; gap:32px; align-items:center; }
.hero-media{
  position:relative;
  width:100%; max-width:560px;
  margin: 0 auto;
}
.hero-laptop{
  position:relative; z-index:1;
  display:block;
  width:100%; height:auto;
  filter: drop-shadow(0 20px 30px rgba(20,30,60,0.18));
}
.hero-glow{
  position:absolute; inset:10%;
  background: radial-gradient(ellipse at 45% 40%, rgba(5,0,250,0.30), rgba(5,0,250,0.08) 35%, transparent 50%);
  filter: blur(50px);
  animation: smoke-drift 14s ease-in-out infinite;
}
.hero-glow-2{
  inset: 20% 26% 34% 20%;
  background: radial-gradient(ellipse at 60% 55%, rgba(23,165,137,0.35), transparent 45%);
  filter: blur(60px);
  animation: smoke-drift 18s ease-in-out infinite reverse;
}
@keyframes smoke-drift{
  0%,100%{ transform: translate(0,0) scale(1); }
  33%{ transform: translate(2%,-3%) scale(1.05); }
  66%{ transform: translate(-3%,2%) scale(0.97); }
}

@media (prefers-reduced-motion: reduce){
  .hero-glow, .hero-glow-2{ animation: none; }
}
.hero-lead{ color: var(--muted); font-size: 17px; margin: 16px 0 0; }

/* ---- intro / services ---- */
.intro{ padding: 72px 20px 20px; }
.intro-copy .eyebrow, .intro-copy .lead{ }
.service-grid{ display:grid; grid-template-columns: repeat(2, 1fr); gap:16px; margin-top: 48px; }
.service-col{ display:contents; }
.service-card{
  padding: 16px;
  text-align:center;
  aspect-ratio: 1 / 1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  transition: transform .45s ease, box-shadow .45s ease;
}
.service-card:hover{
  transform: translateY(-8px);
  box-shadow: 18px 18px 26px -8px var(--shadow-dark), -18px -18px 26px -8px var(--shadow-light);
}
.service-icon{ width:48px; height:48px; }
.service-card h3{ font-size: 14px; line-height:1.3; margin: 10px 0 0; color: var(--muted); }
.service-card small{ font-weight:400; font-size:0.7em; }

/* ---- claim ---- */
.claim{ padding: 60px 20px 15px; text-align:center; }
.claim-logo{ height:26px; width:auto; margin: 0 auto 20px; }
.claim h2{ text-align:center; font-size: 32px; }
.claim-alt{ padding-top: 0; padding-bottom: 4px; }

/* ---- service details ---- */
.service-details{ padding: 20px 0 40px; }

/* ---- carousel (full-bleed: breaks out of the standard content width) ----
   Sliding/looping/dragging is handled by Splide (assets/js/main.js); these
   rules only style the slides themselves — gap and edge padding are set via
   Splide's JS options instead of CSS so they stay in sync with its own
   position math. */
.carousel-viewport{ width: 100%; }
.carousel-track{ padding-top: 40px !important; padding-bottom: 40px !important; }
.carousel-slide{
  flex:0 0 88vw;
  width: 88vw;
  padding: 28px 24px;
  display:flex; flex-direction:column;
}
.carousel-slide h3{ color: var(--ink); }
.panel-divider{ border:none; border-top:1px solid var(--shadow-dark); margin: 18px 0; width:100%; }
.panel-eyebrow{
  font-family: var(--font-body);
  font-weight:600;
  font-size:12px; letter-spacing:.08em; text-transform:uppercase;
  color: var(--muted); text-align:center; margin: 0 0 14px;
}
.panel-stats{ display:flex; flex-wrap:wrap; gap:16px; justify-content:center; margin-bottom:20px; }
.panel-stats .stat{ flex: 1 1 100px; padding:0; text-align:center; }
.stat-num{ display:block; font-family: var(--font-body); font-size: 22px; font-weight:900; color: var(--muted); }
.stat-label{ display:block; font-size: 11.5px; color: var(--muted); margin-top:6px; }
.carousel-slide .btn{ align-self:center; margin-top:auto; }

.carousel-dots{ display:flex; justify-content:center; gap:10px; margin-top:4px; }
.carousel-dots button{
  width:10px; height:10px; border-radius:50%; border:none; padding:0;
  background: var(--shadow-dark); cursor:pointer;
}
.carousel-dots button.active{ background: var(--btn-text); }

/* ---- why ---- */
.why{ padding: 72px 20px 40px; }
.why-grid{ display:flex; flex-direction:column; gap:40px; align-items:center; }
.why-copy{ width:100%; }
.why-media{ width:100%; }
.why-media img{ width:100%; height:auto; }

/* ---- audience (pre koho) ---- */
.audience{ padding: 60px 20px 20px; }
.audience-grid{ display:grid; grid-template-columns:1fr; gap:20px; margin-top: 40px; }
.audience-card{ padding: 28px 24px; transition: transform .45s ease, box-shadow .45s ease; }
.audience-card:hover{
  transform: translateY(-8px);
  box-shadow: 18px 18px 26px -8px var(--shadow-dark), -18px -18px 26px -8px var(--shadow-light);
}
.audience-card h3{ font-size:18px; color:var(--ink); margin:0 0 8px; }
.audience-card p{ font-size:14px; margin:0; }

/* ---- faq ---- */
.faq{ padding: 40px 20px 60px; }
.faq-list{ max-width:800px; margin:40px auto 0; display:flex; flex-direction:column; gap:16px; }
.faq-item{ padding: 20px 24px; }
.faq-item summary{
  cursor:pointer; font-family: var(--font-head); font-weight:600; font-size:16px; color:var(--ink);
  list-style:none; display:flex; justify-content:space-between; align-items:center; gap:12px;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:'+'; font-size:22px; line-height:1; color:var(--accent); flex-shrink:0;
  transition: transform .3s ease;
}
.faq-item[open] summary::after{ transform:rotate(45deg); }
.faq-item p{ margin:14px 0 0; font-size:14px; }

.viz-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; max-width:var(--container); margin:0 auto; }
.viz-video-grid{ display:grid; grid-template-columns:1fr; gap:14px; max-width:var(--container); margin:24px auto 0; }
@media(min-width:640px){
  .audience-grid{ grid-template-columns:1fr 1fr; }
  .viz-grid{ grid-template-columns:repeat(3,1fr); }
  .viz-video-grid{ grid-template-columns:repeat(2,1fr); }
}
@media(min-width:860px){
  .audience-grid{ grid-template-columns:repeat(4,1fr); }
  .viz-grid{ grid-template-columns:repeat(4,1fr); }
  .viz-video-grid{ grid-template-columns:repeat(3,1fr); }
}

/* ---- references ---- */
.reference-slide img{
  width: 100%; height: 45%; min-height:150px; max-height:200px;
  object-fit: cover; border-radius: 12px; margin-bottom:18px; flex-shrink:0;
}
.reference-slide h2{ font-size:20px; color:var(--ink); margin-bottom:10px; flex-shrink:0; }
.reference-slide p{ font-size:13px; line-height:1.5; overflow:hidden; flex:1 1 auto; min-height:0; margin:0; }

/* ---- service subpage ---- */
.page-contours{ position:fixed; inset:0; width:100%; height:100%; z-index:-1; pointer-events:none; }
.service-hero{ padding: 72px 20px 40px; }

.legal-content{ padding: 20px 20px 60px; }
.legal-content .wrap{ max-width:720px; margin:0 auto; }
.legal-content h2{ font-size:20px; color:var(--ink); margin:40px 0 12px; }
.legal-content h2:first-child{ margin-top:0; }
.legal-content p{ color:var(--muted); line-height:1.7; margin:0 0 12px; }

.service-blocks{ display:flex; flex-direction:column; gap:24px; max-width:var(--container); margin:0 auto; padding: 40px 20px 0; }
.step-block{ padding:32px 28px; transition: transform .45s ease, box-shadow .45s ease; }
.step-block:hover{
  transform: translateY(-8px);
  box-shadow: 18px 18px 26px -8px var(--shadow-dark), -18px -18px 26px -8px var(--shadow-light);
}
.step-block .eyebrow{ color:var(--accent); }
.step-block h2{ font-size:24px; color:var(--ink); margin-bottom:14px; }
.step-block h2 span{ color:var(--accent); }
.step-block > p{ margin:0; }
.step-block > p + p{ margin-top:14px; }
.step-media-img{
  border-radius:12px; margin-top:20px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.06);
  max-height:220px; width:100%; object-fit:cover; cursor:zoom-in;
  transition: filter .25s ease;
}
.step-media-img:hover{ filter:brightness(0.94); }

.step-media-split{ display:flex; flex-direction:column; gap:24px; max-width:680px; }
.step-media-split .step-block{ padding:32px 28px; }
.step-media-card{ padding:16px; display:flex; align-items:center; justify-content:center; }
.step-media-split .step-media-img{
  margin-top:0; max-height:none; width:100%; height:auto; object-fit:initial;
  border-radius:12px; display:block;
}

.lightbox-overlay{
  display:none; position:fixed; inset:0; z-index:1000;
  background:rgba(15,18,23,.82);
  align-items:center; justify-content:center;
  padding:40px 20px; cursor:zoom-out;
}
.lightbox-overlay.open{ display:flex; }
.lightbox-overlay img{
  max-width:min(1100px, 92vw); max-height:88vh; width:auto; height:auto;
  border-radius:12px; box-shadow: 0 30px 60px -12px rgba(0,0,0,.5);
  cursor:default;
}
.lightbox-video{ display:none; width:min(1100px, 92vw); cursor:default; }
.lightbox-video.show{ display:block; }
.lightbox-video iframe{ width:100%; aspect-ratio:16/9; border:0; border-radius:12px; display:block; box-shadow: 0 30px 60px -12px rgba(0,0,0,.5); }
.lightbox-close{
  position:absolute; top:24px; right:28px; width:44px; height:44px;
  border:none; border-radius:50%; background:rgba(255,255,255,.12); color:#fff;
  font-size:22px; line-height:1; cursor:pointer;
}
.lightbox-close:hover{ background:rgba(255,255,255,.22); }
.lightbox-nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:52px; height:52px; border:none; border-radius:50%; background:rgba(255,255,255,.12); color:#fff;
  font-size:24px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.lightbox-nav:hover{ background:rgba(255,255,255,.22); }
.lightbox-nav[hidden]{ display:none; }
.lightbox-prev{ left:16px; }
.lightbox-next{ right:16px; }
@media(min-width:640px){
  .lightbox-prev{ left:28px; }
  .lightbox-next{ right:28px; }
}
.step-info-box{
  background:var(--bg); border-radius:var(--radius-card); margin-top:20px;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  padding:22px 26px;
}
.step-info-box h3{ font-size:15px; color:var(--ink); margin:0 0 10px; }
.step-info-box ul{ margin:0; padding-left:18px; color:var(--muted); font-size:14px; line-height:1.8; }

.compare{ padding: 40px 20px; }
.compare-table{ max-width:calc(var(--container) - 40px); margin:0 auto; padding:16px; }
.compare-header{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; justify-items:center; gap:8px; margin-bottom:12px; }
.compare-chip{
  background:var(--bg); border-radius:999px; padding:10px 20px; font-weight:700; font-size:13px;
  color:var(--muted); box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
}
.compare-chip-accent{ color:var(--btn-text); }
.compare-vs{
  flex-shrink:0; width:36px; height:36px; border-radius:50%; background:var(--bg);
  display:flex; align-items:center; justify-content:center; font-weight:800; font-size:11px; color:var(--accent);
  box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light);
}
.compare-row{ display:grid; grid-template-columns: 1fr 1fr; gap:8px; padding:18px 0; }
.compare-row:last-child{ border-bottom:none; }
.compare-col{
  background:var(--bg); border-radius:14px; padding:10px 8px;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  font-size:12.5px; color:var(--muted); line-height:1.4; text-align:center; width:100%;
}
.compare-col-accent{ color:var(--btn-text); font-weight:500; }
.compare-col::before{
  content:"Manuálne"; display:block;
  font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.04em;
  color:var(--muted); opacity:.65; margin-bottom:4px;
}
.compare-col-accent::before{ content:"3D sken"; color:var(--btn-text); opacity:.85; }
.compare-icon-wrap{ grid-column: 1 / -1; order:-1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; }
.compare-icon{
  flex-shrink:0; display:flex; align-items:center; justify-content:center; color:var(--accent);
  width:58px; height:58px; border-radius:16px; background:var(--bg);
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
}
.compare-icon svg{ width:28px; height:28px; }
.compare-row-label{ margin:0; font-weight:700; color:var(--ink); font-size:14px; text-align:center; }

.usecases{ padding: 40px 0 20px; }
.usecase-slide{ align-items:center; text-align:center; }
.usecase-slide img{
  width:100%; height:220px; object-fit:cover; border-radius:12px;
  display:block; margin-bottom:16px; flex-shrink:0;
}
.usecase-slide p{ margin:0; font-weight:700; color:var(--ink); font-size:16px; }

.viz-gallery{ padding: 20px 20px 40px; }
.viz-filters{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-bottom:28px; }
.viz-filter-btn{
  font-family:var(--font-body); background:var(--bg); border:none; border-radius:999px; padding:11px 20px;
  font-weight:700; font-size:13px; color:var(--muted); cursor:pointer;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  transition: box-shadow .3s ease, color .3s ease;
}
.viz-filter-btn.active{
  color:var(--btn-text);
  box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light);
}
.viz-item{
  border-radius:14px; overflow:hidden; cursor:zoom-in; aspect-ratio:4/3;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
}
.viz-item img{ width:100%; height:100%; object-fit:cover; display:block; transition: transform .45s ease, filter .25s ease; }
.viz-item:hover img{ transform:scale(1.06); filter:brightness(0.94); }
.viz-item[hidden]{ display:none; }
.viz-empty{ text-align:center; color:var(--muted); padding:40px 0; display:none; }
.viz-empty.show{ display:block; }

.viz-item-video{
  aspect-ratio:auto; cursor:default;
  display:flex; flex-direction:column; padding:12px; gap:10px;
}
.viz-item-video iframe{ width:100%; aspect-ratio:16/9; border:0; border-radius:10px; display:block; }
.viz-item-video p{ margin:0; font-weight:700; color:var(--ink); font-size:14px; text-align:center; }
.viz-video-thumb{
  position:relative; width:100%; aspect-ratio:16/9; border-radius:10px; overflow:hidden; cursor:pointer;
}
.viz-video-thumb img{ width:100%; height:100%; object-fit:cover; display:block; transition: filter .25s ease; }
.viz-item:hover .viz-video-thumb img{ transform:none; filter:brightness(0.85); }
.viz-video-play{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:58px; height:58px; border-radius:50%; background:rgba(15,18,23,.72);
  display:flex; align-items:center; justify-content:center;
}
.viz-video-play::before{
  content:''; width:0; height:0; margin-left:4px;
  border-style:solid; border-width:11px 0 11px 18px; border-color:transparent transparent transparent #fff;
}

.ref-gallery{ padding: 20px 20px 60px; }
.ref-filters{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-bottom:32px; }
.ref-filter-btn{
  font-family:var(--font-body); background:var(--bg); border:none; border-radius:999px; padding:11px 20px;
  font-weight:700; font-size:13px; color:var(--muted); cursor:pointer;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  transition: box-shadow .3s ease, color .3s ease;
}
.ref-filter-btn.active{
  color:var(--btn-text);
  box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light);
}
.ref-grid{ display:grid; grid-template-columns:1fr; gap:24px; max-width:var(--container); margin:0 auto; }
.ref-card{
  background:var(--bg); border-radius:var(--radius-card); overflow:hidden;
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  display:flex; flex-direction:column;
}
.ref-card[hidden]{ display:none; }
.ref-card-img{ width:100%; height:200px; object-fit:cover; display:block; cursor:zoom-in; }
.ref-card-media, .ref-card-gallery{ position:relative; }
.ref-card-gallery-badge{ position:absolute; bottom:12px; right:12px; display:flex; align-items:center; gap:5px; background:rgba(18,22,29,.6); backdrop-filter:blur(2px); color:#fff; font-size:12px; font-weight:700; line-height:1; padding:7px 11px; border-radius:999px; pointer-events:none; }
.ref-card-gallery-badge svg{ width:14px; height:14px; flex-shrink:0; }
.ref-card-cat-badge{ position:absolute; top:12px; left:12px; background:rgba(18,22,29,.6); backdrop-filter:blur(2px); color:#fff; font-size:11px; font-weight:700; padding:6px 13px; border-radius:999px; pointer-events:none; }
.ref-card-body{ padding:16px 26px 26px; display:flex; flex-direction:column; gap:16px; }
.ref-card-head h2{ font-size:16px; color:var(--ink); margin:0; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ref-card-tag{
  flex-shrink:0; background:var(--bg); color:var(--btn-text); font-size:11px; font-weight:700;
  padding:6px 13px; border-radius:999px; white-space:nowrap;
  box-shadow: inset 4px 4px 8px -3px var(--shadow-dark), inset -4px -4px 8px -3px var(--shadow-light);
}
.ref-card-stat{
  text-align:center; padding:6px 8px; border-radius:10px; background:var(--bg);
  box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light);
}
.ref-card-stat .num{ font-family:var(--font-body); font-size:15px; line-height:1.2; font-weight:900; color:var(--muted); display:block; }
.ref-card-stat .label{ font-size:10px; line-height:1.2; color:var(--muted); display:block; margin-top:1px; }
.ref-card-meta{ display:grid; grid-template-columns:1fr 1fr; gap:2px 16px; font-size:13px; margin:0; }
.ref-card-meta div{ display:flex; flex-direction:column; gap:3px; }
.ref-card-meta dt{ color:var(--muted); font-weight:600; }
.ref-card-meta dd{ margin:0; color:var(--ink); font-weight:700; }
.ref-card-meta div:nth-child(1) dd, .ref-card-meta div:nth-child(2) dd{ min-height:3.2em; }
.ref-card-desc{ font-size:14px; line-height:1.65; color:var(--muted); margin:0; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:6; overflow:hidden; }
.ref-card-desc.expanded{ -webkit-line-clamp:unset; overflow:visible; }
.ref-card-more{ align-self:flex-start; margin-top:-8px; background:none; border:none; padding:0; font-family:var(--font-body); color:var(--btn-text); font-weight:700; font-size:13px; cursor:pointer; }
.ref-card-more:hover{ text-decoration:underline; }
@media(min-width:860px){
  .ref-grid{ grid-template-columns:repeat(2,1fr); }
  .ref-card-img{ height:220px; }
}
@media(min-width:1180px){
  .ref-grid{ grid-template-columns:repeat(3,1fr); }
}

.service-extra{ padding: 40px 20px 80px; }
.service-block{ padding: 32px 28px; }
.service-block h2{ font-size:24px; margin-bottom:14px; color:var(--ink); }
.service-block p{ margin:0; }
.service-block p + p{ margin-top:14px; }

@media(min-width:860px){
  .service-hero{ padding: 100px 20px 60px; }
  .service-hero .wrap{ max-width:680px; margin-left:calc((100% - var(--container))/2); margin-right:0; }
  .notfound-hero .wrap{ margin-left:auto; margin-right:auto; }
  .legal-content .wrap{ max-width:720px; margin-left:calc((100% - var(--container))/2); margin-right:0; }
  .step-block{ padding:40px 48px; max-width:680px; }
  .step-block h2{ font-size:28px; }
  .step-block:nth-child(odd){ margin-right:auto; }
  .step-block:nth-child(even){ margin-left:auto; }
  #coord-steps .step-block{ min-height:584px; }
  #revit-steps .step-block, #revit-steps .step-media-card{ min-height:489px; }
  .service-block{ padding:40px 48px; max-width:680px; min-height:426px; }
  .service-block h2{ font-size:28px; }
  .step-media-split{ flex-direction:row; align-items:center; max-width:none; gap:24px; }
  .step-media-split .step-media-card{ flex:0 0 calc(50% - 12px); width:calc(50% - 12px); min-width:0; }
  .step-media-split .step-block{ flex:0 0 calc(50% - 12px); width:calc(50% - 12px); min-width:0; max-width:none; margin:0; }
  #revit-steps > .step-block{ max-width:none; margin:0; }
  #revit-steps > .step-block > p, #revit-steps > .step-block > .step-info-box{ max-width:680px; }
  #revit-extra .service-block{ max-width:none; }
  #revit-extra .service-block > p, #revit-extra .service-block > h2{ max-width:680px; }
  #scan-steps .step-block, #scan-steps .step-media-card{ min-height:400px; }
  #scan-steps .step-media-img{ max-height:400px; object-fit:cover; }
  #scan-steps .step-media-img[src*="faro-focus-s70"]{ object-position:center top; }
  #scan-extra .service-block{ max-width:800px; margin-left:auto; margin-right:auto; }
  #viz-steps .step-media-split{ align-items:flex-start; }
  .compare-header{ display:grid; grid-template-columns:1fr 100px 1fr; justify-items:center; align-items:center; gap:24px; margin-bottom:20px; }
  .compare-chip{ padding:18px 48px; font-size:21px; }
  .compare-vs{ width:70px; height:70px; font-size:18px; border-radius:20px; }
  .compare-row{ display:grid; grid-template-columns:1fr 100px 1fr; gap:24px; align-items:center; padding:26px 0; }
  .compare-col{ text-align:center; min-height:72px; display:flex; align-items:center; justify-content:center; font-size:16px; }
  .compare-col::before{ display:none; }
  .compare-icon-wrap{ grid-column:auto; order:0; position:relative; }
  .compare-icon{ width:72px; height:72px; border-radius:20px; }
  .compare-icon svg{ width:34px; height:34px; }
  .compare-row-label{ font-size:12px; position:absolute; top:100%; left:0; right:0; margin-top:8px; }
}
@media(min-width:1200px){
  .viz-grid{ grid-template-columns:repeat(5,1fr); }
}

/* ---- contact ---- */
.contact{ padding: 20px 20px 40px; }
.contact-form{ max-width: 760px; margin: 40px auto 0; padding: 36px; display:flex; flex-direction:column; gap:18px; }
.form-row{ display:flex; flex-direction:column; gap:18px; }
.contact-form label{ display:flex; flex-direction:column; gap:8px; font-size:14px; font-weight:600; color: var(--muted); }
.contact-form input, .contact-form textarea{
  font-family: var(--font-body); font-size:15px; border:none; padding:14px 16px; color: var(--ink);
  box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light);
}
.contact-form textarea{ resize:vertical; }
.contact-form .consent{ flex-direction:row; align-items:center; }
.consent a{ color:var(--btn-text); text-decoration:underline; }
.contact-form button{ align-self:flex-start; }
.contact-form button:disabled{ opacity:.7; cursor:default; }
.botcheck{ display:none; }
.form-status{ margin:0; font-size:14px; font-weight:600; }
.form-status:empty{ display:none; }
.form-status.is-success{ color:#1a7f4e; }
.form-status.is-error{ color:#c0392b; }

/* ---- footer ---- */
.site-footer{ padding: 40px 20px 24px; }
.footer-inner{
  display:flex; flex-direction:column; gap:36px;
  background: var(--bg);
  border-radius: var(--radius-card);
  box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  padding: 48px 40px;
}
.footer-brand img{ height:23px; width:auto; }
.footer-brand p{ color: var(--muted); font-size:15px; margin-top:14px; }
.footer-brand-actions{ display:flex; align-items:center; gap:14px; margin-top:22px; }
.footer-social{ display:flex; align-items:center; justify-content:center; width:42px; height:42px; border-radius:50%; background: var(--bg); color: var(--btn-text); flex-shrink:0; box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light); transition: box-shadow .5s ease; }
.footer-social:hover{ box-shadow: inset 6px 6px 12px -4px var(--shadow-dark), inset -6px -6px 12px -4px var(--shadow-light); }
.footer-links, .footer-contact{ display:flex; flex-direction:column; gap:10px; }
.footer-links h3, .footer-contact h3{ font-size:16px; color: var(--ink); margin-bottom:6px; }
.footer-links a, .footer-contact a, .footer-contact p{ color: var(--muted); font-size:15px; margin:0; }
.footer-bottom{ text-align:center; color: var(--muted); font-size:13px; margin: 32px 0 0; }

/* =========================================================
   Tablet / Desktop
   ========================================================= */
@media (min-width: 860px){
  h1{ font-size: 48px; }
  h2{ font-size: 40px; }
  h3{ font-size: 32px; }
  .claim h2, .contact h2, .faq h2{ font-size: 60px; }

  .nav{ display:flex; margin-right: 14rem; }
  .nav-toggle{ display:none; }

  .nav-dropdown{
    display:none; margin:0; padding-top:18px;
    position:absolute; top:100%; left:50%; transform:translateX(-50%);
    z-index:60;
  }
  .nav-dropdown-inner{
    gap:4px; min-width:250px; padding:16px 20px;
    background: var(--bg); border-radius: var(--radius-card);
    box-shadow: 14px 14px 20px -6px var(--shadow-dark), -14px -14px 20px -6px var(--shadow-light);
  }
  .nav-dropdown a{ font-size:14px; padding:6px 4px; white-space:nowrap; }
  .nav-item:hover .nav-dropdown{ display:flex; }

  .hero{ padding: 170px 20px 140px; }
  .hero-inner{ flex-direction:row; text-align:left; gap:24px; }
  .hero-copy{ flex: 1 1 0; min-width:0; }
  .hero-media{ flex: 1 1 0; min-width:0; max-width:none; margin:0; }
  .hero-laptop{ transform: translateX(-20px); }
  .btn-row{ justify-content:flex-start; }

  .intro-grid{ display:flex; gap: 60px; align-items:flex-start; }
  .intro-copy{ flex: 1; padding-top: 20px; }
  .intro-copy .eyebrow, .intro-copy h2, .intro-copy .lead{ text-align:left; margin-left:0; }
  .service-grid{ display:flex; flex: 1.1; flex-direction:row; gap: 24px; margin-top:0; }
  .service-col{ display:flex; flex-direction:column; gap:20px; flex:1; }
  .service-col-a{ margin-top: 70px; }
  .service-card{ padding:24px; }
  .service-icon{ width:76px; height:76px; }
  .service-card h3{ font-size:19px; margin:16px 0 0; }

  .carousel-viewport{ max-width: 6630px; margin: 0 auto; }
  .carousel-slide{
    flex: 0 0 670px; width:670px; height:470px; padding: 36px 40px;
    transition: transform .35s ease, box-shadow .35s ease;
  }
  .carousel-slide.is-active{ transform: scale(1.045); }
  .carousel-slide.reference-slide{ height:460px; }
  .carousel-slide.usecase-slide{ height:420px; }
  .usecase-slide img{ height:280px; }
  .panel-stats{ justify-content:flex-start; }

  .why-grid{ flex-direction:row; align-items:center; gap:60px; }
  .why-copy{ flex:1 1 0; min-width:0; }
  .why-media{ flex:1 1 0; min-width:0; }


  .form-row{ flex-direction:row; }
  .form-row label{ flex:1 1 0; min-width:0; }

  .footer-inner{ flex-direction:row; justify-content:space-between; }
  .footer-brand{ flex:1.3; }
  .footer-links, .footer-contact{ flex:1; }
}

@media (min-width: 1100px){
  h1{ font-size: 66px; }
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  h1 span{ animation: none; }
}
