/* SAMTECH × Elementor bridge.
   Maps theme design tokens onto Elementor containers and widgets.
   Classes are set in Elementor → Advanced → CSS Classes. Values changed in the Elementor panel override these. */

/* ---------- Base resets ---------- */
.elementor .e-con{--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;--widgets-spacing:0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px}
.elementor h1.elementor-heading-title{line-height:1.15}
.elementor h2.elementor-heading-title{line-height:1.2}
.elementor h3.elementor-heading-title{line-height:1.25}
.elementor h4.elementor-heading-title{line-height:1.3}
.elementor .elementor-heading-title{color:var(--text);font-family:var(--font-head)}
.elementor h1.elementor-heading-title{line-height:1.02}
.elementor h2.elementor-heading-title{line-height:1.08}
.elementor .elementor-widget-text-editor{color:inherit}
.elementor .elementor-widget-text-editor p:not(:last-child){margin-bottom:var(--s4)}
.elementor .elementor-widget-text-editor ul{margin:0}
/* Reading width of a page's text (legal pages): about 70 characters a line. Outranks Elementor 4's
   .elementor.elementor .e-con>.elementor-widget{max-width:100%}, which had the lines run to 95 characters. */
.elementor.elementor .elementor-widget.elementor-widget-text-editor.st-entry{max-width:36em}
.st-entry :is(h2,h3,h4){font-family:var(--font-head);font-weight:600;letter-spacing:-.02em;line-height:1.2;margin:var(--s7) 0 var(--s3)}
.st-entry h2{font-size:clamp(22px,2vw,28px)}.st-entry h3{font-size:clamp(19px,1.6vw,22px)}.st-entry h4{font-size:18px}
.st-entry :is(h2,h3,h4):first-child{margin-top:0}
.elementor .st-entry :is(ul,ol){margin:0 0 var(--s4);padding-left:1.25em}.st-entry li+li{margin-top:var(--s2)}
.st-entry a{color:var(--primary-text)}
.st-entry strong{color:var(--text);font-weight:600}
.st-entry li>a:not([class]){padding-block:12px} /* "Email: …" / "Phone: …" lines: a 44px tall tap area, the line itself unchanged */
.st-entry [id]{scroll-margin-top:88px}
/* Tables in a page's text (the Privacy Policy): the look of tables in blog posts. On phones they fit the screen; a wider
   one scrolls sideways inside its box, with an edge that fades where it continues (theme.js names that box for screen
   readers and makes it reachable by keyboard). */
.st-entry .st-table{overflow-x:auto;margin:var(--s5) 0;
  background:linear-gradient(to right,var(--bg) 30%,transparent) left/40px 100% no-repeat local,linear-gradient(to left,var(--bg) 30%,transparent) right/40px 100% no-repeat local,
  radial-gradient(farthest-side at 0 50%,rgba(255,255,255,.22),transparent) left/14px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgba(255,255,255,.22),transparent) right/14px 100% no-repeat scroll}
.st-entry .st-table:focus-visible{outline:2px solid var(--focus);outline-offset:4px}
.st-entry table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5}
.st-entry :is(th,td){text-align:left;vertical-align:top;padding:10px 14px 10px 0;border:0;border-bottom:1px solid var(--border)}
.st-entry :is(th,td):last-child{padding-right:0}
.st-entry thead th{font-weight:600;color:var(--text);vertical-align:bottom;border-bottom:1px solid var(--border-strong)}
.st-entry tbody th{font-weight:500;color:var(--text)}
@media(max-width:600px){.st-entry table{font-size:14px}.st-entry :is(th,td){padding-right:10px}}
@media(max-width:359px){.st-entry table{font-size:13px}.st-entry :is(th,td){padding-right:8px}} /* 3 columns fit a 320px phone */
.elementor-editor-active .reveal,.elementor-editor-preview .reveal{opacity:1!important;transform:none!important}
.elementor .elementor-widget-shortcode{width:100%}

