/* ==========================================================================
   Altamus brand theme (per Altamus Brand Identity Guidelines)
   Corporate: Navy #1B2E4B, Charcoal #2F2F2F  ·  Icon accents: #7C4DFF #FF6E40 #FFD740
   Type: Inter for all text (Lovelo is reserved for the logo artwork)
   ========================================================================== */

:root {
  --navy: #1B2E4B;
  --navy-900: #111f35;
  --navy-700: #24406a;
  --charcoal: #2F2F2F;
  --purple: #7C4DFF;
  --purple-600: #6a3cf0;
  --orange: #FF6E40;
  --yellow: #FFD740;
  --ink: #2F2F2F;
  --muted: #5a6474;
  --line: #e3e7ee;
  --surface: #f5f7fa;
  --white: #ffffff;
  --radius: 14px;
  --shadow: 0 10px 30px rgba(27, 46, 75, .08);
  --shadow-lg: 0 20px 50px rgba(27, 46, 75, .16);

  --bs-body-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --bs-body-color: var(--ink);
  --bs-link-color-rgb: 124, 77, 255;
  --bs-link-hover-color-rgb: 106, 60, 240;
  --bs-primary-rgb: 124, 77, 255;
}

html { scroll-padding-top: 90px; }
body { font-family: var(--bs-body-font-family); color: var(--ink); background: var(--white); line-height: 1.65; -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, .h1, .h2, .h3, .h4, .h5 { color: var(--navy); font-weight: 800; letter-spacing: -0.02em; line-height: 1.15; }
h1 { font-size: clamp(2.1rem, 4.2vw, 3.4rem); }
h2 { font-size: clamp(1.65rem, 3vw, 2.4rem); margin-bottom: 1rem; }
h3, .h5, .h4 { font-weight: 700; }
h3 { font-size: 1.25rem; letter-spacing: -0.01em; }
h4 { font-size: 1.05rem; font-weight: 700; }
p { color: var(--ink); }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
img { max-width: 100%; height: auto; }
strong { font-weight: 700; }
.lead { font-size: 1.2rem; font-weight: 400; }
.text-muted, .muted { color: var(--muted) !important; }
.skip-link { position: absolute; left: 1rem; top: 1rem; z-index: 2000; background: var(--white); padding: .5rem 1rem; border-radius: 8px; }

/* Eyebrow label – uppercase, tracked, echoes the Lovelo wordmark */
.eyebrow { text-transform: uppercase; letter-spacing: .16em; font-size: .78rem; font-weight: 700; color: var(--purple); margin-bottom: .75rem; display: inline-flex; align-items: center; gap: .5rem; }
.eyebrow::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--orange); box-shadow: 12px 0 0 var(--yellow); margin-right: 12px; }

/* Buttons */
.btn { font-weight: 600; border-radius: 10px; padding: .6rem 1.25rem; }
.btn-lg { padding: .8rem 1.6rem; font-size: 1.02rem; }
.btn-primary { --bs-btn-bg: var(--purple); --bs-btn-border-color: var(--purple); --bs-btn-hover-bg: var(--purple-600); --bs-btn-hover-border-color: var(--purple-600); --bs-btn-active-bg: var(--purple-600); --bs-btn-active-border-color: var(--purple-600); --bs-btn-focus-shadow-rgb: 124, 77, 255; }
.btn-outline { color: var(--navy); border: 2px solid var(--navy); background: transparent; }
.btn-outline:hover { background: var(--navy); color: var(--white); text-decoration: none; }
.hero-navy .btn-outline, .section-navy .btn-outline, .cta-band .btn-outline { color: var(--white); border-color: rgba(255,255,255,.7); }
.hero-navy .btn-outline:hover, .section-navy .btn-outline:hover { background: var(--white); color: var(--navy); }
.btn:hover { text-decoration: none; }

