/* VUZIX V2 page (client's V2.pdf, 24 Oct). Effects copied from the client's references:
   the old COLOP page (/brands/colop/, design m1: banner, intro, products, big pictures, title + picture, video),
   the BRELYON Use Case page (feature cards, applications strip) and ktechlb.vercel.app/p2.html (picture / text tiles).
   Measured values from those pages are noted. Prefix: vz2- */

.page-vuzix2 { --vz2-font: "Square721 BT Roman", "Microsoft YaHei", sans-serif; background: #fff; }
.page-vuzix2 main { background: #fff; overflow-x: clip; }
.vz2-red-btn { display: inline-block; padding: 8px 46px; border: 1px solid #f44336; border-radius: 3px; background: transparent; color: #f44336; font: 400 1rem/1.5 var(--body); text-decoration: none; transition: .3s ease; cursor: pointer; }
.vz2-red-btn:hover { background: #f44336; color: #fff; }
.vz2-red-btn:focus-visible { outline: 2px solid #f44336; outline-offset: 3px; }

/* ---------- 1. banner (COLOP: title slides in from the left, small title drops in; optional flip-book icon) ---------- */
.vz2-banner { position: relative; height: clamp(400px, 35vw, calc(100vh - var(--hh))); /* client 30 Oct: "reduce a little" (was 40vw) */ background: #0b1020; color: var(--vz2-ink, #fff); }
.vz2-banner-bg { position: absolute; inset: 0; overflow: hidden; }
.vz2-banner-bg img, .vz2-banner-bg video { width: 100%; height: 100%; object-fit: cover; object-position: left center; }
.vz2-banner-bg video { object-position: center; }
/* picture or video background; with the video the banner works like the COLOP banner: 40% black over it, no glasses picture */
.vz2-banner[data-bg="video"] .vz2-banner-bg img, .vz2-banner[data-bg="video"] .vz2-banner-pic { display: none; }
.vz2-banner[data-bg="picture"] .vz2-banner-bg video { display: none; }
.vz2-banner[data-bg="video"] { --vz2-dim: .4; }
.vz2-banner::after { content: ""; position: absolute; inset: 0; z-index: 1; background: #000; opacity: var(--vz2-dim, 0); pointer-events: none; } /* COLOP: 40% black; here set in the panel (design: none) */
.vz2-banner-pic { position: absolute; z-index: 2; right: 7%; top: 50%; width: min(42%, 760px); transform: translateY(-50%); pointer-events: none; }
.vz2-banner-pic img { width: 100%; height: auto; }
.vz2-banner-in { position: absolute; z-index: 3; inset: auto 0 0 0; padding: 0 0 clamp(36px, 4.2vw, 60px) clamp(28px, 5vw, 72px); max-width: min(46%, 640px); }
.vz2-banner-logo { display: block; width: clamp(150px, 15vw, 230px); height: auto; margin-bottom: 6px; }
.vz2-banner h1 { margin: 0; font: 500 60px/1 var(--vz2-font); color: inherit; }
.vz2-banner h2 { margin: 6px 0 0; font: 400 clamp(26px, 2.6vw, 38px)/1.15 var(--vz2-font); color: inherit; }
.vz2-banner p { margin: 10px 0 0; font: 400 16px/25px var(--vz2-font); color: inherit; opacity: .95; max-width: 420px; }
/* client 26 Oct (M3.pdf): smaller (16vw = 253px at his 1583px screen, was 330px) and placed in his red box: the artwork's
   middle 1.8vw above the banner's bottom edge, so only its lower part reaches past the banner */
.vz2-flip { --vz2-flip-w: clamp(150px, 16vw, 280px); position: absolute; z-index: 4; right: 10%; bottom: calc(1.8vw - var(--vz2-flip-w) / 2); width: var(--vz2-flip-w); transition: transform .3s ease; }
.vz2-flip:hover { transform: scale(1.2); }
.vz2-flip img { width: 100%; height: auto; }
.vz2-flip:focus-visible { outline: 2px solid #f44336; outline-offset: 4px; }
.vz2-banner[data-flip="off"] .vz2-flip { display: none; }

/* ---------- 2. intro (COLOP "document security": logo, title, lines fading up one by one, Read More) ---------- */
.vz2-intro { padding: 60px 0 30px; background: var(--vz2-intro-bg, #fff) center / cover no-repeat; text-align: center; }
.vz2-intro-in { width: min(1186px, 100% - 2 * var(--gutter)); margin: 0 auto; }
.vz2-intro-logo { width: 230px; height: auto; margin: 0 auto 40px; display: block; }
.vz2-intro h2 { margin: 0 0 20px; font: 500 1.857rem/40px var(--vz2-font); color: var(--vz2-intro-title, #333); }
.vz2-intro p { margin: 0; font: 400 16px/25px var(--vz2-font); color: var(--vz2-intro-ink, #525252); }
.vz2-intro .vz2-red-btn { margin: 20px 0 40px; }

/* ---------- 3. product tiles, 1 / 2 / 3 (COLOP products: side by side, thin dividers, light veil on hover) ---------- */
.vz2-products { display: flex; height: clamp(340px, 28.5vw, 560px); background: #000; }
.vz2-products[data-products="1"] .vz2-prod:nth-child(n+2), .vz2-products[data-products="2"] .vz2-prod:nth-child(3) { display: none; }
.vz2-prod { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; display: block; color: #fff; text-decoration: none; background: var(--vz2-prod-bg, #000) center / cover no-repeat; border-right: 1px solid rgb(110, 108, 108); }
.vz2-prod:last-child, .vz2-products[data-products="2"] .vz2-prod:nth-child(2), .vz2-products[data-products="1"] .vz2-prod:first-child { border-right: 0; }
.vz2-prod-pic { position: absolute; inset: 16.8% 5.9% 15.2% 39.9%; display: flex; align-items: center; justify-content: center; } /* client 26 Oct (M3.pdf): his red box, 2 products */
.vz2-products[data-products="1"] .vz2-prod-pic { inset: 8% 8% 8% 42%; }
.vz2-products[data-products="3"] .vz2-prod-pic { inset: 6% 6% 38% 14%; }
.vz2-prod-pic img { max-width: 100%; max-height: 100%; object-fit: contain; transition: transform .6s ease; }
.vz2-prod-veil { position: absolute; inset: 0; z-index: 1; background: rgb(255 244 244 / 55%); opacity: 0; transition: opacity .3s ease; pointer-events: none; } /* COLOP .product-detail.overlay */
.vz2-prod:hover .vz2-prod-veil, .vz2-prod:focus-visible .vz2-prod-veil { opacity: .6; }
.vz2-prod-copy { position: absolute; z-index: 2; left: clamp(20px, 3.4vw, 50px); bottom: clamp(24px, 3.4vw, 46px); max-width: 300px; }
.vz2-prod-copy h3 { margin: 0; font: 400 clamp(17px, 1.4vw, 21px)/1.25 var(--body); color: var(--vz2-prod-title, #fff); }
.vz2-prod-copy .kicker { margin: 2px 0 8px; font-size: 13px; color: #1a8fd8; }
.vz2-prod-copy p:not(.kicker) { margin: 0; max-width: clamp(180px, 13.4vw, 260px); font-size: 12.5px; line-height: 1.45; color: var(--vz2-prod-ink, #cfd4da); } /* client 26 Oct: shorter lines (212px at 1583) */
.vz2-prod-copy .btn-line { margin-top: 14px; padding: 7px 16px; font-size: 10.5px; }
.vz2-prod:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }
/* client 29 Oct (no fixed number of products): 4 or more go on rows of at most 3 (4 = 2 + 2), each row as tall as the
   1-3 product design; the thin dividers become the 1px gaps */
.vz2-products.is-rows { flex-wrap: wrap; height: auto; gap: 1px; background: rgb(110, 108, 108); }
.vz2-products.is-rows .vz2-prod { flex: 1 1 calc((100% - (var(--per) - 1) * 1px) / var(--per) - .1px); height: clamp(340px, 28.5vw, 560px); border-right: 0; }
.vz2-products[data-per="3"] .vz2-prod-pic { inset: 6% 6% 38% 14%; }

/* ---------- 4. feature cards (BRELYON Use Case cards = COLOP colour boxes), 4 per row as in the design ---------- */
.vz2-feat .ucp-feat-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); width: min(1180px, 82vw, 100% - 2 * var(--gutter)); }
/* 6 boxes: 3 per row, as on the Use Case page (the panel shows as many as he adds, up to 8) */
.vz2-feat[data-cards="6"] .ucp-feat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); width: min(966px, 67vw, 100% - 2 * var(--gutter)); }
.vz2-feat[data-cards="6"]:not([data-exact]) .ucp-card-col:nth-child(4n) { display: none; } /* preview only: its 8 sample boxes */
.vz2-feat .ucp-card { min-height: 300px; }
.vz2-feat .ucp-card-ic { width: 80px; height: 70px; object-fit: contain; margin-bottom: 18px; }
.vz2-feat .ucp-card h3 { font: 600 15px/1.3 var(--vz2-font); color: var(--vz2-card-title, #343a40); }
.vz2-feat .ucp-card p { font: 400 13px/1.55 var(--vz2-font); color: var(--vz2-card-ink, #6c7177); }

/* ---------- 5. big picture (COLOP "glass eye": the picture stays still while the page moves over it) ---------- */
.vz2-glass { height: 660px; background-color: #222; background-position: center; background-size: cover; background-repeat: no-repeat; background-attachment: fixed; }

/* ---------- 6. title + picture (COLOP: text slides in from the left, picture from the right, one after another) ---------- */
.vz2-title { background: var(--vz2-title-bg, #fff) center / cover no-repeat; }
/* placed as on the original COLOP link: 160px side margins, a 1320px container, two equal columns with 12px inner space,
   text over the whole left column, the moving picture at the right of the right column */
.vz2-title-in { display: grid; grid-template-columns: 1fr 1fr; align-items: center; width: min(1320px, 100% - 2 * 160px); margin: 0 auto; padding: 150px 0 110px; } /* COLOP: margin 90/160/80 + padding 60/30 */
.vz2-title-in > div { padding: 0 12px; }
.vz2-title h2 { margin: 0 0 15px; font: 400 50px/60px var(--vz2-font); color: var(--vz2-title-title, #333); }
.vz2-title p { margin: 0 0 10px; font: 400 16px/25px var(--vz2-font); color: var(--vz2-title-ink, #212529); }
.vz2-title .vz2-red-btn { margin-top: 10px; font-family: var(--vz2-font); } /* client 29 Oct: the whole section in Square721 BT Roman, normal (also on U1) */
.vz2-title-pic { text-align: right; }
.vz2-title-pic img, .vz2-title-pic video { display: inline-block; width: 480px; max-width: 100%; height: auto; vertical-align: top; }

/* ---------- 7. video (COLOP: dotted veil, play / pause button in the middle) ---------- */
.vz2-video { position: relative; background: #000; margin-bottom: -7px; }
.vz2-video video { display: block; width: 100%; height: 590px; object-fit: cover; }
.vz2-video-dots { position: absolute; inset: 0 0 1% 0; z-index: 9; pointer-events: none; background-image: radial-gradient(circle at 1px 1px, hsla(0, 0%, 100%, .5) 1px, transparent 0); background-size: 8px 8px; }
/* white round button as in the client's V2 design (COLOP behaviour: play, then pause) */
.vz2-playbtn { position: absolute; z-index: 99; top: 50%; left: 50%; width: 58px; height: 58px; padding: 0; border: 0; border-radius: 50%; transform: translate(-50%, -50%); background: #fff; color: #1b1f26; cursor: pointer; display: grid; place-items: center; box-shadow: 0 4px 18px rgba(0, 0, 0, .35); transition: transform .2s ease; }
.vz2-playbtn:hover { transform: translate(-50%, -50%) scale(1.08); }
.vz2-playbtn svg { width: 22px; height: 22px; }
.vz2-playbtn .i-pause, .vz2-playbtn.pause .i-play { display: none; }
.vz2-playbtn.pause .i-pause { display: block; }
.vz2-video:not(:hover) .vz2-playbtn.pause { opacity: 0; } /* while playing the button shows when the mouse is over the video */
.vz2-playbtn:focus-visible { outline: 2px solid #fff; outline-offset: 4px; border-radius: 50%; }

/* ---------- 8. applications strip: the Use Case page section, reused ---------- */
.vz2-apps { background: #fff; }

/* ---------- 9. picture / text tiles (p2.html: 2 rows of 4, they bounce in, pictures zoom on hover and open large) ---------- */
.vz2-tiles { overflow: hidden; background: var(--vz2-tiles-bg, #fff); }
.vz2-tiles-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.vz2-tile { position: relative; height: 400px; overflow: hidden; }
.vz2-tile-pic { display: block; width: 100%; height: 100%; background: center / cover no-repeat; transition: all 1s ease; cursor: zoom-in; border: 0; padding: 0; }
.vz2-tile-pic:hover, .vz2-tile-pic:focus-visible { transform: scale(1.2); }
.vz2-tile-pic:focus-visible { outline: 2px solid #fff; outline-offset: -6px; }
.vz2-tile-text { position: absolute; inset: 0; padding: 20px; background-image: linear-gradient(var(--vz2-tile-top, #c7c8cd), var(--vz2-tile-bottom, #88898e)); }
.vz2-tile-text h3 { position: absolute; left: 50%; top: 50%; z-index: 1; width: 80%; margin: 0; transform: translate(-50%, -50%); font: 500 29.712px/1.2 "Microsoft YaHei", var(--body); color: var(--vz2-tile-ink, #fff); text-align: center; }
/* WOW.js + animate.css bounceInLeft / Up / Right, same keyframes; durations per tile come from the page (1 to 8 s) */
.js .vz2-tile[data-bounce] { visibility: hidden; }
.js .vz2-tile.vz2-in { visibility: visible; animation-fill-mode: both; animation-duration: var(--d, 1s); }
.vz2-tile.vz2-in[data-bounce="left"] { animation-name: vz2BounceInLeft; }
.vz2-tile.vz2-in[data-bounce="up"] { animation-name: vz2BounceInUp; }
.vz2-tile.vz2-in[data-bounce="right"] { animation-name: vz2BounceInRight; }
@keyframes vz2BounceInLeft { 0% { opacity: 0; transform: translateX(-2000px); } 60% { opacity: 1; transform: translateX(30px); } 80% { transform: translateX(-10px); } 100% { transform: translateX(0); } }
@keyframes vz2BounceInUp { 0% { opacity: 0; transform: translateY(2000px); } 60% { opacity: 1; transform: translateY(-30px); } 80% { transform: translateY(10px); } 100% { transform: translateY(0); } }
@keyframes vz2BounceInRight { 0% { opacity: 0; transform: translateX(2000px); } 60% { opacity: 1; transform: translateX(-30px); } 80% { transform: translateX(10px); } 100% { transform: translateX(0); } }
.vz2-lb { position: fixed; inset: 0; z-index: 210; display: grid; place-items: center; padding: 56px 72px; background: rgba(8, 10, 14, .9); }
.vz2-lb[hidden] { display: none; }
.vz2-lb img { width: auto; height: calc(100vh - 112px); max-width: 100%; object-fit: contain; box-shadow: 0 20px 60px rgba(0, 0, 0, .5); } /* client 24 Oct: larger pop-up, nearly the full screen height */
.vz2-lb-x { position: absolute; top: 10px; right: 14px; width: 46px; height: 46px; border: 0; background: none; color: #fff; font-size: 36px; line-height: 1; cursor: pointer; }
.vz2-lb-arrow { position: absolute; top: 50%; width: 48px; height: 48px; margin-top: -24px; border: 0; background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer; display: grid; place-items: center; }
.vz2-lb-arrow svg { width: 24px; height: 24px; }
.vz2-lb-arrow.prev { left: 12px; } .vz2-lb-arrow.next { right: 12px; }

/* ---------- flip-book icon -> "How to use the e-mark" pop-up (client 27 Oct, M3, P1.pdf): white box on the dimmed page,
   instructions on the left, the big video with its small pictures on the right ---------- */
button.vz2-flip { border: 0; padding: 0; background: none; cursor: pointer; }
.vz2-how { position: fixed; inset: 0; z-index: 220; display: grid; place-items: center; padding: 24px; background: rgba(8, 10, 14, .78); }
.vz2-how[hidden] { display: none; }
.vz2-how-box { position: relative; width: min(1180px, 100%); max-height: calc(100vh - 48px); overflow: auto; display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(24px, 3vw, 48px); align-items: center; padding: clamp(36px, 3.4vw, 56px) clamp(24px, 3vw, 48px); background: #fff; color: #222; box-shadow: 0 24px 70px rgba(0, 0, 0, .45); }
.vz2-how-novid { grid-template-columns: 1fr; width: min(720px, 100%); }
.vz2-how-x { position: absolute; top: 8px; right: 10px; width: 42px; height: 42px; border: 0; background: none; color: #222; font-size: 32px; line-height: 1; cursor: pointer; }
.vz2-how-x:focus-visible, .vz2-how-thumb:focus-visible { outline: 2px solid #1a8fd8; outline-offset: 2px; }
.vz2-how-text h2 { margin: 0 0 16px; font: 600 clamp(20px, 1.6vw, 26px)/1.25 var(--body); color: #1b1b1b; }
.vz2-how-text ol { margin: 0; padding-left: 1.5em; font: 400 14px/1.55 var(--body); color: #444; }
.vz2-how-text li + li { margin-top: 5px; }
.vz2-how-player { aspect-ratio: 16 / 9; background: #000; }
.vz2-how-player iframe, .vz2-how-player video { display: block; width: 100%; height: 100%; border: 0; background: #000; }
.vz2-how-thumbs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.vz2-how-thumb { position: relative; aspect-ratio: 16 / 9; padding: 0; border: 2px solid transparent; background: #111; overflow: hidden; cursor: pointer; }
.vz2-how-thumb[aria-current="true"] { border-color: #1a8fd8; }
.vz2-how-thumb img, .vz2-how-thumb video { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.vz2-how-thumb:hover img, .vz2-how-thumb:hover video { transform: scale(1.05); }
.vz2-how-play { position: absolute; left: 50%; top: 50%; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%; background: rgba(0, 0, 0, .55); }
.vz2-how-play::before { content: ""; position: absolute; left: 11px; top: 8px; border-style: solid; border-width: 7px 0 7px 11px; border-color: transparent transparent transparent #fff; }
@media (max-width: 760px) {
  .vz2-how { padding: 12px; }
  .vz2-how-box { grid-template-columns: 1fr; max-height: calc(100vh - 24px); padding: 48px 18px 22px; }
  .vz2-how-thumbs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- 10 / 11. News & Blog and Common questions, full width ("same as before but full page") ---------- */
.vz2-news { padding: clamp(56px, 6vw, 90px) 0; background: #fff; }
.vz2-news .s-news { padding: 0; background: transparent; }
.vz2-news .s-news .h-section { color: #333; }
.vz2-news .news-slider { width: calc(100vw - 2 * max(var(--gutter), 64px)); margin: 40px calc(50% - 50vw + max(var(--gutter), 64px)) 0; }
.vz2-news .news-card { border-color: #d5d8dc; background: #fff; }
.vz2-news .news-card:hover { border-color: #9aa0a8; }
.vz2-news .news-card p { color: #555; }
.vz2-news .news-card time { color: #8a9099; }
.vz2-news .ns-arrow { color: #8a9099; }
.page-vuzix2 .s-faq .wrap { width: calc(100% - 2 * max(var(--gutter), 64px)); max-width: none; }
.page-vuzix2 .s-cta h2 { color: #fff; }

/* ---------- phones / tablets ---------- */
@media (max-width: 1100px) { .vz2-feat .ucp-feat-grid, .vz2-feat[data-cards] .ucp-feat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); width: min(966px, 100% - 2 * var(--gutter)); } .vz2-title-in { width: calc(100% - 2 * var(--gutter)); padding: 80px 0; } }
@media (max-width: 900px) {
  .vz2-banner { height: auto; min-height: 520px; display: flex; flex-direction: column; justify-content: flex-end; }
  .vz2-banner-pic { top: 12%; right: 4%; width: 70%; transform: none; }
  .vz2-banner-in { position: relative; max-width: none; padding: 0 20px 36px; }
  .vz2-banner h1 { font-size: 40px; }
  .vz2-flip { width: 150px; bottom: -60px; right: 6%; }
  .vz2-products { flex-direction: column; height: auto; }
  .vz2-prod { min-height: 340px; border-right: 0; border-bottom: 1px solid rgb(110, 108, 108); }
  .vz2-products.is-rows { gap: 0; }
  .vz2-products.is-rows .vz2-prod { flex: none; height: auto; }
  .vz2-prod-pic, .vz2-products[data-products] .vz2-prod-pic { inset: 6% 6% 40% 20%; }
  .vz2-glass { height: 56vw; min-height: 260px; background-attachment: scroll; }
  .vz2-title-in { grid-template-columns: 1fr; gap: 28px; padding: 64px 0; }
  .vz2-title h2 { font-size: 36px; line-height: 44px; }
  .vz2-title-pic { text-align: center; }
  .vz2-video video { height: 56.25vw; min-height: 220px; }
  .vz2-tiles-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vz2-tile { height: 44vw; min-height: 170px; }
  .vz2-tile-text h3 { font-size: 20px; }
  .vz2-news .news-slider { width: auto; margin-inline: 0; }
  .page-vuzix2 .s-faq .wrap { width: calc(100% - 2 * var(--gutter)); }
}
@media (max-width: 600px) { .vz2-feat .ucp-feat-grid, .vz2-feat[data-cards] .ucp-feat-grid { grid-template-columns: 1fr; } .vz2-lb { padding: 56px 12px; } .vz2-lb img { height: auto; max-height: calc(100vh - 112px); } }
@media (hover: none) { .vz2-glass { background-attachment: scroll; } }
@media (prefers-reduced-motion: reduce) {
  .js .vz2-tile[data-bounce] { visibility: visible; }
  .vz2-tile.vz2-in { animation: none !important; }
  .vz2-glass { background-attachment: scroll; }
}