/* ---------- Sections ---------- */
.e-con.st-sec{--padding-top:var(--section);--padding-bottom:var(--section);--padding-left:var(--gutter);--padding-right:var(--gutter);--content-width:calc(var(--container) - 2 * var(--gutter))}
.e-con.st-sec--alt{background-color:var(--bg)}
.e-con.st-sec--flush{--padding-top:0px}
.e-con.st-sec--narrow{--content-width:calc(960px - 2 * var(--gutter))}
.e-con.st-raw{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px}
.e-con.st-raw>.elementor-widget,.e-con.st-raw>.e-con-inner>.elementor-widget{width:100%}

/* ---------- Text helpers (on widgets) ---------- */
.st-h4 .elementor-heading-title{font:600 clamp(18px,.4vw + 1rem,20px)/1.3 var(--font-head);letter-spacing:0}
.st-card-title .elementor-heading-title{font:600 clamp(20px,.6vw + 1rem,24px)/1.25 var(--font-head);letter-spacing:-.01em}
.st-card-title--sm .elementor-heading-title{font-size:19px}
.st-step-t .elementor-heading-title{font:600 22px/1.25 var(--font-head);letter-spacing:0}
.st-violet .elementor-heading-title,.st-violet{color:var(--violet-strong)}
.st-maxw-1000{max-width:1000px}
.st-maxw-760{max-width:760px}