/* Header / navigation */
.site-header { background: rgba(255,255,255,.97); backdrop-filter: saturate(160%) blur(8px); border-bottom: 1px solid transparent; transition: border-color .2s, box-shadow .2s; }
.site-header.scrolled { border-color: var(--line); box-shadow: 0 4px 20px rgba(27,46,75,.06); }
.navbar { padding: .7rem 0; }
.navbar-brand img { height: 40px; width: auto; display: block; }
.navbar-toggler { border: 0; font-size: 1.9rem; color: var(--navy); padding: .25rem .5rem; }
.navbar-toggler:focus { box-shadow: 0 0 0 3px rgba(124,77,255,.3); }
.nav-link { color: var(--navy); font-weight: 600; padding: .5rem .9rem !important; border-radius: 8px; }
.nav-link:hover, .nav-link:focus, .nav-link.show { color: var(--purple); text-decoration: none; }
.nav-link.active { color: var(--purple) !important; }
.dropdown-menu { border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-lg); padding: .6rem; min-width: 300px; }
.dropdown-menu, .dropdown-item { font-family: var(--bs-body-font-family); font-size: .9375rem; line-height: 1.4; }
.dropdown-item { border-radius: 10px; padding: .6rem .85rem; white-space: normal; color: var(--navy); font-weight: 600; }
.dropdown-item strong { display: block; font-weight: 600; font-size: .9375rem; }
.dropdown-item span { display: block; font-size: .8125rem; font-weight: 400; color: var(--muted); margin-top: .1rem; }
.dropdown-item:hover, .dropdown-item:focus { background: var(--surface); color: var(--purple); text-decoration: none; }
.dropdown-item.active, .dropdown-item:active { background: rgba(124,77,255,.1); color: var(--purple); }
.dropdown-all { color: var(--purple); }
/* Nested menu items: collapsed by default. Desktop flies out to the right; mobile opens as an accordion. */
.dropdown-group { position: relative; }
.dropdown-group-head { display: flex; align-items: center; gap: .25rem; }
.dropdown-group-head .dropdown-item { flex: 1 1 auto; min-width: 0; }
.dropdown-sub-toggle { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; padding: 0; border: 0; border-radius: 8px; background: transparent; color: var(--muted); font-size: .85rem; }
.dropdown-sub-toggle:hover, .dropdown-sub-toggle:focus-visible { background: var(--surface); color: var(--purple); }
.dropdown-sub-toggle i { transition: transform .2s ease; }
.dropdown-sub { display: none; list-style: none; margin: 0; padding: 0; }
.dropdown-group.is-open > .dropdown-sub { display: block; }
.dropdown-subitem { display: block; padding: .45rem .75rem; border-radius: 8px; font-size: .875rem; font-weight: 500; color: var(--navy); }
.dropdown-subitem:hover, .dropdown-subitem:focus { background: var(--surface); color: var(--purple); text-decoration: none; }
.dropdown-subitem.active { color: var(--purple); font-weight: 600; }
@media (min-width: 992px) {
  .dropdown-group:hover > .dropdown-sub { display: block; }
  .dropdown-menu-products > li > .dropdown-item:not(.dropdown-all) { padding-right: 3.35rem; } /* same text width as the Applications items with a chevron */
  .dropdown-group:hover > .dropdown-group-head .dropdown-sub-toggle, .dropdown-group.is-open > .dropdown-group-head .dropdown-sub-toggle { color: var(--purple); }
  .dropdown-sub { position: absolute; top: -.6rem; left: calc(100% + 1rem); z-index: 1; min-width: 240px; padding: .6rem; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-lg); }
  .dropdown-sub::before { content: ""; position: absolute; top: 0; bottom: 0; right: 100%; width: 1.1rem; } /* keeps hover alive across the gap */
  .dropdown-group.flip > .dropdown-sub { left: auto; right: calc(100% + 1rem); }
  .dropdown-group.flip > .dropdown-sub::before { right: auto; left: 100%; }
}
@media (max-width: 991.98px) {
  .dropdown-sub-toggle i { transform: rotate(90deg); }
  .dropdown-group.is-open > .dropdown-group-head .dropdown-sub-toggle i { transform: rotate(-90deg); }
  .dropdown-sub { margin: 0 0 .35rem .85rem; padding-left: .5rem; border-left: 2px solid var(--line); }
}
@media (min-width: 992px) {
  .navbar .dropdown:hover > .dropdown-menu { display: block; }
  .navbar .dropdown > .dropdown-menu { margin-top: 0; }
  .navbar .dropdown-toggle::after { vertical-align: .15em; }
}
@media (max-width: 991.98px) {
  .navbar-collapse { max-height: calc(100vh - 70px); overflow-y: auto; padding-bottom: 1rem; }
  .dropdown-menu { box-shadow: none; border: 0; padding: 0 0 .5rem .5rem; }
  .dropdown-item span { display: none; }
}

