/*
Theme Name:     Aligned Vision
Theme URI:
Description:    Hello-elementor child theme.
Author:         Sang
Author URI:
Template:       hello-elementor
Version:        0.1.0
*/

/* ==========================================================================
   Aligned Vision child CSS — ONLY what Elementor genuinely can't do.
   Each rule = verified no native control. (Clean rewrite 2026-06-10.)
   ========================================================================== */

/* [exception] diagonal arrow icon (no rotate control in Elementor button).
   Add CSS class 'av-btn-diag' to any button that needs the ↗ arrow. */
.av-btn-diag .elementor-button-icon i,
.av-btn-diag .elementor-button-icon svg,
.av-btn-diag .elementor-icon i,
.av-btn-diag .elementor-icon svg { transform: rotate(-45deg); }
/* [exception] fixed button width (no width control in Elementor button) */
.elementor-element-avhdrbtn .elementor-button { white-space: nowrap; min-width: 200px; justify-content: center; }
/* [exception] full-width button (live w-full) — Elementor button widget không có control width. Class av-btn-full. */
.av-btn-full .elementor-button { width: 100%; }
/* [exception] nút CTA "Contact us" rộng cố định (live 315 desktop / 280 mobile) — button widget không có control width */
.elementor-element-avaictabtn .elementor-button { min-width: 315px; }
@media (max-width: 767px) { .elementor-element-avaictabtn .elementor-button { min-width: 280px; } }
@media (min-width: 768px) and (max-width: 1024px) { .elementor-element-avaictabtn .elementor-button { min-width: 375px; } }
.elementor-element-avherob1 .elementor-button,
.elementor-element-avherob2 .elementor-button { white-space: nowrap; min-width: 232px; justify-content: center; }

/* [exception] hero headline green per-line underline (Elementor has no text-decoration-color/offset control) */
.elementor-element-avherohead .elementor-heading-title {
	text-decoration: underline;
	text-decoration-color: #61BC4D;
	text-decoration-thickness: 2px;
	text-underline-offset: 8px;
}

/* [exception] mega nav item hover = bold + green underline (mega title has no hover-weight/underline control) */
.elementor-element-avhdrnav .e-n-menu-title-container:hover .e-n-menu-title-text {
	font-weight: 700;
	box-shadow: inset 0 -1px 0 0 #61BC4D;
}

/* [exception] mega dropdown panel: cap 1240 centered (no dropdown-width control) + item gray underline,
   hover green (native icon-list 'divider' does NOT render in mega nested context) + remove empty icon gutter */