/* ---------- Buttons ---------- */
.elementor .elementor-widget-button[class*="st-btn"] .elementor-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:48px;padding:13px var(--s5);border-radius:var(--r-sm);font:600 16px/1.2 var(--font-body);text-decoration:none;border:1px solid transparent;transition:background .2s,color .2s,border-color .2s,transform .2s;fill:currentColor}
.st-btn--primary .elementor-button{background:var(--primary);color:#fff;border-color:var(--primary)!important}
.st-btn--primary .elementor-button:hover,.st-btn--primary .elementor-button:focus{background:var(--primary-hover);border-color:var(--primary-hover)!important;color:#fff}
.st-btn--secondary .elementor-button{background:transparent;color:var(--text);border-color:var(--border-strong)!important}
.st-btn--secondary .elementor-button:hover,.st-btn--secondary .elementor-button:focus{background:var(--text);color:var(--bg)}
.st-btn--light .elementor-button{background:var(--text);color:var(--bg)}
.st-btn--light .elementor-button:hover,.st-btn--light .elementor-button:focus{background:var(--ink);color:#fff}
.elementor .st-btn--sm .elementor-button{min-height:44px;padding:12px var(--s5);font-size:15px}
.st-btn--wa .elementor-button-text{display:inline-flex;align-items:center;gap:var(--s2)}
.st-btn--wa .elementor-button-text::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--wa);flex:none}
.st-btn--full .elementor-button{width:100%}

/* ---------- Rows of buttons / inline items ---------- */
.e-con.st-row{--flex-direction:row;--flex-wrap:wrap;--align-items:center;--gap:var(--s3);--row-gap:var(--s3);--column-gap:var(--s3)}
.e-con.st-row>.elementor-widget,.e-con.st-row>.e-con-inner>.elementor-widget{width:auto;flex:0 0 auto}

/* ---------- Cards ---------- */
.e-con.card{--padding-top:var(--s5);--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--border-radius:0px;--gap:var(--s3);--row-gap:var(--s3);--column-gap:var(--s3);height:100%;color:inherit;text-decoration:none;background:transparent;border:0;border-top:1px solid var(--border-strong)}
a.e-con.card:hover{color:inherit}
.e-con.card--violet .elementor-heading-title{color:var(--violet-strong)}
.e-con.card--violet,.e-con.card--pad-lg{--padding-top:clamp(28px,4vw,48px);--padding-bottom:clamp(28px,4vw,48px);--padding-left:clamp(28px,4vw,48px);--padding-right:clamp(28px,4vw,48px)}
.e-con.card--violet{background:var(--violet-bg);border-top:3px solid var(--accent-line)}
.e-con.card--pad-md{--padding-top:clamp(24px,3vw,40px);--padding-bottom:0px;--padding-left:0px;--padding-right:0px}
.e-con.card--media{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--gap:0px;--row-gap:0px;border-top:0}
.e-con.card__body{--padding-top:var(--s5);--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--gap:var(--s3);--row-gap:var(--s3);--flex-grow:1}
.e-con.card--center{--justify-content:flex-start;--align-items:flex-start;min-height:0;text-align:left}
.e-con.card--center strong{font:600 18px/1.3 var(--font-head);letter-spacing:-.01em}
.e-con.card>.st-grow,.e-con.card__body>.st-grow{flex-grow:1}
.e-con.card>.st-cta,.e-con.card__body>.st-cta{margin-top:auto}
.st-cta .card__cta{display:block;padding-top:var(--s5)}
.card--media .st-img img{border-radius:0}
a.e-con.card:hover{box-shadow:inset 0 3px 0 var(--accent-line)}
a.e-con.card:hover .elementor-heading-title,a.e-con.card:hover strong{color:var(--accent-text)}
a.e-con.card--media:hover{box-shadow:none}

/* ---------- Steps, process lists, label rows ---------- */
.e-con.step{--padding-top:var(--s5);--gap:var(--s2);--row-gap:var(--s2);border-top:1px solid var(--border-strong)}
.e-con.st-proc{--padding-top:var(--s5);--padding-bottom:var(--s5);--gap:var(--s4);--column-gap:var(--s4);border-top:1px solid var(--border)}
.e-con.st-proc .eyebrow{margin:0;color:var(--accent-text);font-variant-numeric:tabular-nums}
.e-con.label-row{--padding-top:var(--s6);--padding-bottom:var(--s6);border-top:1px solid var(--border)}
.e-con.st-line{--padding-top:var(--s4);--padding-bottom:var(--s4);border-top:1px solid var(--border)}
.e-con.st-line--dark{border-color:var(--border-2)}
.e-con.st-line--first{border-top:0}

/* ---------- Band ---------- */
.e-con.band{--bg:var(--ink);--text:#fff;--text-2:#EEE9FF;--muted:#DCD2FF;--border:rgba(255,255,255,.3);--border-strong:#fff;--accent-text:#fff;--accent-line:#fff;--accent-hover:#EEE9FC;--focus:#fff;--padding-top:clamp(32px,5vw,64px);--padding-bottom:clamp(32px,5vw,64px);--padding-left:clamp(32px,5vw,64px);--padding-right:clamp(32px,5vw,64px);--border-radius:0px;--flex-direction:row;--flex-wrap:wrap;--justify-content:space-between;--align-items:center;--gap:var(--s6);--row-gap:var(--s6);--column-gap:var(--s6);background:var(--ink);color:#fff}
.e-con.band .elementor-widget-text-editor p{font:600 clamp(22px,2.2vw,32px)/1.18 var(--font-head);letter-spacing:-.022em;color:#fff}
.e-con.band .st-btn--primary .elementor-button,.e-con.band .st-btn--light .elementor-button{background:#fff;color:var(--ink);border-color:#fff!important}
.e-con.band>.elementor-widget-text-editor{flex:1 1 420px;max-width:760px}

/* ---------- Images ---------- */
.st-img{width:100%}
.st-img img{display:block;width:100%;height:auto;aspect-ratio:var(--ratio,4/3);object-fit:cover;border-radius:0;border:1px solid var(--border);background:var(--paper)}
.st-r-4-3{--ratio:4/3}.st-r-3-4{--ratio:3/4}.st-r-5-6{--ratio:5/6}.st-r-5-4{--ratio:5/4}.st-r-4-5{--ratio:4/5}.st-r-16-10{--ratio:16/10}.st-r-1-1{--ratio:1/1}

/* ---------- Hero media with floating chips ---------- */
.e-con.tiltwrap{position:relative}
.e-con .elementor-widget.float-chip{position:absolute;width:auto;max-width:260px;z-index:2;background:var(--sheet);border:1px solid var(--border-strong);padding:var(--s3) var(--s4)}
.e-con .elementor-widget.float-chip .eyebrow{font-size:13px;margin-bottom:2px}
.float-chip .eyebrow{margin-bottom:var(--s1)}

/* ---------- Drag carousel ---------- */
.e-con.carousel{--flex-direction:row;--flex-wrap:nowrap;--gap:var(--s4);--column-gap:var(--s4);--padding-top:4px;--padding-bottom:var(--s3);--padding-left:2px;--padding-right:2px;overflow-x:auto}
.e-con.carousel.carousel>.e-con{--flex-basis:clamp(240px,28vw,320px);--flex-grow:0;--flex-shrink:0;--width:auto;scroll-snap-align:start;min-height:0}
.e-con.carousel{--gap:var(--s6);--column-gap:var(--s6);scrollbar-width:thin}

/* ---------- Service stack ---------- */
.e-con.svc-stack{--gap:0px;--row-gap:0px;border-bottom:1px solid var(--border-strong)}
.e-con.svc-card{--padding-top:var(--s6);--padding-bottom:var(--s6);--padding-left:0px;--padding-right:0px;--border-radius:0px;--row-gap:var(--s5);--column-gap:var(--s7);background:transparent;border:0;border-top:1px solid var(--border-strong);box-shadow:none}
.st-i-0{--i:0}.st-i-1{--i:1}.st-i-2{--i:2}.st-i-3{--i:3}.st-i-4{--i:4}.st-i-5{--i:5}.st-i-6{--i:6}.st-i-7{--i:7}.st-i-8{--i:8}.st-i-9{--i:9}

.e-con.st-col-between{--justify-content:space-between;--gap:var(--s5);--row-gap:var(--s5)}
.st-num-line{display:flex;align-items:baseline;gap:var(--s2)}
.st-num-line .num{font-size:20px;letter-spacing:0;color:var(--accent-text)}
.st-num-line .eyebrow{font-size:14px}

/* ---------- Check lists ---------- */
.st-checks ul,ul.st-checks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s4)}
.st-checks li{display:flex;gap:var(--s3);align-items:baseline}
.st-checks li::before{content:"";flex:none;width:10px;height:10px;border:2px solid var(--accent-line);border-radius:50%;transform:translateY(-1px)}

/* ---------- FAQ (Elementor nested accordion) ---------- */
.st-faq .e-n-accordion{border-bottom:1px solid var(--border)}
.st-faq .e-n-accordion-item{border-top:1px solid var(--border)}
.st-faq .e-n-accordion-item-title{padding:var(--s5) 0!important;border:0!important;background:transparent!important;min-height:44px;justify-content:space-between!important;gap:var(--s5)}
.st-faq .e-n-accordion-item-title-text{font:600 clamp(18px,.4vw + 1rem,20px)/1.35 var(--font-head)!important;color:var(--text)!important}
.st-faq .e-n-accordion-item-title-icon{color:var(--accent-text)!important;fill:var(--accent-text)!important;font-size:18px}
.st-faq .e-n-accordion-item-title-icon svg{fill:var(--primary-text)}
.st-faq .e-n-accordion-item>.e-con{--padding-top:0px;--padding-bottom:var(--s5);--padding-left:0px;--padding-right:0px;border:0!important;color:var(--text-2);max-width:760px}

/* ---------- Misc ---------- */
.elementor .dot{display:inline-block;font-size:0;line-height:0}
.st-h3 .elementor-heading-title{font-weight:600;font-size:clamp(20px,.8vw + 1rem,28px);line-height:1.25;letter-spacing:-.01em}
.st-quote p{font-size:clamp(19px,1.6vw,24px);line-height:1.5}
.e-con.st-gyro-sm{--width:clamp(150px,20vw,230px)}
.card--violet .st-quote p{color:var(--violet-strong)}

/* Side-by-side rows: child blocks size to content instead of 100% width */
.e-con.st-flexrow>.e-con{--width:auto;--flex-grow:0;--flex-shrink:1;--flex-basis:auto;max-width:100%}
.e-con.st-flexrow>.elementor-widget{width:auto;max-width:100%}
.e-con.band.st-flexrow>.elementor-widget-text-editor{flex:1 1 420px}
.st-faq .e-n-accordion-item-title-header{flex:1 1 auto;order:1;justify-content:flex-start;text-align:left}
.st-faq .e-n-accordion-item-title-icon{order:2;flex:none;width:18px;height:18px}
.st-faq .e-n-accordion-item-title-icon svg{width:16px;height:16px}
.st-faq .e-n-accordion-item-title-text{margin:0}
.st-faq .e-n-accordion-item-title{justify-content:space-between!important;flex-direction:row!important}
.st-faq .e-n-accordion-item-title-header{order:1!important;flex:1 1 auto!important}
.st-faq .e-n-accordion-item-title-icon{order:2!important;margin-left:auto}
.st-faq .e-n-accordion-item-title-icon svg,.st-faq .e-n-accordion-item-title-icon span{fill:var(--primary-text)!important;color:var(--primary-text)!important}

/* ---------- Number strip (native widgets) ---------- */
.e-con.stat-strip{--border-radius:0px;--gap:0px;--row-gap:0px;--column-gap:0px;border:0;border-top:1px solid var(--border-strong);border-bottom:1px solid var(--border);background:transparent}
.e-con.stat-strip>.e-con.st-stat+.e-con.st-stat{border-left:1px solid var(--border)}
@media(max-width:1023px){.e-con.stat-strip>.e-con.st-stat:nth-child(odd){border-left:0}.e-con.stat-strip>.e-con.st-stat:nth-child(-n+2){border-bottom:1px solid var(--border)}}
.e-con.stat-strip>.e-con.st-stat{--padding-top:clamp(20px,2.4vw,32px);--padding-bottom:clamp(20px,2.4vw,32px);--padding-left:clamp(16px,2vw,24px);--padding-right:clamp(16px,2vw,24px);--gap:var(--s2);--row-gap:var(--s2)}
.st-stat-num .elementor-heading-title{font:600 clamp(44px,4.4vw,68px)/1 var(--font-head);letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--text)}
.e-con.st-stat .elementor-widget-text-editor{color:var(--muted)}

/* ---------- Native replacements for former shortcodes ---------- */
.e-con[hidden]{display:none!important}
.e-con.st-gyro{--width:100%;min-height:0;justify-content:center;align-items:center}
.st-gyro-sm .e-con.st-gyro,.e-con.st-gyro-sm .st-gyro{min-height:0}
.elementor-editor-active .st-marquee p{padding:var(--s5) 0;border-block:1px dashed var(--border);color:var(--muted);font:600 18px/1.4 var(--font-head)}
.elementor-editor-active .st-case-filter p{color:var(--muted);font-size:14px}
.e-con.st-case-filter{--gap:var(--s3);--row-gap:var(--s3);--column-gap:var(--s3);min-height:44px}
/* the note in the filter row is for editors; visitors see the chips the bridge builds in its place */
body:not(.elementor-editor-active) .st-case-filter:not([data-filter]) p{visibility:hidden}
.st-maxw-900{max-width:900px}
.e-con.card--flush{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--gap:0px;--row-gap:0px;border-top:1px solid var(--border-strong)}
.e-con.st-contact-row{--padding-top:var(--s4);--padding-bottom:var(--s4);--padding-left:0px;--padding-right:0px;border-top:0;border-bottom:1px solid var(--border)}
.st-contact-row .eyebrow{font-size:14px}
.st-map iframe{display:block;width:100%;border:0}
.e-con.st-wa-card{--flex-direction:column;--padding-left:64px;--padding-top:var(--s5);--padding-bottom:0px;position:relative;min-height:88px;justify-content:center}
.e-con.st-wa-card::after{content:"";position:absolute;left:0;top:calc(50% + 12px);width:44px;height:44px;margin-top:-22px;border-radius:50%;background:var(--wa) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2Zm5.3 14.1c-.2.6-1.3 1.2-1.8 1.3-.5 0-1 .2-3.3-.7-2.8-1.1-4.5-4-4.7-4.2-.1-.2-1.1-1.5-1.1-2.9s.7-2.1 1-2.4c.3-.3.6-.3.8-.3h.6c.2 0 .4 0 .6.5l.9 2.1c.1.2.1.4 0 .6l-.4.6-.4.4c-.1.2-.3.3-.1.6.2.3.8 1.3 1.7 2.1 1.2 1 2.1 1.3 2.4 1.5.3.1.5.1.6-.1l.9-1c.2-.3.4-.2.6-.1l2 1c.3.1.5.2.5.3.1.1.1.6-.1 1.2Z'/%3E%3C/svg%3E") center/26px no-repeat}
.st-case-list .card__body .metric{margin-top:var(--s2)}