/* Hero */
.hero { position: relative; overflow: hidden; padding: 4.5rem 0 5.5rem; }
.hero-navy { background: radial-gradient(1200px 500px at 85% -10%, #2a4470 0%, transparent 60%), var(--navy); color: var(--white); }
.hero-navy h1, .hero-navy h2, .hero-navy p, .hero-navy .lead { color: var(--white); }
.hero-navy .lead { color: rgba(255,255,255,.86); }
.hero-navy .eyebrow { color: var(--yellow); }
.hero-light { background: var(--surface); }
.hero .lead { max-width: 640px; margin-top: 1rem; }
.hero-media img { border-radius: var(--radius); box-shadow: var(--shadow-lg); }
/* All heroes share one height on desktop (matches the text-only /applications/ hero). */
@media (min-width: 992px) {
  .hero { min-height: 618px; padding: 3rem 0 3.5rem; display: flex; flex-direction: column; justify-content: center; }
  .hero > .container { width: 100%; }
  .hero .row.g-5 { --bs-gutter-y: 0; }
  .hero-split h1 { font-size: 2.5rem; }
  .hero .hero-media { height: 380px; }
  .hero .hero-media img { width: 100%; height: 100%; object-fit: cover; }
  .hero .hero-media-contain img { object-fit: contain; box-shadow: none; }
}
.hero.hero-thin { min-height: 0; padding: 2rem 0 2.25rem; }
.hero-thin h1 { font-size: clamp(1.75rem, 3vw, 2.25rem); margin-bottom: 0; }
.hero-thin .breadcrumb { margin-bottom: 1rem; }
@media (max-width: 991.98px) {
  .hero-home { padding: 5.5rem 0 7rem; }
  .hero-home h1 { font-size: clamp(2.4rem, 5vw, 4rem); }
}
.dot-field { position: absolute; left: 0; right: 0; bottom: 0; height: 200px; background: url('../img/brand/dot-field.svg') bottom center / cover no-repeat; opacity: .55; pointer-events: none; }
.hero-light .dot-field { opacity: .35; }
.breadcrumb { font-size: .85rem; margin-bottom: 1.5rem; --bs-breadcrumb-divider-color: rgba(255,255,255,.5); }
.hero-navy .breadcrumb a { color: rgba(255,255,255,.75); }
.hero-navy .breadcrumb-item.active { color: rgba(255,255,255,.95); }
.hero-light .breadcrumb a { color: var(--muted); }
.hero-light .breadcrumb { --bs-breadcrumb-divider-color: var(--muted); }
.hero-badges { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin-top: 2rem; padding: 0; list-style: none; }
.hero-badges li { display: flex; align-items: center; gap: .5rem; color: rgba(255,255,255,.9); font-weight: 500; font-size: .95rem; }
.hero-badges i { color: var(--yellow); }

/* Sections */
.section { padding: 5rem 0; position: relative; }
.section-sm { padding: 3rem 0; }
.section-light { background: var(--surface); }
.section-navy { background: var(--navy); color: var(--white); overflow: hidden; }
.section-navy h2, .section-navy h3, .section-navy h4, .section-navy p, .section-navy li { color: var(--white); }
.section-navy p { color: rgba(255,255,255,.85); }
.section-navy .eyebrow { color: var(--yellow); }
.container.narrow { max-width: 900px; }
.section-heading { text-align: center; max-width: 780px; margin: 0 auto 3rem; }
.section-intro { color: var(--muted); font-size: 1.1rem; }
.section-navy .section-intro { color: rgba(255,255,255,.8); }
.prose p, .prose li { font-size: 1.05rem; }
.prose h2 { margin-top: 2.5rem; }
.prose h3 { margin-top: 1.75rem; }
.prose img[data-width] { display: block; margin-left: auto; margin-right: auto; height: auto; } /* resized in the blog editor: centred in the column */
.prose .image-row { display: flex; gap: 1rem; align-items: flex-start; margin: 1.5rem 0; } /* blog editor "Side by side": one column per paragraph */
.prose .image-row > * { flex: 1 1 0; min-width: 0; margin: 0; }
.prose .image-row img { width: 100%; }
@media (max-width: 575.98px) { .prose .image-row { flex-direction: column; } .prose .image-row > * { flex: none; width: 100%; } }
.prose td img, .prose th img { min-width: 8rem; } /* images in tables don't shrink to nothing when the table scrolls on phones */

/* Cards */
.feature-card, .card-panel, .link-card, .case-card, .quote-card, .pricing-card, .team-card {
  background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); height: 100%;
}
.feature-card { padding: 1.75rem; }
.feature-card h3 { font-size: 1.15rem; margin: 1rem 0 .5rem; }
.feature-card p:last-child { margin-bottom: 0; }
.feature-card p { color: var(--muted); }
.card-panel { padding: 2rem; }
.prose .card-panel > :first-child { margin-top: 0; }
.prose .card-panel > :last-child { margin-bottom: 0; }
.icon-badge { width: 52px; height: 52px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.5rem; background: rgba(124,77,255,.1); color: var(--purple); }
.icon-badge.orange { background: rgba(255,110,64,.12); color: var(--orange); }
.icon-badge.navy { background: rgba(27,46,75,.08); color: var(--navy); }
.section-navy .feature-card { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.12); box-shadow: none; }
.section-navy .feature-card p { color: rgba(255,255,255,.8); }
.section-navy .icon-badge { background: rgba(255,215,64,.14); color: var(--yellow); }

.link-card { display: block; padding: 1.75rem; color: var(--ink); transition: transform .2s, box-shadow .2s, border-color .2s; }
.link-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: rgba(124,77,255,.4); text-decoration: none; }
.link-card h3 { margin-bottom: .5rem; }
.link-card p { color: var(--muted); margin-bottom: 1rem; }
.link-card .link-arrow, .link-arrow { color: var(--purple); font-weight: 600; }
.link-card .card-img { width: calc(100% + 3.5rem); align-self: stretch; margin: -1.75rem -1.75rem 1.5rem; border-radius: var(--radius) var(--radius) 0 0; overflow: hidden; aspect-ratio: 16 / 9; }
.link-card .card-img img { width: 100%; height: 100%; object-fit: cover; }

/* Upright product shots (e.g. the EOS2 scanner) are never cropped: fit the whole image in the frame */
.card-img img.img-contain { object-fit: contain; padding: 1.25rem 1.5rem; }
.video-embed img.img-contain { object-fit: contain; padding: .75rem; }
.card-img:has(.img-contain) { background: var(--surface); }
.video-embed:has(.img-contain) { background: var(--navy-900); }

/* Product cards (home & hubs) */
.product-card { display: flex; flex-direction: column; }
.product-card .tag { align-self: flex-start; }
.tag { display: inline-block; font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; padding: .3rem .65rem; border-radius: 999px; background: rgba(124,77,255,.1); color: var(--purple); }
.tag.orange { background: rgba(255,110,64,.12); color: #c8431b; }
.tag.navy { background: rgba(27,46,75,.08); color: var(--navy); }

/* Split media rows */
.split + .split { margin-top: 4.5rem; }
.media-frame { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-lg); background: var(--white); }
.media-frame img { width: 100%; display: block; }
.media-frame-half { max-width: 50%; margin-inline: auto; }
.media-frame-wide { padding: 1rem 1.25rem; }
@media (max-width: 767.98px) { .media-frame-wide { overflow-x: auto; } .media-frame-wide img { min-width: 720px; } } /* keep wide screenshots readable on phones */
@media (max-width: 575.98px) { .media-frame-half { max-width: 80%; } }
/* Fills its grid cell: the image is cropped to the height set by its neighbours instead of setting the row height. */
.media-fill { position: relative; min-height: 12rem; }
.media-fill img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
figure figcaption { font-size: .9rem; color: var(--muted); margin-top: .6rem; }