.elementor-element-avmegaind, .elementor-element-avmegaprod {
	max-width: 1240px !important; margin-left: auto !important; margin-right: auto !important;
}
.elementor-element-avmegaind .elementor-icon-list-icon,
.elementor-element-avmegaprod .elementor-icon-list-icon { display: none; }
.elementor-element-avmegaind .elementor-icon-list-text,
.elementor-element-avmegaprod .elementor-icon-list-text { padding-left: 0; }
.elementor-element-avmegaind .elementor-icon-list-item,
.elementor-element-avmegaprod .elementor-icon-list-item { border-bottom: 1px solid #DCDFE4; }
.elementor-element-avmegaind .elementor-icon-list-item:hover,
.elementor-element-avmegaprod .elementor-icon-list-item:hover { border-bottom-color: #61BC4D; }

/* [exception] FOOTER: icon-list empty gutter + contact button one line (no native controls) */
.elementor-element-avfrow .elementor-widget-icon-list .elementor-icon-list-icon { display: none; }
.elementor-element-avfrow .elementor-widget-icon-list .elementor-icon-list-text { padding-left: 0; }
.elementor-element-avfcbtn .elementor-button { white-space: nowrap; min-width: 188px; height: 48px; padding: 0 12px !important; border-radius: 0; display: inline-flex; align-items: center; justify-content: center; } /* live nút Contact us: w188 h48 pad0/12 r0 */

/* [exception] Mobile drawer (popup #39) submenu = in-flow accordion below parent.
   Elementor nav-menu 'none' layout renders submenu as absolute desktop flyout to the side;
   no native control to make it static/accordion. Tap-toggle itself is native. */
.elementor-element-avpopnav ul.sub-menu {
	position: static !important;
	width: 100% !important;
	min-width: 0 !important;
	box-shadow: none !important;
	padding-left: 16px;
}

/* [exception] scroll-drawn card border (gray track + green line drawn by scroll).
   Live site scrubs SVG stroke-dashoffset with scroll; Elementor Motion Effects can
   only animate transform/opacity, not SVG strokes. JS av_border_draw (functions.php)
   injects these SVGs into every element with CSS class 'av-border-draw'.
   Cards/content themselves stay fully native Elementor. */
.av-border-draw, .av-draw-v, .av-draw-h, .av-draw-corner { position: relative; }
/* base: KHÔNG set top/left ở đây (sẽ đè .av-bd-right/.av-bd-bottom) — mỗi side tự set vị trí */
.av-border-draw .av-bd, .av-draw-v .av-bd, .av-draw-h .av-bd, .av-draw-corner .av-bd { position: absolute; pointer-events: none; }
.av-draw-corner .av-bd { top: 0; left: 0; }
.av-draw-corner .av-bd-g { transition: stroke-dashoffset .1s linear; }
.av-bd-top { top: 0; left: 0; }
.av-bd-bottom { bottom: 0; left: 0; }
.av-bd-left { left: 0; top: 0; }
.av-bd-right { right: 0; top: 0; }
.av-bd .av-bd-g { transition: stroke-dashoffset .1s linear; }       /* tô-dần theo cuộn (live inline style) */
/* adjacent cards share one line on desktop (live hides duplicated sides via xl:hidden):
   av-skip-lr = middle column, av-skip-top = rows after the first */
@media (min-width: 1025px) {
	.av-skip-lr .av-bd-left, .av-skip-lr .av-bd-right { display: none; }
	.av-skip-top .av-bd-top { display: none; }
}

/* [exception] Industries lead-in connector: live = absolute top:180 left:0, 719x122 L-trace,
   chỉ hiện xl (>=1280). Elementor không overlay được trong flow → absolute CSS. */
.elementor-element.av-ind-rel { position: relative; }
.elementor-element.av-ind-conn-top { display: none; }
@media (min-width: 1280px) {
	.elementor-element.av-ind-conn-top { display: block; position: absolute; top: 180px; left: 0; width: 719px; height: 108px; min-height: 0; padding: 0; pointer-events: none; z-index: 1; }
	/* About lead-in connector: dọc 3x160 @x411 y0 + ngang 414x3 @x0 y160 (Elementor container absolute không ăn → CSS) */
	.elementor-element.elementor-element-avaboutcv { position: absolute; left: 411px; top: 0; width: 3px; height: 160px; min-height: 0; pointer-events: none; z-index: 1; }
	.elementor-element.elementor-element-avaboutch { position: absolute; left: 0; top: 160px; width: 414px; height: 3px; min-height: 0; pointer-events: none; z-index: 1; }
}
/* connector chỉ là overlay desktop; <1280 phải ẩn hẳn. Specificity 0,2,0 để thắng .e-con{display:flex} (nếu chỉ 0,1,0 sẽ bị đè → line xám/xanh lòi ra dưới ảnh trên mobile). */
@media (max-width: 1279px) {
	.elementor-element.elementor-element-avaboutcv,
	.elementor-element.elementor-element-avaboutch { display: none !important; }
}

/* [exception] Get Started form: live 2 cột (trái 5 field, phải country trên + textarea cao), submit đen giữa.
   GIỮ 2 cột ở MỌI size (live không stack cả ở 412). Elementor form flow theo width% không ra layout này → CSS grid. */
.av-form { width: 100%; }   /* parent flex-start làm widget co lại 880; ép full như live */
.av-form .elementor-form-fields-wrapper { display: grid; grid-template-columns: 1fr 1fr; column-gap: 40px; row-gap: 40px; align-items: start; }
.av-form .elementor-field-group-fname { grid-column: 1; grid-row: 1; }
.av-form .elementor-field-group-fcompany { grid-column: 1; grid-row: 2; }
.av-form .elementor-field-group-fjob { grid-column: 1; grid-row: 3; }
.av-form .elementor-field-group-femail { grid-column: 1; grid-row: 4; }
.av-form .elementor-field-group-fphone { grid-column: 1; grid-row: 5; }
.av-form .elementor-field-group-fcountry { grid-column: 2; grid-row: 1; }
.av-form .elementor-field-group-fmsg { grid-column: 2; grid-row: 2 / span 4; height: 100%; }
.av-form .e-form__buttons { grid-column: 1 / -1; grid-row: 6; justify-content: center; margin-top: 20px; }
/* input + select = CHỈ gạch chân (live transparent, border-bottom 1px). select class là .elementor-field-textual (KHÔNG .elementor-field) nên target riêng. */
.av-form input.elementor-field, .av-form select {
	border: 0 !important; border-bottom: 1px solid #D1D5DB !important; border-radius: 0 !important;
	background: transparent !important; padding-left: 0 !important; padding-right: 0 !important;
	box-sizing: border-box !important; height: 37px !important; min-height: 37px !important; padding-top: 0 !important; padding-bottom: 8px !important; line-height: 28px !important; /* live: lh28 + pad-bottom8 + border1 = 37 */
}
.av-form select { font-size: 16px !important; } /* live Country 16 (input 18) */
/* textarea (message) = viền đầy đủ + font 16/24 (live khác input 18/28) */
.av-form textarea.elementor-field { border: 1px solid #D1D5DB !important; padding: 14px !important; min-height: 350px; font-size: 16px !important; line-height: 24px !important; }
/* focus state (live): underline input/select + border textarea -> xanh #61BC4D, transition mượt */
.av-form input.elementor-field, .av-form select, .av-form textarea.elementor-field { transition: border-color .2s ease; }
.av-form input.elementor-field:focus, .av-form select:focus { border-bottom-color: #61BC4D !important; outline: none; }
.av-form textarea.elementor-field:focus { border-color: #61BC4D !important; outline: none; }
/* submit: mobile/tablet full-width; desktop 375 cố định (live) */
.av-form .e-form__buttons .elementor-button { width: 100%; padding-top: 20px; padding-bottom: 20px; font-size: 16px; line-height: 24px; }
@media (min-width: 768px) { .av-form .e-form__buttons .elementor-button { width: auto; min-width: 375px; } }
/* [exception] About stats so le: desktop+tablet đặt cell theo vị trí (grid placement) — DOM order theo live để mobile auto-flow đúng.
   Elementor grid không expose per-cell column/row → CSS. Live: 4 cột so le ở cả desktop VÀ tablet (768); chỉ mobile (<=767) mới 2 cột auto-flow. */
@media (min-width: 768px) {
	.elementor-element-avst1 { grid-column: 1; grid-row: 1; } /* 35+ */
	.elementor-element-avst2 { grid-column: 2; grid-row: 1; } /* 1987 */
	.elementor-element-avst3 { grid-column: 3; grid-row: 1; } /* ZERO */
	.elementor-element-avst4 { grid-column: 2; grid-row: 2; } /* NO COST */
	.elementor-element-avst5 { grid-column: 4; grid-row: 2; } /* THE ONLY */
}
/* mobile: grid 300 căn giữa trong content 372 (live cell x49 = căn giữa). id-selector + !important vì flex item bị space-between đẩy về start. */
@media (max-width: 767px) {
	.elementor-element.elementor-element-avstatgrid { margin-left: auto !important; margin-right: auto !important; }
}
/* ảnh About: <1280 (live stack flex-col, image wrapper flex justify-center) → căn GIỮA. >=1280 giữ flex-start (ảnh 780-1280 cạnh stats). */
@media (max-width: 1279px) {
	.elementor-element.elementor-element-avaboutimg { margin-left: auto !important; margin-right: auto !important; }
}
/* [exception] gộp viền 1px thẳng hàng: border-box vẽ viền BÊN TRONG nên 2 cell kề nhau vẽ ở 2 phía của
   đường giáp → lệch 1px (đường gãy khúc giữa 2 hàng). Live nhích cell hàng-2 đi (-1,-1) để viền top/left
   của nó trùng KHÍT viền bottom/right của hàng-1 (đo được: NO COST x249 y832, không phải 250/833).
   Dùng transform (không reflow layout, chỉ dời nét vẽ). */
/* track CỐ ĐỊNH 150px (không 1fr) để ô rộng 152 KHÔNG nở track/bóp ô khác — overflow sạch 2px. */
@media (min-width: 768px) { .av-stat-grid { grid-template-columns: repeat(4, 150px) !important; } }
@media (max-width: 767px) { .av-stat-grid { grid-template-columns: repeat(2, 150px) !important; } }
@media (min-width: 768px) {
	/* NO COST bắc cầu giữa 2 line dọc: rộng 152 (249→401) để viền TRÁI trùng line phải 35+ (x250) VÀ viền PHẢI trùng line trái ZERO (x400). Live đo đúng vậy (NO COST L249 R401 w152). */
	.elementor-element-avst4 { width: 152px !important; transform: translate(-1px, -1px); }
	.elementor-element-avst5 { transform: translate(-1px, -1px); } /* THE ONLY: viền trái trùng ZERO phải (x550) */
}
@media (max-width: 767px) {
	.elementor-element-avst4 { transform: translate(-1px, 0); }    /* NO COST  (c2 r1) */
	.elementor-element-avst2 { transform: translate(0, -1px); }    /* 1987     (c1 r2) */
	.elementor-element-avst5 { transform: translate(-1px, -1px); } /* THE ONLY (c2 r2) */
	.elementor-element-avst3 { transform: translate(0, -2px); }    /* ZERO     (c1 r3) */
}

/* ============ HISTORY OF INNOVATION: deck cuộn xếp chồng ============
   Live = JS scroll animation (card pin + stack). Tái tạo bằng CSS position:sticky:
   header pin top, heading pin dưới header, mỗi card sticky top tăng dần (peek 110px)
   nên card sau ghim thấp hơn 110 và đè lên card trước (đo live: tops 203/313/423...). */
.elementor-location-header { position: sticky; top: 0; z-index: 100; }
/* không để tổ tiên cắt sticky */
.elementor-element-avhistwrap, .elementor-element-avhist, .elementor-element-avhistcards { overflow: visible; }
/* HISTORY deck = ĐÚNG kỹ thuật LIVE (CSS THUẦN, KHÔNG JS): mỗi card trong wrapper .av-hist-wrap sticky top:0, min-height 400 (set ở build).
   MỌI wrapper CÙNG top+height -> ghim chồng khi cuộn rồi un-pin ĐỒNG THỜI khi container hết = cả deck TRƯỢT ĐỀU (không dồn).
   card translateY tăng dần (203+i*110 desktop / 170+i*70 mobile) tạo peek. 1987 ghim bằng CSS sticky = MƯỢT, không giật so với heading. */
.elementor-element.av-hist-wrap { position: sticky; top: 0; overflow: visible; }
/* deck History nằm TRÊN section sau (OUR OFFICES) để hiện đủ 6 card lúc xếp; trượt lên xong mới lộ OUR OFFICES */
.elementor-element.elementor-element-avhistwrap { position: relative; z-index: 2; }
@media (min-width: 1025px) {
	.elementor-element.elementor-element-avhisth { position: sticky !important; top: 120px; z-index: 0; } /* z0: card (z1-6) trượt ĐÈ lên heading lúc thoát, khớp live */
	.elementor-element.elementor-element-avhc1 { transform: translateY(203px); z-index: 1; }
	.elementor-element.elementor-element-avhc2 { transform: translateY(313px); z-index: 2; }
	.elementor-element.elementor-element-avhc3 { transform: translateY(423px); z-index: 3; }
	.elementor-element.elementor-element-avhc4 { transform: translateY(533px); z-index: 4; }
	.elementor-element.elementor-element-avhc5 { transform: translateY(643px); z-index: 5; }
	.elementor-element.elementor-element-avhc6 { transform: translateY(753px); z-index: 6; }
}
@media (max-width: 1024px) {
	.elementor-element.elementor-element-avhisth { position: sticky !important; top: 90px; z-index: 0; background: #FFFFFF; }
	.elementor-element.elementor-element-avhc1 { transform: translateY(170px); z-index: 1; }
	.elementor-element.elementor-element-avhc2 { transform: translateY(240px); z-index: 2; }
	.elementor-element.elementor-element-avhc3 { transform: translateY(310px); z-index: 3; }
	.elementor-element.elementor-element-avhc4 { transform: translateY(380px); z-index: 4; }
	.elementor-element.elementor-element-avhc5 { transform: translateY(450px); z-index: 5; }
	.elementor-element.elementor-element-avhc6 { transform: translateY(520px); z-index: 6; }
}

/* [exception] OUR OFFICES marker sao: live scale(0)→scale(1) 3s ease chạy 1 lần khi vào viewport.
   Trigger dùng Entrance Animation native (Elementor thêm class .animated khi vào view); chỉ override
   keyframes vì animate.css zoomIn (0.3→1 + opacity) KHÁC live (0→1 thuần scale, 3s). */
@keyframes av-scale-up { 0% { transform: scale(0); } 100% { transform: scale(1); } }
.elementor-element.av-map-star.animated { animation: av-scale-up 3s ease forwards; transform-origin: center center; }

/* [exception] OUR OFFICES map: ép đúng 1174px như live kể cả khi container hụt vì scrollbar
   (img mặc định max-width:100% sẽ co còn 1165 làm chấm + sao lệch khỏi bản đồ); phần tràn bị wrap cắt. */
.elementor-element.elementor-element-avcontmap img { max-width: none; } /* specificity 0,2,1 thắng .elementor img{max-width:100%} */
.elementor-element.elementor-element-avcontactwrap { overflow: hidden; }

/* [exception] FOCUS: <p> trong text-editor có margin-bottom mặc định ~14px làm section cao 266 thay vì 252 như live (live gap head-desc = 0, không margin) */
.elementor-element-avf3t1 p, .elementor-element-avf3t2 p, .elementor-element-avf3t3 p { margin-bottom: 0; }

/* [exception] hiệu ứng 34 chấm xanh (live): mask path.point trong svg phóng scale(0)->1 từ TÂM, 3s ease, forwards
   -> chấm hiện lan từ giữa bản đồ ra. Trigger native .animated; tắt zoomIn mặc định trên widget. */
.elementor-element.av-map-dots.animated { animation: none; }
.elementor-element.av-map-dots svg mask path { transform-origin: center; transform: scale(0); }
.elementor-element.av-map-dots.animated svg mask path { animation: av-scale-up 3s ease forwards; }
/* live: map + chấm + sao chỉ hiện xl >=1280 (hidden xl:flex) — hide native Elementor chỉ phủ <=1024, bù vùng 1025-1279 */
@media (max-width: 1279px) {
	.elementor-element.elementor-element-avcontmap,
	.elementor-element.elementor-element-avcontdots,
	.elementor-element.av-map-star { display: none !important; }
}

/* [exception] OUR OFFICES contact rows: label cột 120 cố định + value CÙNG HÀNG mọi size.
   Elementor mobile reset container con (label wrap) về width:100% → label giãn full đẩy value xuống dòng;
   text-editor widget mặc định width:100% cũng làm value full. Live: label 120 + value co theo nội dung, cùng hàng. */
.elementor-element.av-crow { flex-wrap: nowrap; }
.elementor-element.av-crow-lab { width: 120px; min-width: 120px; flex: 0 0 120px !important; }
.elementor-element.av-crow > .elementor-widget.av-crow-val { width: auto; flex: 0 1 auto; }
@media (min-width: 1025px) { .elementor-element.av-crow > .elementor-widget.av-crow-val-addr { max-width: 300px; } }

/* [exception] footer Privacy/Terms = 1 HÀNG NGANG (live cùng y); Elementor icon-list view:inline không render ngang ở đây */
.elementor-element-avfbr ul.elementor-icon-list-items { display: flex !important; flex-direction: row !important; gap: 32px; flex-wrap: nowrap !important; white-space: nowrap; }
.elementor-element-avfbr li.elementor-icon-list-item { margin: 0 !important; width: auto !important; }

/* [exception] AI Inspection card LaserVision-AI: ảnh giữ 500px không co (Elementor image widget flex-shrink không ăn qua control) */
@media (min-width: 1025px) {
  .elementor-element-availvimg { flex-shrink: 0 !important; flex-grow: 0 !important; width: 500px; }
}

/* [exception] AI band feature: khử khoảng trắng descender của ảnh inline (đã thử: image widget không có control line-height container). Margin image/heading = 0 đã set bằng Advanced>Margin trong widget. */
.elementor-element-avaibandfeats .elementor-widget-image .elementor-widget-container { line-height: 0; }


/* [exception] AI Process heading 1 dòng (live PROCESS IMPROVEMENT không xuống dòng) */
@media (min-width: 1025px) { .elementor-element-avaiproch { width: fit-content; } .elementor-element-avaiproch .elementor-heading-title { white-space: nowrap; } }

/* [exception] AI card LaserVision stack <1280 như live (card xl:flex-row → stack dưới 1280). Elementor tablet breakpoint mặc định 1024 không biểu diễn mốc 1280; bật custom breakpoint sẽ ảnh hưởng toàn site. */
@media (max-width: 1279px) { .elementor-element-availvcard { flex-direction: column !important; } }

/* [exception] AI STEPS scroll-stack (giống History of Innovation): mỗi step = pin sticky top:-100 + 100vh flex center, step sau trượt đè step trước. Elementor không có position:sticky, max-height, transform translateY tĩnh; margin trộn unit (%+px) không set 1 control được → CSS thuần. Reverse-engineer từ live (h-screen sticky top-[-100px] + mb-72 mt-[-10%] + card max-h-420 translateY-80).
   Dùng selector ID (không av-step-* class) vì Elementor bản này KHÔNG áp _css_classes lên container, chỉ widget. */
/* deck = 1 container chứa cả 5 pin (live: 1 wrap mb-72 mt-[-10%] bọc 5 sticky sibling, cao 5×100vh → đủ quãng stick để mỗi pin GIỮ). margin trộn unit nên để CSS. */
.elementor-element.elementor-element-avaisteps { margin-top: -10%; margin-bottom: 500px; }
@media (min-width: 1280px) { .elementor-element.elementor-element-avaisteps { margin-bottom: 288px; } }
/* [exception] Aerospace (page 80) deck chỉ 2 step (trang AI 5 step) → mb dư ~250px. Giảm riêng page 80 cho khớp gap live FOD→Digital twin (~671). */
.elementor-page-80 .elementor-element.elementor-element-avaisteps { margin-bottom: 16px; }
@media (min-width: 1280px) { .elementor-page-80 .elementor-element.elementor-element-avaisteps { margin-bottom: 0px; } }
.elementor-element.elementor-element-avaist1pin, .elementor-element.elementor-element-avaist2pin, .elementor-element.elementor-element-avaist3pin, .elementor-element.elementor-element-avaist4pin, .elementor-element.elementor-element-avaist5pin { position: sticky; top: -100px; }
.elementor-element.elementor-element-avaist1card, .elementor-element.elementor-element-avaist2card, .elementor-element.elementor-element-avaist3card, .elementor-element.elementor-element-avaist4card, .elementor-element.elementor-element-avaist5card { max-height: 440px; }
@media (min-width: 1024px) { .elementor-element.elementor-element-avaist1card, .elementor-element.elementor-element-avaist2card, .elementor-element.elementor-element-avaist3card, .elementor-element.elementor-element-avaist4card, .elementor-element.elementor-element-avaist5card { max-height: 420px; } }
/* translateY tăng dần per card (live: 80/160/240/320/400) → 5 header stack lệch 80px như deck History */
.elementor-element.elementor-element-avaist1card { transform: translateY(80px); }
.elementor-element.elementor-element-avaist2card { transform: translateY(160px); }
.elementor-element.elementor-element-avaist3card { transform: translateY(240px); }
.elementor-element.elementor-element-avaist4card { transform: translateY(320px); }
.elementor-element.elementor-element-avaist5card { transform: translateY(400px); }
.av-step-img img { max-height: 320px; width: auto; object-fit: cover; }
/* tổ tiên không được cắt sticky */
.elementor-element-avaisteps, .elementor-element-avaistepswrap { overflow: visible; }

/* [exception] AI Software product image: natural aspect, cap height như live (max-h-620, render ~377). Elementor image không có control max-height. */
.av-prod-img img { width: auto; max-height: 620px; }
/* [exception] product card max-w-600 + center dưới 1280 (live w-full max-w-[600px], chỉ bỏ cap xl:max-w-none cho full card). Elementor container không có control max-width + _css_classes không áp container → ID. Selector kép thắng margin var của Elementor. */
@media (max-width: 1279px) {
  .elementor-element.elementor-element-avaipr1, .elementor-element.elementor-element-avaipr2, .elementor-element.elementor-element-avaipr3, .elementor-element.elementor-element-avaipr4, .elementor-element.elementor-element-avaipr5, .elementor-element.elementor-element-avaipr6 { max-width: 600px; margin-left: auto; margin-right: auto; }
  /* full card (Align/SDK) content stack <1280 như live (xl:flex-row) — Elementor tablet bp 1024 không biểu diễn mốc 1280, full card content ở 1025-1279 đang là row */
  .elementor-element.elementor-element-avaipr1cr, .elementor-element.elementor-element-avaipr4cr { flex-direction: column !important; }
  .elementor-element.elementor-element-avaipr1ic, .elementor-element.elementor-element-avaipr4ic { width: 100% !important; }
}
/* [exception] AI Software product divider dọc giữa ảnh và bullets (live border-l) — chỉ desktop, ẩn khi stack <1280 (Elementor không có divider dọc tự co theo hàng) */
@media (max-width: 1279px) { .av-prod-divider { display: none !important; } }
/* [exception] mũi tên ↗ góc card (live lucide arrow-up-right) — FA version này không có fa-arrow-up-right, dùng fa-arrow-right xoay -45 (giống av-btn-diag, không có control rotate icon) */
.av-prod-arrow .elementor-icon i, .av-prod-arrow .elementor-icon svg { transform: rotate(-45deg); }

/* ===== Laser Templating ===== */
/* [exception] hardware card schema SVG overlay (live: img absolute trên bg-div device) — image widget không có position-absolute tiện */
.av-hw-imgwrap { position: relative; }
.av-hw-schema { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 2; padding: 40px; }
.av-hw-schema img { width: 100%; }

/* ===== Industries ===== */
/* [exception] industry sub-nav tab min-width 186 (md+) — button widget không có control width */
@media (min-width: 768px) { .av-indtab .elementor-button { min-width: 186px; } }
/* [exception] Aerospace product cards: width calc(50% - 20px) để 2-col khít gap 40 edge-to-edge (Elementor width % không trừ gap → co còn 588 thay vì 601). Chỉ desktop; tablet/mobile stack 100%. */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-aeropc1,
  .elementor-element.elementor-element-aeropc2 { width: calc(50% - 20px) !important; max-width: calc(50% - 20px) !important; }
}
/* [exception] LASERVISION-AI: ảnh nhân đôi toggle theo breakpoint — desktop ảnh NGOÀI card (aerolvimgd), mobile/tablet ảnh TRONG card (aerolvimwm). Ép img fill cột. */
@media (max-width: 1024px) { .elementor-element.elementor-element-aerolvimgd { display: none !important; } }
@media (min-width: 1025px) { .elementor-element.elementor-element-aerolvimwm { display: none !important; } }
.elementor-element-aerolvimgd img, .elementor-element-aerolvimwm img { width: 100% !important; }
/* LASERVISION-AI nút: full text desktop/tablet, "Download" ngắn ở mobile (live đổi text theo breakpoint) */
@media (max-width: 767px) { .elementor-element.elementor-element-aerolvbtn { display: none !important; } }
@media (min-width: 768px) { .elementor-element.elementor-element-aerolvbtnm { display: none !important; } }
/* [exception] Aerospace We-changed: text col cố định (527/632), image col fill phần còn lại + min-width:0 (flex image min-width auto ép text co). _css_classes/_flex không áp container → CSS ID. Chỉ desktop (≥1025); tablet/mobile stack. */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-aerowca1t { flex: 0 0 527px !important; max-width: 527px !important; }
  .elementor-element.elementor-element-aerowca2t { flex: 0 0 632px !important; max-width: 632px !important; }
  .elementor-element.elementor-element-aerowca1imgc, .elementor-element.elementor-element-aerowca2imgc { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-aerowca1imgc img, .elementor-element-aerowca2imgc img { width: 100%; }
/* tablet/mobile (stack): image col + widget ảnh full-width (Elementor image widget content-width, không scale up) */
@media (max-width: 1024px) {
  .elementor-element.elementor-element-aerowca1imgc, .elementor-element.elementor-element-aerowca2imgc { width: 100% !important; }
  .elementor-element-aerowca1img, .elementor-element-aerowca2img { width: 100% !important; }
  .elementor-element-aerowca1img img, .elementor-element-aerowca2img img { width: 100% !important; }
}
/* [exception] Aerospace composite Layup (#8 aerocl2) + Digital twin (#17 aerodt2) 2col: live giữ ROW ở tablet (sm:flex-row), chỉ stack <768. aero_2col đặt flex_direction_tablet=column (sai) + container _flex_grow không áp → ép theo element-ID. Không đụng ai-inspection. */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-aerocl2t { flex: 0 0 528px !important; width: 528px !important; max-width: 528px !important; }
  .elementor-element.elementor-element-aerodt2t { flex: 0 0 580px !important; width: 580px !important; max-width: 580px !important; }
  .elementor-element.elementor-element-aerocl2img,
  .elementor-element.elementor-element-aerodt2img { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element-aerocl2img img,
  .elementor-element-aerodt2img img { width: 100%; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor-element.elementor-element-aerocl2,
  .elementor-element.elementor-element-aerodt2 { flex-direction: row !important; }
  .elementor-element.elementor-element-aerocl2t,
  .elementor-element.elementor-element-aerodt2t { flex: 1 1 0 !important; width: auto !important; max-width: none !important; }
  .elementor-element.elementor-element-aerocl2img,
  .elementor-element.elementor-element-aerodt2img { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element-aerocl2img img,
  .elementor-element-aerodt2img img { width: 100% !important; }
}
/* [exception] AI-inspection 2col (aeroai2): tỉ lệ KHÁC digital twin. Desktop text 600 / ảnh fill ~545; tablet ROW text fill + ảnh nhỏ 241 phải; mobile stack ảnh full. */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-aeroai2t { flex: 0 0 600px !important; width: 600px !important; max-width: 600px !important; }
  .elementor-element.elementor-element-aeroai2img { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element-aeroai2img img { width: 100%; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor-element.elementor-element-aeroai2 { flex-direction: row !important; }
  .elementor-element.elementor-element-aeroai2t { flex: 1 1 0 !important; width: auto !important; max-width: none !important; }
  .elementor-element.elementor-element-aeroai2img { flex: 0 0 241px !important; }
  .elementor-element-aeroai2img img { width: 100% !important; }
}
/* ===== Welding (page 92) ===== */
/* [exception] 2col: image col fixed (đúng width live) + text fill; chỉ desktop. tablet/mobile stack. */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-wldchic { flex: 0 0 517px !important; }
  .elementor-element.elementor-element-wldcht { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-wldaiic { flex: 0 0 517px !important; }
  .elementor-element.elementor-element-wldait { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-wldadvic { flex: 0 0 617px !important; }
  .elementor-element.elementor-element-wldadvt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-wldtric { flex: 0 0 513px !important; }
  .elementor-element.elementor-element-wldtrt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-wldlpl { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-wldlpr { flex: 0 0 497px !important; }
}
.elementor-element-wldchic img, .elementor-element-wldaiic img, .elementor-element-wldadvic img, .elementor-element-wldtric img, .elementor-element-wldlpr img { width: 100%; }
/* deck mb cho welding page 92 (2 step như aerospace) */
.elementor-page-92 .elementor-element.elementor-element-avaisteps { margin-bottom: 60px; }
@media (min-width: 1280px) { .elementor-page-92 .elementor-element.elementor-element-avaisteps { margin-bottom: 40px; } }
/* ===== Marine (page 103) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-martrt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-martric { flex: 0 0 432px !important; }
  .elementor-element.elementor-element-marpc1,
  .elementor-element.elementor-element-marpc2,
  .elementor-element.elementor-element-marpc3 { width: calc(33.333% - 27px) !important; max-width: calc(33.333% - 27px) !important; }
}
.elementor-element-martric img { width: 100%; }
/* Advantages text TRẮNG (overlay trên bg submarine) — giữ dấu + xanh (icon_color) + gạch xanh heading */
.elementor-element-marpadvh .elementor-heading-title { color: #FFFFFF !important; }
.elementor-element-marpadvbul .elementor-icon-list-text { color: #FFFFFF !important; }
.elementor-page-103 .elementor-element.elementor-element-avaisteps { margin-bottom: 16px; }
@media (min-width: 1280px) { .elementor-page-103 .elementor-element.elementor-element-avaisteps { margin-bottom: 16px; } }
/* ===== Wind (page 108) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-windintro1, .elementor-element.elementor-element-windintro2 { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-windinspt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-windinspic { flex: 0 0 548px !important; }
  .elementor-element.elementor-element-windpc1, .elementor-element.elementor-element-windpc2 { width: 33% !important; max-width: 33% !important; }
}
.elementor-element-windinspic img { width: 100%; }
.elementor-page-108 .elementor-element.elementor-element-avaisteps { margin-bottom: 16px; }
@media (min-width: 1280px) { .elementor-page-108 .elementor-element.elementor-element-avaisteps { margin-bottom: 16px; } }
/* ===== Kitting (page 112) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-kitft { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-kitfic { flex: 0 0 545px !important; }
}
.elementor-element-kitfic img { width: 100%; }
/* ===== Other (page 115) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-othf1t { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-othf1ic { flex: 0 0 555px !important; }
  .elementor-element.elementor-element-othrect { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-othrecic { flex: 0 0 608px !important; }
}
.elementor-element-othf1ic img, .elementor-element-othrecic img { width: 100%; }
/* ===== LaserVision-AI product (page 119) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-lvadvt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-lvadvic { flex: 0 0 610px !important; }
  .elementor-element.elementor-element-lvschem { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-lvspectable { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-lvadvic img { width: 100%; }
/* product sub-nav: 9 tab → KHÔNG min-width 186 như industry */
@media (min-width: 768px) { .elementor-element-avprodnav .av-indtab .elementor-button { min-width: 0 !important; } }
/* ===== LaserGuide product (page 129) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-lgadvt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-lgadvic { flex: 0 0 610px !important; }
  .elementor-element.elementor-element-lgschem { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-lgspectable { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-lgadvic img { width: 100%; }
/* ===== microLaserGuide product (page 137) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-mlgssic { flex: 0 0 524px !important; }
  .elementor-element.elementor-element-mlgsst { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-mlgspectable { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-mlgschem { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-mlgaaic { flex: 0 0 440px !important; }
  .elementor-element.elementor-element-mlgaait { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-mlgssic img { width: 100%; }
/* ===== Align 4.0 product (page 143) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-a4herot { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-a4heroic { flex: 0 0 527px !important; }
  .elementor-element.elementor-element-a4capic { flex: 0 0 573px !important; }
  .elementor-element.elementor-element-a4capt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-a4techic { flex: 0 0 545px !important; }
  .elementor-element.elementor-element-a4techt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-a4c1t, .elementor-element.elementor-element-a4c1ic,
  .elementor-element.elementor-element-a4c2t, .elementor-element.elementor-element-a4c2ic { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-a4heroic img, .elementor-element-a4capic img, .elementor-element-a4techic img { width: 100%; }
/* ===== LaserPath product (page 151) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-lpadvt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-lpadvic { flex: 0 0 610px !important; }
}
.elementor-element-lpadvic img { width: 100%; }
/* ===== BuildGuide product (page 154) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-bgimpt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-bgimpic { flex: 0 0 572px !important; }
  .elementor-element.elementor-element-bgfeatt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-bgfeatic { flex: 0 0 523px !important; }
  .elementor-element.elementor-element-bgputt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-bgputic { flex: 0 0 528px !important; }
  .elementor-element.elementor-element-bgblkt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-bgblkic { flex: 0 0 545px !important; }
}
.elementor-element-bgimpic img, .elementor-element-bgfeatic img, .elementor-element-bgputic img, .elementor-element-bgblkic img { width: 100%; }
/* ===== KitGuide product (page 160) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-kgft { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-kgfic { flex: 0 0 545px !important; }
}
.elementor-element-kgfic img { width: 100%; }
/* ===== SDK product (page 164) ===== */
@media (min-width: 1025px) {
  .elementor-element.elementor-element-skimpt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-skimpic { flex: 0 0 554px !important; }
  .elementor-element.elementor-element-skeasyt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-skeasyic { flex: 0 0 545px !important; }
}
.elementor-element-skimpic img, .elementor-element-skeasyic img { width: 100%; }

/* === Accessories (page 165): card image col fixed, items col fill === */
@media (min-width:1025px){
  .elementor-element.elementor-element-acctgic,
  .elementor-element.elementor-element-accaaic,
  .elementor-element.elementor-element-accstic,
  .elementor-element.elementor-element-acctric { flex: 0 0 600px !important; }
  .elementor-element.elementor-element-acctgit,
  .elementor-element.elementor-element-accaait,
  .elementor-element.elementor-element-accstit,
  .elementor-element.elementor-element-acctrit { flex: 1 1 0 !important; min-width: 0 !important; }
}
@media (max-width:1024px){
  .elementor-element-acctgit,.elementor-element-accaait,
  .elementor-element-accstit,.elementor-element-acctrit { border-left: 0 !important; }
}

/* === Contact popup form (170): match live — 5 fields left, country+tall message right, underline inputs === */
.elementor-element-avcform .elementor-form-fields-wrapper{
  display:grid; grid-template-columns:1fr 1fr; column-gap:40px; row-gap:18px;
}
.elementor-element-avcform .elementor-field-group{ width:100% !important; margin:0 !important; }
.elementor-element-avcform .elementor-field-group-name{ grid-column:1; grid-row:1; }
.elementor-element-avcform .elementor-field-group-company{ grid-column:1; grid-row:2; }
.elementor-element-avcform .elementor-field-group-jobtitle{ grid-column:1; grid-row:3; }
.elementor-element-avcform .elementor-field-group-email{ grid-column:1; grid-row:4; }
.elementor-element-avcform .elementor-field-group-phone{ grid-column:1; grid-row:5; }
.elementor-element-avcform .elementor-field-group-country{ grid-column:2; grid-row:1; }
.elementor-element-avcform .elementor-field-group-message{ grid-column:2; grid-row:2 / span 4; display:flex; flex-direction:column; flex-wrap:nowrap; }
.elementor-element-avcform .e-form__buttons,
.elementor-element-avcform .elementor-field-type-submit{ grid-column:1 / -1; grid-row:6; margin-top:6px; }
/* underline-style text/email/tel/select */
.elementor-element-avcform input.elementor-field,
.elementor-element-avcform .elementor-field-group select{
  border:0; border-bottom:1px solid #C9C9C9; border-radius:0; background:transparent; padding:6px 0; box-shadow:none;
}
.elementor-element-avcform .elementor-field-group select{ padding-right:18px; height:auto; }
/* boxed tall message */
.elementor-element-avcform .elementor-field-group-message > label{ width:100%; }
.elementor-element-avcform textarea.elementor-field{
  flex:1; width:100%; min-height:248px; border:1px solid #C9C9C9; border-radius:4px; padding:12px; resize:none;
}
/* labels */
.elementor-element-avcform .elementor-field-group > label{
  color:#7A7A7A; font-size:13px; letter-spacing:.05em; text-transform:uppercase; font-weight:500; margin-bottom:8px;
}
/* submit: black full-width, diagonal arrow */
.elementor-element-avcform .e-form__buttons,
.elementor-element-avcform .elementor-field-type-submit .elementor-field-group{ width:100%; }
.elementor-element-avcform .elementor-button{ width:100%; background:#0A0A0A; color:#fff; justify-content:center; padding:16px; border-radius:4px; }
.elementor-element-avcform .elementor-button:hover{ background:#2A2A2A; }
.elementor-element-avcform .elementor-button .elementor-button-icon{ transform:rotate(-45deg); margin-left:10px; }
@media (max-width:767px){
  .elementor-element-avcform .elementor-form-fields-wrapper{ grid-template-columns:1fr; }
  .elementor-element-avcform .elementor-field-group{ grid-column:1 !important; grid-row:auto !important; }
  .elementor-element-avcform textarea.elementor-field{ min-height:140px; }
}

/* (green connector line for specs sections deferred per Sang — to add later across product pages) */

/* === LaserGuide quote: image col fixed, text fill === */
@media (min-width:1025px){
  .elementor-element.elementor-element-lgqic { flex: 0 0 610px !important; }
  .elementor-element.elementor-element-lgqt { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-lgqic img { width: 100%; }

/* === Align 4.0 QA round2: intro 2col + tech card columns === */
@media (min-width:1025px){
  .elementor-element.elementor-element-a4introt { flex: 1 1 0 !important; min-width: 0 !important; }
  .elementor-element.elementor-element-a4introic { flex: 0 0 520px !important; }
  .elementor-element.elementor-element-a4techl { flex: 0 0 480px !important; }
  .elementor-element.elementor-element-a4techr { flex: 1 1 0 !important; min-width: 0 !important; }
}
.elementor-element-a4introic img, .elementor-element-a4techl img { width: 100%; }

/* === LaserVision specs: green connector overlay (device glow -> diagonal -> dot on specs card) === */
.elementor-element-lvspecs{ position:relative; }
@media (min-width:1025px){
  .av-specsconn{ position:absolute !important; inset:0; width:100% !important; height:100% !important; margin:0 !important; padding:0 !important; pointer-events:none; z-index:5; }
}
@media (max-width:1024px){ .av-specsconn{ display:none !important; } }
.elementor-element-lgspecs{ position:relative; }

/* === Team page: 3-col member grid === */
@media (min-width:1025px){ .elementor-element-tmgrid > .e-con{ flex:0 0 calc((100% - 80px)/3) !important; max-width:calc((100% - 80px)/3); } }
@media (min-width:768px) and (max-width:1024px){ .elementor-element-tmgrid > .e-con{ flex:0 0 calc((100% - 40px)/2) !important; max-width:calc((100% - 40px)/2); } }
@media (max-width:767px){ .elementor-element-tmgrid > .e-con{ flex:0 0 100% !important; } }

/* === Footer tablet (<=1024) overflow fix: wrap columns + stack bottom bar === */
@media (max-width:1024px){
  .elementor-element-avfrow{ flex-wrap:wrap !important; row-gap:32px; }
  .elementor-element-avfbot{ flex-direction:column !important; align-items:flex-start !important; row-gap:16px; }
}

/* === CTA "Contact us for the perfect solution" stack at tablet (<=1024) so button doesn't overflow === */
@media (max-width:1024px){
  .elementor-element-avaicta{ flex-direction:column !important; align-items:flex-start !important; row-gap:24px; }
  .elementor-element-avaictah{ width:100% !important; max-width:100% !important; }
}