/* Lists */
.check-list { list-style: none; padding: 0; }
.check-list li { position: relative; padding-left: 2rem; margin-bottom: .7rem; }
.check-list li::before { content: "\F26E"; font-family: 'bootstrap-icons'; position: absolute; left: 0; top: 0; color: var(--purple); font-size: 1.2rem; line-height: 1.4; }
.section-navy .check-list li::before { color: var(--yellow); }

/* Stats */
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 1.5rem; }
.stat { text-align: center; padding: 1.75rem 1rem; border-radius: var(--radius); background: var(--white); border: 1px solid var(--line); }
.stat-value { display: block; font-size: clamp(2rem, 4vw, 2.8rem); font-weight: 800; color: var(--navy); letter-spacing: -0.03em; line-height: 1.1; }
.stat-label { display: block; color: var(--muted); font-weight: 500; margin-top: .4rem; }
.section-navy .stat, .hero-navy .stat { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.14); }
.section-navy .stat-value, .hero-navy .stat-value { color: var(--white); }
.section-navy .stat-label, .hero-navy .stat-label { color: rgba(255,255,255,.75); }

/* Steps */
.steps { counter-reset: step; }
.step { position: relative; padding: 1.75rem; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); height: 100%; box-shadow: var(--shadow); }
.step-num { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: var(--navy); color: var(--white); font-weight: 800; margin-bottom: 1rem; }
.step h3 { font-size: 1.15rem; }
.step p { color: var(--muted); margin-bottom: 0; }

/* Tables */
.spec-table, .compare-table { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.spec-table th, .spec-table td, .compare-table th, .compare-table td { padding: .9rem 1.15rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.spec-table tr:last-child th, .spec-table tr:last-child td, .compare-table tr:last-child td { border-bottom: 0; }
.spec-table th { width: 40%; color: var(--navy); font-weight: 700; background: var(--surface); }
.compare-table thead th { background: var(--navy); color: var(--white); font-weight: 700; }
.compare-table td:first-child { font-weight: 700; color: var(--navy); }
.table-note { font-size: .85rem; color: var(--muted); margin-top: .75rem; }

/* Pricing */
.pricing-card { padding: 2rem; display: flex; flex-direction: column; position: relative; }
.pricing-card.featured { border: 2px solid var(--purple); }
.pricing-card .price { font-size: 2.6rem; font-weight: 800; color: var(--navy); letter-spacing: -0.03em; margin: .75rem 0 .25rem; }
.pricing-card .price small { font-size: 1rem; font-weight: 500; color: var(--muted); letter-spacing: 0; }
.pricing-card .check-list { margin: 1.25rem 0 1.5rem; }
.pricing-card .btn { margin-top: auto; }
.pricing-card .ribbon { position: absolute; top: -13px; right: 1.5rem; background: var(--purple); color: var(--white); font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .3rem .75rem; border-radius: 999px; }

/* Quotes & testimonials */
.quote-card { padding: 2rem; }
.quote-card blockquote { margin: 0 0 1.25rem; font-size: 1.1rem; color: var(--ink); }
.quote-card blockquote::before { content: "\201C"; display: block; font-size: 3.5rem; line-height: .8; color: var(--orange); font-family: Georgia, serif; }
.quote-card cite { font-style: normal; font-weight: 700; color: var(--navy); display: block; }
.quote-card cite span { display: block; font-weight: 500; color: var(--muted); font-size: .92rem; }
.review-card { display: flex; flex-direction: column; }
.review-card blockquote::before { display: none; }
.review-card blockquote { font-size: 1rem; display: -webkit-box; -webkit-line-clamp: 8; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: .75rem; }
.review-stars { color: var(--yellow); font-size: 1.05rem; letter-spacing: .1rem; margin-bottom: .9rem; }
.review-stars .bi-star { color: var(--line); }
.review-more { align-self: flex-start; margin-bottom: 1.25rem; font-weight: 600; }
.review-author { display: flex; align-items: center; gap: .75rem; margin-top: auto; }
.review-author img { width: 40px; height: 40px; border-radius: 50%; flex: none; }
.review-author cite a { color: var(--navy); }
.stars { color: #f5b400; letter-spacing: 2px; }

/* Case cards */
.case-card { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.case-card .case-img { aspect-ratio: 16 / 9; overflow: hidden; }
.case-card .case-img img { width: 100%; height: 100%; object-fit: cover; }
.case-card .case-body { padding: 1.75rem; display: flex; flex-direction: column; flex: 1; }
.case-card .tag { align-self: flex-start; }
.case-card .case-metric { font-size: 2rem; font-weight: 800; color: var(--purple); line-height: 1; margin: .5rem 0; }
.case-card .link-arrow { margin-top: auto; }

/* Team */
.team-card { overflow: hidden; }
.team-card img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: top; display: block; }
.team-card .team-body { padding: 1.5rem; }
.team-card h3 { margin-bottom: .15rem; }
.team-card .role { color: var(--purple); font-weight: 600; font-size: .95rem; margin-bottom: .75rem; }
.team-card p { color: var(--muted); font-size: .95rem; }

/* Client logos */
.logo-carousel { --per: 5; }
.logo-viewport { overflow: hidden; }
.logo-track { display: flex; margin: 0; padding: 0; list-style: none; transition: transform .7s ease; }
.logo-carousel.is-static .logo-track { justify-content: center; }
.logo-item { flex: 0 0 calc(100% / var(--per)); display: flex; align-items: center; justify-content: center; height: 72px; padding: 0 1.25rem; }
.logo-item img { max-height: 56px; max-width: 100%; width: auto; height: auto; mix-blend-mode: multiply; }
.logo-controls { display: flex; justify-content: center; align-items: center; gap: .75rem; margin-top: 1rem; }
.logo-dots { display: flex; gap: .5rem; }
.logo-dots button { width: 10px; height: 10px; padding: 0; border: 0; border-radius: 50%; background: var(--line); transition: background .2s, transform .2s; }
.logo-dots button[aria-current="true"] { background: var(--purple); transform: scale(1.2); }
.logo-toggle { border: 0; background: none; color: var(--muted); padding: 0 .25rem; font-size: 1.1rem; line-height: 1; }
.logo-toggle:hover, .logo-dots button:hover { color: var(--purple); }
@media (max-width: 991.98px) { .logo-carousel { --per: 3; } }
@media (max-width: 575.98px) { .logo-carousel { --per: 2; } }
@media (prefers-reduced-motion: reduce) { .logo-track { transition: none; } }

/* Google reviews: the logo carousel with cards (three per page on desktop). The viewport bleeds past the
   container so card shadows are not clipped; item padding puts the cards back on the container edges. */
.review-carousel { --per: 3; }
.review-carousel .logo-viewport { margin: -1rem -.75rem; padding: 1rem 0; }
.review-carousel .logo-item { height: auto; align-items: stretch; padding: 0 .75rem; }
.review-carousel .logo-item > .review-card { width: 100%; }
.review-carousel .logo-controls { margin-top: 1.5rem; }
@media (max-width: 991.98px) { .review-carousel { --per: 2; } }
@media (max-width: 767.98px) { .review-carousel { --per: 1; } }

/* CTA band */
.cta-band { position: relative; overflow: hidden; background: var(--navy); padding: 5rem 0 6rem; }
.cta-band h2 { color: var(--white); }
.cta-band .lead { color: rgba(255,255,255,.85); max-width: 680px; margin-bottom: 2rem; }

/* FAQ / accordions */
.accordion { --bs-accordion-border-color: var(--line); --bs-accordion-active-bg: rgba(124,77,255,.06); --bs-accordion-active-color: var(--navy); --bs-accordion-btn-focus-box-shadow: 0 0 0 3px rgba(124,77,255,.25); --bs-accordion-border-radius: var(--radius); --bs-accordion-inner-border-radius: var(--radius); }
.accordion-button { font-weight: 700; color: var(--navy); font-size: 1.05rem; }
.faq .accordion-header { margin: 0; }

/* Contact */
.contact-list { list-style: none; padding: 0; margin: 2rem 0 0; }
.contact-list li { display: flex; gap: 1rem; align-items: flex-start; margin-bottom: 1.1rem; font-size: 1.05rem; }
.contact-list i { color: var(--purple); font-size: 1.3rem; }
.contact-list a { color: var(--navy); font-weight: 600; }
.form-label { font-weight: 600; color: var(--navy); font-size: .92rem; }
.form-control { border-radius: 10px; padding: .7rem .9rem; border-color: #cfd6e1; }
.form-control:focus { border-color: var(--purple); box-shadow: 0 0 0 3px rgba(124,77,255,.2); }
.form-status.success { color: #177245; font-weight: 600; }
.form-status.error { color: #b42318; font-weight: 600; }
/* Send button on the left, reCAPTCHA badge on the right. Google inserts the badge in a bare <div> before the button. */
.form-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; }
.form-actions > div { order: 1; margin-left: auto; }

/* Blog comments (_inc/comments.php) */
.comment-list { list-style: none; padding: 0; margin: 1.5rem 0 0; }
.comment { display: flex; gap: 1rem; padding: 1.25rem 0; border-top: 1px solid var(--line); }
.comment:target .comment-main { background: rgba(124,77,255,.06); border-radius: 10px; }
.comment-avatar { flex: none; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: var(--navy); color: var(--white); display: grid; place-items: center; font-weight: 700; }
.comment-main { flex: 1; min-width: 0; }
.comment-meta { margin: 0 0 .35rem; font-size: .92rem; color: var(--muted); }
.comment-meta strong { color: var(--navy); }
.comment-body { overflow-wrap: anywhere; }
.comment-body p { margin-bottom: .6rem; }
.comment-body p:last-child { margin-bottom: 0; }
.comment-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; } /* honeypot: people never see or fill it */

/* Video facade */
.video-embed { position: relative; aspect-ratio: 16 / 9; border-radius: var(--radius); overflow: hidden; background: #000; box-shadow: var(--shadow-lg); }
.video-embed img, .video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; }
.video-embed button { position: absolute; inset: 0; width: 100%; background: transparent; border: 0; cursor: pointer; }
.video-embed button::after { content: "\F4F4"; font-family: 'bootstrap-icons'; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); font-size: 4.5rem; color: var(--white); text-shadow: 0 4px 20px rgba(0,0,0,.5); transition: transform .2s; }
.video-embed.is-plain { background: radial-gradient(circle at 25% 15%, rgba(124,77,255,.45), transparent 55%), radial-gradient(circle at 85% 95%, rgba(255,110,64,.3), transparent 50%), var(--navy-900); }
.video-embed-label { position: absolute; left: 1.25rem; right: 1.25rem; bottom: 1rem; display: flex; align-items: center; gap: .5rem; color: var(--white); font-weight: 600; font-size: .95rem; line-height: 1.3; pointer-events: none; }
.video-embed-label .bi { color: var(--yellow); font-size: 1.2rem; }
.video-embed button:hover::after { transform: translate(-50%, -50%) scale(1.08); }

/* Interactive point-cloud viewer */
.pcd-stage { position: relative; aspect-ratio: 16 / 9; min-height: 320px; border-radius: var(--radius); overflow: hidden; background: var(--navy-900); box-shadow: var(--shadow-lg), inset 0 0 0 1px rgba(255,255,255,.08); touch-action: none; }
.pcd-stage canvas { position: absolute; inset: 0; width: 100% !important; height: 100% !important; display: block; cursor: grab; }
.pcd-stage canvas:active { cursor: grabbing; }
.pcd-stage.is-light::after { /* light backgrounds need an edge on white pages */ content: ""; position: absolute; inset: 0; border: 1px solid var(--line); border-radius: inherit; pointer-events: none; z-index: 2; }
.pcd-poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; transition: opacity .4s; }
.pcd-status { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; padding: .5rem 1rem; border-radius: 999px; background: rgba(17,31,53,.8); color: var(--white); font-weight: 600; font-size: .9rem; white-space: nowrap; }
.pcd-viewer.is-loaded .pcd-poster, .pcd-viewer.is-loaded .pcd-status { opacity: 0; pointer-events: none; }
.pcd-viewer.is-error .pcd-poster { opacity: 1; }
.pcd-status { display: inline-flex; align-items: center; gap: .55rem; }
.pcd-poster, .pcd-status { z-index: 1; } /* above the canvas until the model loads */
.pcd-status { z-index: 3; }
.pcd-spinner { width: 1rem; height: 1rem; flex: 0 0 auto; border: 2px solid rgba(255,255,255,.3); border-top-color: var(--white); border-radius: 50%; animation: pcd-spin .8s linear infinite; }
.pcd-viewer.is-error .pcd-spinner { display: none; }
@keyframes pcd-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .pcd-spinner { animation-duration: 2.4s; } }
.pcd-viewer figcaption { font-size: .88rem; }
.section-navy .pcd-viewer figcaption { color: rgba(255,255,255,.75); }
.pcd-tabs .nav-link { border-radius: 999px; padding: .45rem 1.1rem !important; }
.pcd-tabs .nav-link.active { background: var(--purple); color: var(--white) !important; }
@media (max-width: 575.98px) { .pcd-stage { aspect-ratio: 4 / 5; } }
.hero .pcd-viewer figcaption { color: rgba(255,255,255,.75); margin-top: .6rem; }
@media (min-width: 992px) { .hero .pcd-stage { aspect-ratio: auto; height: 380px; min-height: 0; } }
/* Touch lock (touch screens only, added by pcd-viewer.js): the page scrolls over the scan until the visitor turns on 3D controls. */
.pcd-touch-lock { position: absolute; inset: 0; z-index: 2; display: flex; align-items: flex-end; justify-content: center; padding: 1rem; background: linear-gradient(to top, rgba(17,31,53,.55), rgba(17,31,53,0) 45%); touch-action: pan-y pinch-zoom; }
.pcd-touch-on, .pcd-touch-off { border: 0; border-radius: 999px; background: var(--purple); color: var(--white); font-weight: 600; font-size: .9rem; padding: .6rem 1.1rem; box-shadow: var(--shadow-lg); display: inline-flex; align-items: center; gap: .45rem; }
.pcd-touch-off { position: absolute; top: .75rem; right: .75rem; z-index: 2; padding: .45rem .9rem; background: rgba(17,31,53,.85); box-shadow: none; display: none; }
.pcd-viewer.has-touch-lock:not(.is-touch-active) .pcd-stage { touch-action: pan-y pinch-zoom; }
.pcd-viewer.is-touch-active .pcd-touch-lock { display: none; }
.pcd-viewer.is-touch-active .pcd-touch-off { display: inline-flex; }
.pcd-viewer.is-touch-active .pcd-stage { box-shadow: var(--shadow-lg), inset 0 0 0 2px var(--purple); }

/* Gallery / lightbox */
/* Thumbnails wrap inside their container and show the whole image; a short last row is centered. */
.gallery { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; }
.gallery a { flex: 0 0 calc((100% - 2rem) / 3); min-width: 0; max-width: 100%; display: flex; align-items: center; justify-content: center; border-radius: 10px; overflow: hidden; aspect-ratio: 16 / 9; background: var(--navy-900); box-shadow: var(--shadow); position: relative; }
.gallery img { display: block; width: 100%; height: 100%; max-width: 100%; object-fit: contain; transition: transform .3s; }
.gallery a:hover img { transform: scale(1.03); }
.gallery a::after { content: "\F62C"; font-family: "bootstrap-icons"; position: absolute; right: .6rem; bottom: .6rem; width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 50%; background: rgba(17, 31, 53, .7); color: var(--white); font-size: .9rem; opacity: 0; transition: opacity .2s; }
.gallery a:hover::after, .gallery a:focus-visible::after { opacity: 1; }
@media (max-width: 767.98px) { .gallery a { flex-basis: calc((100% - 1rem) / 2); } }
/* Compact gallery: smaller thumbnails on a light frame, padded so the hover zoom stays inside the frame. */
.gallery-compact { max-width: 880px; margin-inline: auto; }
.gallery-compact a { padding: .75rem; background: var(--white); border: 1px solid var(--line); }
.gallery-compact img { border-radius: 4px; }
html.lightbox-open { overflow: hidden; }
.lightbox { border: 0; padding: 0; margin: 0; width: 100vw; height: 100dvh; max-width: none; max-height: none; background: rgba(10, 18, 32, .94); color: var(--white); overflow: hidden; }
.lightbox[open] { display: flex; flex-direction: column; }
.lightbox::backdrop { background: rgba(10, 18, 32, .6); }
.lightbox-bar { display: flex; justify-content: space-between; align-items: center; padding: .75rem 1rem; flex: 0 0 auto; }
.lightbox-count { font-size: .9rem; font-weight: 600; color: rgba(255,255,255,.8); }
.lightbox-close, .lightbox-nav { background: rgba(255,255,255,.1); border: 0; color: var(--white); width: 2.75rem; height: 2.75rem; border-radius: 50%; display: grid; place-items: center; font-size: 1.25rem; transition: background .2s; }
.lightbox-close:hover, .lightbox-nav:hover { background: var(--purple); }
.lightbox-stage { flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; gap: 1rem; padding: 0 1rem; }
.lightbox-figure { flex: 1 1 auto; min-width: 0; height: 100%; margin: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.lightbox-figure img { max-width: 100%; max-height: calc(100% - 3rem); object-fit: contain; border-radius: 8px; transition: opacity .2s; }
.lightbox.is-loading .lightbox-figure img { opacity: .35; }
.lightbox figcaption { color: rgba(255,255,255,.85); text-align: center; font-size: .92rem; margin-top: .75rem; max-width: 60rem; }
.lightbox-nav { flex: 0 0 auto; }
.lightbox-strip { flex: 0 0 auto; display: flex; gap: .5rem; overflow-x: auto; padding: .75rem 1rem 1rem; max-width: 100%; margin: 0 auto; scrollbar-width: thin; }
.lightbox-strip button { flex: 0 0 auto; width: 72px; height: 48px; padding: 0; border: 2px solid transparent; border-radius: 6px; overflow: hidden; background: var(--navy-900); opacity: .55; transition: opacity .2s, border-color .2s; }
.lightbox-strip button:hover, .lightbox-strip button.active { opacity: 1; }
.lightbox-strip button.active { border-color: var(--purple); }
.lightbox-strip img { width: 100%; height: 100%; object-fit: cover; }
.lightbox.is-single .lightbox-nav, .lightbox.is-single .lightbox-strip { display: none; }
@media (max-width: 575.98px) {
  .lightbox-stage { padding: 0 .25rem; gap: .25rem; }
  .lightbox-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 1; background: rgba(17, 31, 53, .7); }
  .lightbox-prev { left: .5rem; }
  .lightbox-next { right: .5rem; }
}

/* Footer */
.site-footer { background: var(--navy-900); color: rgba(255,255,255,.75); padding: 4.5rem 0 2rem; font-size: .95rem; }
.site-footer p, .site-footer address { color: rgba(255,255,255,.75); }
.site-footer a { color: rgba(255,255,255,.85); }
.site-footer a:hover { color: var(--white); }
.footer-title { font-size: .8rem; text-transform: uppercase; letter-spacing: .14em; color: var(--white); font-weight: 700; margin-bottom: 1.1rem; }
.site-footer li { margin-bottom: .55rem; }
.social-links { display: flex; gap: .6rem; margin-top: 1.25rem; }
.social-links a { width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.08); font-size: 1.1rem; }
.social-links a:hover { background: var(--purple); text-decoration: none; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; border-top: 1px solid rgba(255,255,255,.1); margin-top: 3rem; padding-top: 1.5rem; font-size: .85rem; }

.back-to-top { position: fixed; right: 1rem; bottom: 1rem; width: 44px; height: 44px; border-radius: 50%; background: var(--navy); color: var(--white); display: flex; align-items: center; justify-content: center; opacity: 0; visibility: hidden; transition: opacity .2s; z-index: 900; box-shadow: var(--shadow-lg); }
.back-to-top.show { opacity: 1; visibility: visible; }
.back-to-top:hover { background: var(--purple); color: var(--white); text-decoration: none; }

/* Prose / legal */
.legal h2 { font-size: 1.4rem; margin-top: 2.25rem; }
.legal h3 { font-size: 1.1rem; margin-top: 1.5rem; }

/* Keep large row gutters from overflowing the container on small screens */
.container { --bs-gutter-x: 2rem; }
@media (max-width: 991.98px) {
  .row.g-5 { --bs-gutter-x: 2rem; }
}
@media (max-width: 767.98px) {
  .section { padding: 3.5rem 0; }
  .hero { padding: 3rem 0 4.5rem; }
  .split + .split { margin-top: 3rem; }
  .spec-table th { width: 45%; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* ==========================================================================
   Shop
   ========================================================================== */
.nav-cart { position: relative; display: inline-block; width: max-content; font-size: 1.35rem; color: var(--navy); padding: .35rem .6rem !important; }
.nav-cart .cart-count { position: absolute; top: -2px; right: -4px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; background: var(--orange); color: var(--white); font-size: .72rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.shop-cats { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; }
.shop-cats a { padding: .45rem 1.1rem; border-radius: 999px; background: var(--white); border: 1px solid var(--line); color: var(--navy); font-weight: 600; }
.shop-cats a:hover { border-color: var(--purple); color: var(--purple); text-decoration: none; }
.product-tile { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); height: 100%; display: flex; flex-direction: column; overflow: hidden; transition: box-shadow .2s, transform .2s; }
.product-tile:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.product-tile-img { display: block; aspect-ratio: 1 / 1; background: var(--surface); overflow: hidden; }
.product-tile-img img { width: 100%; height: 100%; object-fit: contain; padding: 1rem; }
.product-tile-body { padding: 1.1rem 1.25rem 1.25rem; display: flex; flex-direction: column; flex: 1; }
.product-tile-body h3 a { color: var(--navy); }
.product-tile-foot { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding-top: .5rem; }
.tile-stock { display: block; font-size: .78rem; font-weight: 600; color: var(--bs-success); letter-spacing: 0; }
.product-tile .price { font-weight: 800; font-size: 1.2rem; color: var(--navy); }
.product-gallery .product-main { display: block; aspect-ratio: 1 / 1; min-height: 0; background: var(--surface); border-radius: var(--radius); border: 1px solid var(--line); overflow: hidden; }
.product-gallery .product-main img { width: 100%; height: 100%; object-fit: contain; padding: 1.5rem; }
.product-thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(84px, 100%), 1fr)); gap: .6rem; margin-top: .75rem; }
.product-thumbs a { aspect-ratio: 1 / 1; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.product-thumbs img { width: 100%; height: 100%; object-fit: contain; padding: .35rem; }
.product-price { font-size: 2.2rem; font-weight: 800; color: var(--navy); letter-spacing: -0.02em; margin: .5rem 0; }
.product-assurance li { display: flex; gap: .6rem; margin-bottom: .5rem; }
.product-assurance i { color: var(--purple); }
.product-desc ul { padding-left: 1.2rem; }
.product-desc table { width: 100%; border-collapse: collapse; background: var(--white); margin: 1rem 0; }
.product-desc th, .product-desc td { border: 1px solid var(--line); padding: .55rem .8rem; text-align: left; }
.product-desc tr > :first-child { font-weight: 700; color: var(--navy); background: var(--surface); width: 40%; }
.qty-input { width: 90px; }
.breadcrumb-dark { --bs-breadcrumb-divider-color: var(--muted); }
.breadcrumb-dark a { color: var(--muted); }
.cart-table th { font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.cart-table td, .cart-table th { padding: .9rem 1rem; }
.cart-thumb { width: 64px; height: 64px; flex: 0 0 64px; background: var(--surface); border-radius: 8px; overflow: hidden; display: block; }
.cart-thumb img { width: 100%; height: 100%; object-fit: contain; padding: .25rem; }
@media (max-width: 575.98px) {
  .cart-table td, .cart-table th { padding: .65rem .45rem; }
  .cart-thumb { display: none; }
  .cart-table .qty-input { width: 62px; }
}
.pay-methods { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.pay-method { display: flex; flex-direction: column; align-items: flex-start; gap: .1rem; text-align: left; padding: .8rem .9rem; border: 2px solid var(--line); border-radius: 12px; background: var(--white); color: var(--navy); transition: border-color .15s, background .15s; }
.pay-method i { font-size: 1.25rem; color: var(--muted); margin-bottom: .2rem; }
.pay-method strong { font-size: .95rem; }
.pay-method span { font-size: .8rem; color: var(--muted); }
.pay-method:hover { border-color: rgba(124,77,255,.5); }
.pay-method.active { border-color: var(--purple); background: rgba(124,77,255,.06); }
.pay-method.active i { color: var(--purple); }
.pay-method:focus-visible { outline: 3px solid rgba(124,77,255,.35); outline-offset: 2px; }

.order-totals { display: grid; grid-template-columns: 1fr auto; gap: .4rem 1rem; margin: 1rem 0; }
.order-totals dt { font-weight: 500; color: var(--muted); }
.order-totals dd { margin: 0; text-align: right; font-weight: 600; }
.order-totals .total { font-size: 1.2rem; font-weight: 800; color: var(--navy); border-top: 1px solid var(--line); padding-top: .5rem; }

/* Admin */
.admin-body { background: var(--surface); }
.admin-nav { background: var(--navy); }
.admin-nav .nav-link { color: rgba(255,255,255,.8) !important; }
.admin-nav .nav-link.active, .admin-nav .nav-link:hover { color: var(--white) !important; }
.admin-badge { font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; color: var(--yellow); font-weight: 700; }
.admin-login { max-width: 420px; margin: 8vh auto; }
.admin-compact .card-panel { padding: 1.25rem; height: auto; }
.admin-compact .card-panel h2 { margin-bottom: .75rem; }
.admin-compact .form-label { margin-bottom: .3rem; }
.admin-compact .form-text { margin-top: .2rem; }
.admin-compact .mt-3 { margin-top: .75rem !important; }
.admin-compact .mb-3 { margin-bottom: .75rem !important; }
.admin-stat { display: block; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.25rem; color: var(--muted); height: 100%; }
.admin-stat span { display: block; font-size: 1.9rem; font-weight: 800; color: var(--navy); }
a.admin-stat:hover { border-color: var(--purple); text-decoration: none; }
.admin-thumb { width: 56px; height: 56px; background: var(--surface); border-radius: 8px; overflow: hidden; }
.admin-thumb img { width: 100%; height: 100%; object-fit: contain; }
.admin-images { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: .75rem; }
.admin-image { border: 1px solid var(--line); border-radius: 10px; padding: .5rem; display: flex; flex-direction: column; gap: .25rem; background: var(--white); }
.admin-image img { width: 100%; aspect-ratio: 1 / 1; object-fit: contain; background: var(--surface); border-radius: 6px; }

/* Contact form honeypot: off-screen for people, still filled in by form-stuffing bots. */
.hp-field { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
