/* ==========================================================================
   TraINsolutions — CSS del tema hijo
   Solo contiene las "islas" del diseño que no se construyen con widgets de
   Elementor. Cada bloque va prefijado con .ts-* y se documenta a qué
   sección/widget aplica. Los tokens globales y utilidades compartidas viven
   en el Custom CSS del Kit de Elementor (tools/kit-custom.css).
   Referencia: web_static/assets/css/*.css (valores computados finales).
   ========================================================================== */

/* --------------------------------------------------------------------------
   Fuentes locales (RGPD: sin llamadas a fonts.googleapis.com).
   Se registran en Elementor con el filtro elementor/fonts/additional_fonts
   (functions.php) para que aparezcan en el selector de tipografía del Kit.
   -------------------------------------------------------------------------- */
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/inter-v20-latin_latin-ext-regular.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/inter-v20-latin_latin-ext-500.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/inter-v20-latin_latin-ext-600.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/inter-v20-latin_latin-ext-700.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:800;font-display:swap;src:url("../fonts/inter-v20-latin_latin-ext-800.woff2") format("woff2")}
@font-face{font-family:"Playfair Display";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/playfair-display-v40-latin_latin-ext-regular.woff2") format("woff2")}
@font-face{font-family:"Playfair Display";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/playfair-display-v40-latin_latin-ext-500.woff2") format("woff2")}
@font-face{font-family:"Playfair Display";font-style:italic;font-weight:500;font-display:swap;src:url("../fonts/playfair-display-v40-latin_latin-ext-500italic.woff2") format("woff2")}
@font-face{font-family:"Playfair Display";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/playfair-display-v40-latin_latin-ext-600.woff2") format("woff2")}
@font-face{font-family:"Playfair Display";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/playfair-display-v40-latin_latin-ext-700.woff2") format("woff2")}

:root{--teal:#0e5a6f;--teal-dark:#083d4c;--navy:#0a2a3b;--navy-2:#0f4055;--gold:#d5ad5c;--gold-dark:#8f6b21;--ivory:#f7f5f0;--ink:#101820;--muted:#5a6b75;--line:#e0ded6;--font-display:"Playfair Display","Iowan Old Style","Baskerville","Times New Roman",serif;--font-sans:"Inter","Avenir Next","Segoe UI",Arial,sans-serif}
body{font-family:var(--font-sans)}
h1,h2,h3,h4,h5,h6{font-family:var(--font-display)}

/* Eyebrow "escala ×3" del estático (hero, section-heading, digital, approche, institute, cta) */
.elementor-widget-heading.ts-eyebrow.lg .elementor-heading-title{font-size:clamp(26px,2.35vw,32px);line-height:1.12;letter-spacing:2px;margin-bottom:30px;font-weight:700}
@media(max-width:620px){.elementor-widget-heading.ts-eyebrow.lg .elementor-heading-title{font-size:24px;line-height:1.16;letter-spacing:1.5px;margin-bottom:24px}}

/* ==========================================================================
   HEADER (Theme Builder → Header — Site)
   ========================================================================== */
.ts-header{transition:background-color .3s ease,box-shadow .3s ease}
.ts-header.elementor-sticky--effects{background-color:rgba(10,42,59,.95)!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 4px 20px rgba(0,0,0,.15)}
.ts-brand{flex:0 0 auto}
.ts-brand img{display:block;height:auto;object-fit:contain}
.ts-nav .elementor-nav-menu--main .elementor-item{white-space:nowrap;padding:4px 0}
.ts-nav .elementor-nav-menu--main{gap:clamp(14px,1.35vw,22px)}
.ts-nav .elementor-nav-menu--main .elementor-item.elementor-item-active,.ts-nav .elementor-nav-menu--main .elementor-item:hover{color:#d5ad5c!important}
.ts-header-actions{flex:0 0 auto}
.ts-languages{display:flex;gap:14px;font-size:9px;letter-spacing:1px;color:#9eabb2;text-transform:uppercase;font-weight:700}
.ts-languages a{color:#9eabb2;transition:color .3s}
.ts-languages a:hover,.ts-languages a.is-current{color:#fff}
.ts-btn.small .elementor-button{padding:13px 17px;gap:12px;font-size:9px}
@media(max-width:980px){
  .ts-header{flex-wrap:nowrap!important}
  .ts-header-actions{margin-left:auto}
  .ts-nav{order:3;width:auto!important;flex-grow:0}
  .ts-header-actions{order:2;margin-left:auto}
  .ts-nav .elementor-menu-toggle{margin-left:0}
  .ts-nav .elementor-nav-menu--dropdown{position:absolute;left:0;right:0;top:100%;box-shadow:0 18px 40px rgba(0,0,0,.28)}
  .ts-nav .elementor-nav-menu--dropdown a{justify-content:center}
}
@media(max-width:620px){.ts-btn.small .elementor-button{padding:10px 12px;font-size:8px;gap:8px}}

/* ==========================================================================
   HERO (#top)
   ========================================================================== */
.ts-hero{position:relative;color:#fff}
.ts-hero::after{content:"";position:absolute;width:620px;height:620px;border:1px solid rgba(213,173,92,.42);border-radius:50%;right:-170px;top:-80px;z-index:1;pointer-events:none}
.ts-hero>.elementor-element{position:relative;z-index:2}
.elementor-widget.ts-hero-decor{position:absolute!important;inset:0;z-index:0!important;width:100%!important;height:100%;margin:0;pointer-events:none}
.elementor-widget.ts-hero-decor{position:absolute;inset:0}
.ts-hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;z-index:0;animation:ts-hero-zoom 25s infinite alternate linear}
.ts-hero-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(10,42,59,.9) 0%,rgba(15,64,85,.7) 100%);z-index:1}
.ts-rail-lines{position:absolute;inset:0;opacity:.32;z-index:2}
.ts-rail-lines span{position:absolute;display:block;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);width:80%;transform-origin:right}
.ts-rail-lines span:nth-child(1){right:-10%;top:28%;transform:rotate(-23deg)}
.ts-rail-lines span:nth-child(2){right:-10%;top:53%;transform:rotate(-15deg)}
.ts-rail-lines span:nth-child(3){right:-10%;top:75%;transform:rotate(-9deg)}
@keyframes ts-hero-zoom{0%{transform:scale(1)}100%{transform:scale(1.15)}}
@media(prefers-reduced-motion:reduce){.ts-hero-bg{animation:none}}
.ts-hero-copy{max-width:1180px;width:100%}
.ts-hero .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:var(--gold)}
.elementor-widget-heading.ts-hero-h1 .elementor-heading-title{max-width:1080px;color:#fff}
@media(max-width:620px){.elementor-widget-heading.ts-hero-h1 .elementor-heading-title{font-size:44px!important;line-height:.98!important}}
.elementor-widget.ts-hero-lead{max-width:790px;color:#dbe8ea;font-size:18px;line-height:1.75;margin:32px 0}
.ts-hero-lead p{margin:0}
.ts-hero-actions .ts-text-link .elementor-button{color:#fff;border-bottom-color:rgba(255,255,255,.3);font-size:12px}
.ts-hero-actions .ts-btn .elementor-button{font-size:12px}
.ts-hero-proof{width:340px;flex:0 0 340px}
.elementor-widget.ts-hero-proof{color:#aab5bc;font-size:12px;text-transform:uppercase;letter-spacing:1px}
.ts-hero-proof p{margin:0 0 11px}
.ts-hero-proof strong{color:#fff;font-size:13px}
.ts-hero-proof span{color:var(--gold);margin:0 6px}
.elementor-widget.ts-side-label{position:absolute;right:22px;top:46%;width:auto;z-index:2}
.elementor-widget-heading.ts-side-label .elementor-heading-title{writing-mode:vertical-rl;text-transform:uppercase;font-size:8px;letter-spacing:2px;color:#dbe8ea;font-family:var(--font-sans);font-weight:400}
@media(max-width:980px){.ts-hero-proof{width:100%;flex-basis:auto}}

/* ==========================================================================
   TICKER (#actualites) — Listing Grid de JetEngine sobre categorías
   ========================================================================== */
.ts-ticker{color:#fff;border-top:1px solid rgba(255,255,255,.14)}
.ts-news-heading{border-right:1px solid rgba(255,255,255,.18)}
.ts-news-heading .elementor-widget-heading.ts-eyebrow .elementor-heading-title{margin:0 0 7px;color:var(--gold)}
.ts-news-heading .ts-eyebrow a{color:inherit}
.elementor-widget.ts-news-sub{font-size:9px;letter-spacing:.8px;color:#bcd0d4;text-transform:uppercase}
.ts-news-sub p{margin:0}
.ts-ticker-track{overflow:hidden;min-width:0}
.ts-ticker-track .jet-listing-grid__items{display:flex!important;flex-wrap:nowrap!important;grid-template-columns:none!important;width:max-content!important;max-width:none!important;gap:0!important;margin:0!important;animation:ts-ticker-scroll 34s linear infinite}
.ts-ticker-track:hover .jet-listing-grid__items,.ts-ticker-track:focus-within .jet-listing-grid__items{animation-play-state:paused}
.ts-ticker-track .jet-listing-grid__item{width:360px!important;flex:0 0 360px!important;max-width:none!important;padding:0!important}
.ts-ticker-item{border-right:1px solid rgba(255,255,255,.18);height:100%}
.ts-ticker-text{min-width:0}
.ts-ticker-cat .jet-listing-dynamic-field__content{text-transform:uppercase;font-size:8px;letter-spacing:1.3px;color:var(--gold);font-weight:700;margin-bottom:5px;display:block}
.ts-ticker-title .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:17px;font-weight:500;line-height:1.25;color:#fff;display:block}
.elementor-widget-heading.ts-ticker-arrow .elementor-heading-title{color:var(--gold);font-size:16px;font-family:var(--font-sans)}
@keyframes ts-ticker-scroll{to{transform:translateX(-50%)}}
@media(max-width:760px){.ts-ticker-track .jet-listing-grid__items{animation-duration:28s}.ts-ticker-track .jet-listing-grid__item{width:300px;flex-basis:300px}.ts-news-heading{border-right:0;border-bottom:1px solid rgba(255,255,255,.18)}}
@media(prefers-reduced-motion:reduce){.ts-ticker-track .jet-listing-grid__items{animation:none}.ts-ticker-track{overflow-x:auto}}

/* ==========================================================================
   TRUST BAR (domaines) — Listing Grid sobre la taxonomía domaine
   ========================================================================== */
.ts-trust .jet-listing-grid__items{display:flex!important;flex-wrap:wrap;justify-content:center;gap:8px 34px!important;grid-template-columns:none!important;margin:0!important}
.ts-trust .jet-listing-grid__item{width:auto!important;flex:0 0 auto!important;max-width:none!important;padding:0!important;display:flex;align-items:center}
.ts-trust .jet-listing-grid__item:not(:last-child)::after{content:"";width:4px;height:4px;border-radius:50%;background:var(--gold);margin-left:34px;flex:0 0 4px}
.ts-chip-label .jet-listing-dynamic-field__content{font-size:11px;text-transform:uppercase;letter-spacing:1.7px;font-weight:700;color:#53616a;white-space:nowrap}
.ts-chip-label a{color:inherit}
@media(max-width:620px){.ts-trust .jet-listing-grid__items{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;padding:0 10px;-webkit-overflow-scrolling:touch}}

/* ==========================================================================
   TARJETAS DE LISTING (JetEngine)
   ========================================================================== */
/* Expertise */
.ts-expertise-card{color:#fff;transition:background-color .25s ease}
.jet-listing-grid__item:hover .ts-expertise-card{background-color:var(--teal-dark)!important}
.ts-expertise-card .ts-num .jet-listing-dynamic-field__content{display:block;font-size:clamp(42px,3.6vw,48px);line-height:.9;letter-spacing:-1.5px;color:rgba(255,255,255,.44)}
.ts-card-icon-wrap{margin:25px 0 29px}
.ts-card-icon-wrap .jet-listing-dynamic-field__content{width:76px;height:76px;border:1px solid rgba(213,173,92,.9);border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 28%,rgba(213,173,92,.13),rgba(4,62,74,.12) 58%);box-shadow:0 14px 32px rgba(2,31,38,.18),inset 0 0 0 5px rgba(255,255,255,.025)}
.ts-card-title .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:25px;line-height:1.18;font-weight:500;color:#fff;margin:0 0 17px;display:block}
.ts-card-title.dark .jet-listing-dynamic-field__content{color:var(--ink)}
.ts-card-text .jet-listing-dynamic-field__content{font-size:16px;line-height:1.7;color:#dbe8ea;margin:0 0 25px;display:block}
.elementor-widget.ts-card-link{margin-top:auto}
.ts-card-link .jet-listing-dynamic-field__content{display:flex;justify-content:space-between;align-items:center;font-size:11px;text-transform:uppercase;font-weight:700;letter-spacing:.8px;color:#fff}
.ts-card-link i{color:var(--gold);font-style:normal}
@media(max-width:620px){.ts-expertise-card .ts-num .jet-listing-dynamic-field__content{font-size:46px}.ts-card-icon-wrap .jet-listing-dynamic-field__content{width:72px;height:72px}}

/* Secteur */
.ts-secteur-card{transition:background-color .25s ease}
.jet-listing-grid__item:hover .ts-secteur-card{background-color:var(--ivory)!important}
.ts-secteur-head{margin-bottom:22px}
.ts-glyph .jet-listing-dynamic-field__content{width:58px;height:58px;flex:0 0 58px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:var(--gold);font-family:var(--font-display);font-size:31px;line-height:1;letter-spacing:-3px;padding-right:3px}
.ts-glyph.on-teal .jet-listing-dynamic-field__content{width:78px;height:78px;font-size:40px;background:rgba(255,255,255,.1);border:1px solid rgba(213,173,92,.7);margin-bottom:24px}
.ts-secteur-title .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:24px;line-height:1.12;font-weight:600;color:var(--ink);margin:0}
.ts-promise .jet-listing-dynamic-field__content{min-height:76px;margin:0;padding:17px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-family:var(--font-display);font-size:20px;line-height:1.35;font-style:italic;color:var(--ink)}
.ts-scope .jet-listing-dynamic-field__content{margin:0;padding:19px 0;font-family:var(--font-display);font-size:16px;line-height:1.55;color:var(--ink)}
.ts-scope strong{font-weight:700}
.elementor-widget.ts-result{margin-top:auto}
.ts-result .jet-listing-dynamic-field__content{margin:0;padding:17px 0 0;border-top:1px solid var(--line);font-family:var(--font-display);font-size:16px;line-height:1.45;font-style:italic;color:#42535b}
.ts-secteur-facts .ts-scope .jet-listing-dynamic-field__content,.ts-secteur-facts .ts-result .jet-listing-dynamic-field__content{padding:0;border:0}

/* Référence */
.ts-reference-card{color:#fff;overflow:hidden;transition:transform .3s ease}
.ts-reference-card::after{content:"";position:absolute;border:1px solid rgba(255,255,255,.18);width:330px;height:330px;border-radius:50%;right:-130px;top:-110px;z-index:2;pointer-events:none}
.ts-reference-card>.elementor-element{position:relative;z-index:3}
.elementor-widget.ts-ref-index{position:absolute;top:30px;left:24px;width:auto}
.ts-ref-index .jet-listing-dynamic-field__content{font-size:9px;letter-spacing:1px;opacity:.85;color:#fff}
.ts-ref-kicker .jet-listing-dynamic-field__content{font-size:11px;text-transform:uppercase;letter-spacing:1.4px;color:var(--gold);font-weight:700;display:block}
.ts-ref-title .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:48px;font-weight:500;line-height:1;margin:9px 0 12px;color:#fff;display:block}
.ts-ref-subtitle .jet-listing-dynamic-field__content{font-size:12px;text-transform:uppercase;letter-spacing:1.2px;opacity:.8;margin:0;color:#fff}
.ts-ref-grid .jet-listing-grid__item:hover .ts-reference-card{transform:scale(1.015)}
@media(max-width:620px){.ts-ref-title .jet-listing-dynamic-field__content{font-size:36px}}

/* Formation */
.ts-formation-card{transition:background-color .25s ease}
.jet-listing-grid__item:hover .ts-formation-card{background-color:var(--ivory)!important}
.ts-formation-card .ts-num .jet-listing-dynamic-field__content{display:block;margin-bottom:22px}
.ts-themes .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:18px;line-height:1.5;color:var(--ink);padding:16px 0;border-top:1px solid var(--line);margin:0}
.elementor-widget.ts-format{margin-top:auto}
.ts-format .jet-listing-dynamic-field__content{font-family:var(--font-display);font-style:italic;font-size:15px;color:#42535b;padding-top:14px;border-top:1px solid var(--line);margin:0}
.ts-format.on-dark .jet-listing-dynamic-field__content{color:#dbe8ea;border-top-color:rgba(255,255,255,.25);max-width:820px;margin-top:14px}

/* Actualité (blog) */
.ts-article-card{border:1px solid var(--line);height:100%;transition:transform .25s ease,box-shadow .25s ease}
.jet-listing-grid__item:hover .ts-article-card{transform:translateY(-4px);box-shadow:0 18px 40px rgba(13,83,98,.1)}
.ts-article-media img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.ts-article-meta{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--gold-dark);font-weight:700;margin-bottom:12px}
.ts-article-cat a{color:var(--gold-dark)}
.ts-article-title .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:24px;line-height:1.18;font-weight:500;color:var(--ink);margin:0 0 12px;display:block}
.ts-article-excerpt .jet-listing-dynamic-field__content{font-size:15px;line-height:1.7;color:var(--muted);margin:0 0 18px}
.ts-article-link .jet-listing-dynamic-link__link{font-size:11px;text-transform:uppercase;letter-spacing:.8px;font-weight:700;color:var(--teal)}

/* ==========================================================================
   EXPERTISES — cabecera de sección y ciclo ferroviario (#interfaces)
   ========================================================================== */
.ts-section-heading{margin-bottom:56px}
.ts-lifecycle{position:relative}
.ts-train-phases{display:grid;grid-template-columns:2fr 4fr;margin:0 -18px;background:#e8f4f0;border-bottom:1px solid #c8d4d0;color:var(--teal-dark);font-size:15px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase}
.ts-train-phases span{min-height:54px;padding:15px 20px;display:flex;align-items:center;justify-content:center;text-align:center}
.ts-train-phases span+span{border-left:1px solid #c8d4d0}
.ts-train-steps{position:relative;z-index:3;display:grid;grid-template-columns:repeat(6,1fr);margin:0 -18px;background:#fffdf8;border-bottom:1px solid #cbc7bd;box-shadow:0 8px 18px rgba(10,52,62,.08)}
.ts-train-step{position:relative;min-height:82px;display:flex;align-items:center;justify-content:center;padding:18px 14px;text-align:center;border-right:1px solid #d6d1c7}
.ts-train-step:last-child{border-right:0}
.ts-train-step:not(:last-child)::after{content:"→";position:absolute;right:-8px;top:50%;transform:translateY(-50%);color:var(--gold-dark);z-index:2;font-size:18px}
.ts-train-step strong{font-family:var(--font-sans);font-size:17px;font-weight:750;line-height:1.25;letter-spacing:.65px;text-transform:uppercase;color:var(--teal-dark)}
.elementor-widget.ts-train-photo{position:relative;margin:0 -18px;height:clamp(240px,29vw,430px);overflow:hidden;background:#d9e0df;border-bottom:1px solid #aeb9b8}
.elementor-widget.ts-train-photo::after{content:"";position:absolute;inset:0;box-shadow:inset 0 14px 24px rgba(13,83,98,.14);pointer-events:none}
.ts-train-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 61%;filter:saturate(.88) contrast(1.03)}
.elementor-widget-heading.ts-train-caption .elementor-heading-title{margin:30px 0 0;text-align:center;color:var(--teal-dark);font-family:var(--font-display);font-size:clamp(23px,2.2vw,31px);font-weight:500}
.ts-train-caption span{color:var(--gold-dark)}
@media(max-width:1180px){.ts-train-step strong{font-size:15px}}
@media(max-width:900px){.ts-lifecycle{overflow-x:auto}.ts-train-phases,.ts-train-steps,.elementor-widget.ts-train-photo{min-width:880px}.elementor-widget-heading.ts-train-caption .elementor-heading-title{min-width:700px;text-align:left;padding-left:18px}}
@media(max-width:620px){.ts-train-step strong{font-size:14px}.elementor-widget-heading.ts-train-caption .elementor-heading-title{font-size:23px}}

/* ==========================================================================
   DIGITAL (#digital)
   ========================================================================== */
.elementor-widget-heading.ts-digital-h2 .elementor-heading-title{font-size:clamp(42px,3.75vw,59px);line-height:1;letter-spacing:-2px;color:#fff;margin:0 0 30px}
.ts-digital-intro .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:#f0d38e;letter-spacing:2.8px}
.elementor-widget.ts-digital-text{font-size:17px;line-height:1.8;color:#e2edef;margin-bottom:25px}
.ts-digital-text p{margin:0}
.ts-digital-row{padding:22px 0;border-bottom:1px solid #d0cdc4}
.ts-digital-system>.ts-digital-row:first-of-type{border-top:1px solid #d0cdc4}
.ts-digital-row .ts-num{flex:0 0 50px}
.ts-digital-row .elementor-widget-heading.ts-num .elementor-heading-title{min-width:38px}
.elementor-widget-heading.ts-digital-h3 .elementor-heading-title{font-family:var(--font-display);font-size:20px;line-height:1.35;font-weight:500;margin:0 0 9px;color:var(--ink)}
.elementor-widget.ts-digital-p{font-size:16px;line-height:1.75;color:var(--muted);max-width:600px}
.ts-digital-p p{margin:0}
.elementor-widget.ts-keywords{margin-top:10px;color:#8b6e2c;font-size:11px;font-weight:700;line-height:1.65;letter-spacing:.55px;text-transform:uppercase}
.ts-keywords p{margin:0}
.elementor-widget.ts-quote{margin:24px 0 0;padding:0 0 0 22px;border-left:2px solid var(--gold);font-family:var(--font-display);font-size:24px;line-height:1.4;color:var(--navy);font-style:normal}
.ts-quote p{margin:0}
@media(max-width:980px){.elementor-widget.ts-digital-text{font-size:16px}.elementor-widget.ts-quote{font-size:22px}}
@media(max-width:620px){.elementor-widget-heading.ts-digital-h2 .elementor-heading-title{font-size:42px}.ts-digital-row .ts-num{flex-basis:40px}.elementor-widget.ts-quote{font-size:21px}}

/* ==========================================================================
   APPROCHE (#approche) — rueda 360° 100 % CSS
   ========================================================================== */
.ts-approach-visual{background:radial-gradient(circle at center,#fffdf8 0%,#f0ece2 72%,#e6dece 100%);overflow:hidden}
.ts-approach-copy{border-left:1px solid rgba(255,255,255,.18)}
.ts-approach-copy .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:#f0d38e;letter-spacing:2.8px}
.elementor-widget-heading.ts-approach-h2 .elementor-heading-title{font-size:clamp(42px,3.8vw,58px);line-height:1;letter-spacing:-2px;color:#fff;margin:0 0 28px}
.elementor-widget.ts-approach-text{color:#dbe8ea;font-size:15px;line-height:1.8}
.ts-approach-text p{margin:0}
.ts-num-list ul{list-style:none;margin:30px 0 0;padding:0;border-top:1px solid rgba(255,255,255,.25)}
.ts-num-list li{display:flex;align-items:center;gap:18px;padding:20px 0;border-bottom:1px solid rgba(255,255,255,.25);font-size:17px;line-height:1.55;color:#fff}
.ts-num-list li span{display:inline-block;min-width:38px;font-family:var(--font-display);font-size:34px;font-weight:400;line-height:1;color:var(--gold)}
.ts-wheel .lifecycle-wheel{position:relative;width:min(90%,560px);aspect-ratio:1;margin:auto}
.ts-wheel .lifecycle-wheel::before,.ts-wheel .lifecycle-wheel::after{content:"";position:absolute;z-index:1;background:rgba(13,83,98,.16)}
.ts-wheel .lifecycle-wheel::before{left:50%;top:11%;bottom:11%;width:1px}
.ts-wheel .lifecycle-wheel::after{top:50%;left:11%;right:11%;height:1px}
.ts-wheel .wheel-ring{position:absolute;inset:13%;border-radius:50%;background:conic-gradient(from -45deg,var(--gold) 0 24.5%,var(--teal) 25% 49.5%,var(--teal-dark) 50% 74.5%,#9db8bd 75% 100%);-webkit-mask:radial-gradient(circle,transparent 0 55%,#000 55.5% 74%,transparent 74.5%);mask:radial-gradient(circle,transparent 0 55%,#000 55.5% 74%,transparent 74.5%);filter:drop-shadow(0 12px 18px rgba(13,83,98,.09))}
.ts-wheel .wheel-ring::after{content:"";position:absolute;inset:17%;border:1px solid rgba(13,83,98,.45);border-radius:50%}
.ts-wheel .wheel-core{position:absolute;inset:35%;z-index:3;border-radius:50%;display:grid;place-content:center;text-align:center;background:var(--gold);color:var(--teal-dark);box-shadow:0 15px 35px rgba(13,83,98,.16)}
.ts-wheel .wheel-core small{font-family:var(--font-display);font-size:clamp(34px,4vw,48px);line-height:.9}
.ts-wheel .wheel-core strong{margin-top:8px;font-size:8px;line-height:1.35;letter-spacing:1.3px;font-family:var(--font-sans)}
.ts-wheel .wheel-phase{position:absolute;z-index:2;color:var(--teal-dark);font-size:9px;font-weight:750;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;font-family:var(--font-sans)}
.ts-wheel .phase-definition{top:2%;left:50%;transform:translateX(-50%)}
.ts-wheel .phase-conception{top:20%;right:-1%;transform:rotate(63deg)}
.ts-wheel .phase-construction{right:-2%;bottom:19%;transform:rotate(-52deg)}
.ts-wheel .phase-exploitation{bottom:2%;left:50%;transform:translateX(-50%)}
.ts-wheel .phase-renovation{left:-2%;bottom:21%;transform:rotate(52deg)}
.ts-wheel .phase-deconstruction{top:20%;left:-2%;transform:rotate(-62deg)}
.ts-wheel .wheel-axis{position:absolute;z-index:5;width:160px;padding:10px 12px;border:1px solid rgba(213,173,92,.65);border-radius:5px;background:rgba(255,253,248,.96);box-shadow:0 10px 24px rgba(13,83,98,.1);display:grid;grid-template-columns:22px 1fr;column-gap:8px;color:var(--teal-dark);font-family:var(--font-sans);text-decoration:none}
.ts-wheel a.wheel-axis:hover{border-color:var(--gold);box-shadow:0 14px 30px rgba(13,83,98,.16)}
.ts-wheel .wheel-axis i{grid-row:1/3;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:var(--teal);color:var(--gold);font:700 8px/1 var(--font-sans);font-style:normal}
.ts-wheel .wheel-axis strong{font-size:11px;line-height:1;text-transform:uppercase;letter-spacing:.8px}
.ts-wheel .wheel-axis em{margin-top:4px;color:#65747a;font-size:7px;line-height:1.3;font-style:normal}
.ts-wheel .axis-strategic{top:7%;left:50%;transform:translate(-50%,-50%)}
.ts-wheel .axis-technical{right:1%;top:50%;transform:translateY(-50%)}
.ts-wheel .axis-digital{bottom:7%;left:50%;transform:translate(-50%,50%)}
.ts-wheel .axis-legal{left:1%;top:50%;transform:translateY(-50%)}
@media(max-width:620px){.ts-wheel .lifecycle-wheel{width:96%}.ts-wheel .wheel-phase{font-size:7px}.ts-wheel .wheel-axis{width:120px;padding:7px 8px;grid-template-columns:18px 1fr}.ts-wheel .wheel-axis i{width:18px;height:18px}.ts-wheel .wheel-axis strong{font-size:8px}.ts-wheel .wheel-axis em{font-size:6px}.ts-wheel .axis-technical{right:-4%}.ts-wheel .axis-legal{left:-4%}.elementor-widget-heading.ts-approach-h2 .elementor-heading-title{font-size:42px}}

/* ==========================================================================
   TRAINSTITUTE (#trainstitute)
   ========================================================================== */
.elementor-widget-heading.ts-institute-h2 .elementor-heading-title{color:var(--teal)}
.elementor-widget.ts-institute-intro-text{font-size:17px;line-height:1.75;color:var(--muted);max-width:760px}
.ts-institute-intro-text p{margin:0}
.ts-institute-grid{margin-top:58px}
.ts-institute-card{position:relative;transition:transform .25s ease,background-color .25s ease}
.ts-institute-card:hover{z-index:1;transform:translateY(-5px);background-color:var(--ivory)!important}
.elementor-widget.ts-institute-icon{width:76px;height:76px;display:grid;place-items:center;border-radius:50%;background:var(--teal);box-shadow:0 15px 34px rgba(13,83,98,.14)}
.ts-institute-icon svg{width:38px;height:38px;fill:none;stroke:var(--gold);stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.elementor-widget.ts-institute-number{position:absolute;right:28px;top:35px;width:auto}
.elementor-widget-heading.ts-institute-h3 .elementor-heading-title{font-family:var(--font-display);font-size:31px;font-weight:500;line-height:1.08;margin:32px 0 22px;color:var(--ink)}
.ts-institute-h3 a{color:inherit}
.elementor-widget.ts-institute-p{font-size:17px;line-height:1.72;color:var(--muted)}
.ts-institute-p p{margin:0}
.ts-institute-p strong{color:var(--ink);font-weight:700}
.ts-institute-p em{font-family:var(--font-display);font-size:17px;color:var(--ink)}
.ts-institute-cta{margin-top:0}
.elementor-widget.ts-institute-cta-icon{width:66px;height:66px;display:grid;place-items:center;border:1px solid rgba(213,173,92,.7);border-radius:50%}
.ts-institute-cta-icon svg{width:31px;height:31px;fill:none;stroke:var(--gold);stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.ts-institute-cta .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:var(--gold);margin:0 0 7px}
.elementor-widget-heading.ts-institute-cta-h3 .elementor-heading-title{font-family:var(--font-display);font-size:clamp(24px,2.2vw,33px);font-weight:500;line-height:1.15;margin:0;color:#fff}
.ts-institute-cta .ts-btn .elementor-button{min-width:220px;justify-content:space-between}
@media(max-width:760px){.ts-institute-cta .ts-btn{width:100%}.ts-institute-cta .ts-btn .elementor-button{width:100%}}

/* ==========================================================================
   RÉFÉRENCES (#references)
   ========================================================================== */
.ts-project-strip{margin-top:18px;padding:24px 28px;border:1px solid var(--line);text-transform:uppercase;font-size:13px;letter-spacing:.8px}
.elementor-widget-heading.ts-strip-label .elementor-heading-title{color:var(--gold-dark);font-weight:700;font-size:13px;letter-spacing:.8px;text-transform:uppercase;font-family:var(--font-sans);white-space:nowrap}
.ts-strip .jet-listing-grid__items{display:flex!important;flex-wrap:wrap;gap:8px 20px!important;grid-template-columns:none!important;justify-content:flex-end;margin:0!important}
.ts-strip .jet-listing-grid__item{width:auto!important;flex:0 0 auto!important;max-width:none!important;padding:0!important;display:flex;align-items:center}
.ts-strip .jet-listing-grid__item:not(:last-child)::after{content:"";width:4px;height:4px;border-radius:50%;background:var(--gold);margin-left:20px;flex:0 0 4px}
.ts-strip-title .jet-listing-dynamic-field__content{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--ink);white-space:nowrap}
.ts-strip-title a{color:inherit}
@media(max-width:760px){.ts-strip .jet-listing-grid__items{justify-content:flex-start}}

/* ==========================================================================
   CTA FINAL (#contact)
   ========================================================================== */
.ts-cta .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:var(--gold)}
.elementor-widget-heading.ts-cta-title .elementor-heading-title{max-width:24ch;margin:0 auto 36px;text-wrap:balance;color:#fff}

/* ==========================================================================
   FOOTER (Theme Builder → Footer — Site)
   ========================================================================== */
.ts-footer{color:#c4d3d7;font-size:14px;line-height:1.7}
.elementor-widget-heading.ts-footer-small .elementor-heading-title{display:block;margin-bottom:10px;color:var(--gold);font-size:10px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;font-family:var(--font-sans)}
.elementor-widget-heading.ts-footer-small.dark .elementor-heading-title{color:var(--gold-dark)}
.elementor-widget.ts-footer-text{color:#c4d3d7;font-size:14px;line-height:1.7}
.ts-footer-text p{margin:0}
.elementor-widget.ts-footer-tagline{margin-top:20px;max-width:34ch;color:#8fa6ac;font-size:13px}
.ts-footer-tagline p{margin:0}
.ts-footer-list{list-style:none;margin:0;padding:0}
.ts-footer-list li+li{margin-top:4px}
.ts-footer a{color:#fff;border-bottom:1px solid transparent;transition:border-color .3s,color .3s}
.ts-footer a:hover{border-color:var(--gold);color:#fff}
.ts-footer-trainsights .elementor-widget.ts-footer-text{color:#9fb5ba;font-size:13px;letter-spacing:.2px}
.ts-footer-trainsights b{color:#fff;font-weight:600}
.ts-footer-trainsights .ts-text-link .elementor-button{color:var(--gold);border-bottom:0;font-size:11px;letter-spacing:1px;padding:0}
.ts-footer-trainsights .ts-text-link .elementor-button:hover{color:#fff}
.elementor-widget.ts-footer-legal-text{font-size:11px;line-height:1.6;letter-spacing:.6px;color:#8fa6ac}
.ts-footer-legal-text p{margin:0}

/* ==========================================================================
   ARCHIVOS, SINGLES Y ARTÍCULOS (Theme Builder)
   ========================================================================== */
.ts-archive-head .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:var(--gold)}
.ts-archive-title .ts-archive-h1{color:#fff;margin:0 0 18px;font-family:var(--font-display);font-weight:500;font-size:clamp(44px,4.6vw,66px);line-height:1;letter-spacing:-2px}
.ts-archive-desc .ts-archive-description{color:#dbe8ea;font-size:17px;line-height:1.7;max-width:760px}
.ts-archive-desc p{margin:0}
.elementor-widget.ts-archive-desc{color:#dbe8ea;font-size:17px;line-height:1.7;max-width:760px}
.ts-single-hero .elementor-widget-heading.ts-eyebrow .elementor-heading-title{color:var(--gold)}
.ts-single-hero .ts-num .jet-listing-dynamic-field__content{display:block;margin-bottom:18px}
.elementor-widget-heading.ts-single-title .elementor-heading-title{color:#fff;max-width:1080px}
.ts-single-lead .jet-listing-dynamic-field__content{font-family:var(--font-display);font-size:clamp(19px,1.8vw,24px);line-height:1.5;max-width:820px;margin:22px 0 0;color:#dbe8ea}
.ts-single-hero .ts-ref-kicker .jet-listing-dynamic-field__content{margin-bottom:14px}
.ts-terms.on-dark{margin-top:22px}
.ts-terms.on-dark .jet-listing-dynamic-terms__link{color:var(--gold);font-size:11px;text-transform:uppercase;letter-spacing:1.2px;font-weight:700;margin-right:14px}
.elementor-widget-heading.ts-article-h1 .elementor-heading-title{margin:18px 0 20px}
.elementor-widget.ts-article-lead{font-family:var(--font-display);font-style:italic;font-size:clamp(19px,1.8vw,23px);line-height:1.5;color:#3f4f57;margin-bottom:26px}
.ts-article-meta-line .elementor-icon-list-items{font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:var(--gold-dark);font-weight:700}
.ts-article-meta-line a{color:var(--gold-dark)}
.ts-article-cover img{width:100%;height:auto;display:block;margin-bottom:28px}
.ts-article-body{font-size:17px;line-height:1.8;color:var(--ink)}
.ts-article-body p{margin:0 0 20px}
.ts-article-body h2{font-size:clamp(28px,2.6vw,36px);line-height:1.15;margin:40px 0 16px}
.ts-article-body h3{font-size:24px;margin:32px 0 12px}
.ts-article-body ul,.ts-article-body ol{padding-left:22px;margin:0 0 20px}
.ts-article-body blockquote{margin:28px 0;padding:0 0 0 22px;border-left:2px solid var(--gold);font-family:var(--font-display);font-size:22px;line-height:1.4;color:var(--navy)}
.ts-article-body figure{margin:28px 0}
.ts-article-body figcaption{font-size:12px;color:var(--muted);margin-top:8px}
.ts-article-nav{margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}
.ts-pagination .nav-links{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.ts-pagination .page-numbers{padding:10px 14px;border:1px solid var(--line);font-size:12px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--ink);text-decoration:none}
.ts-pagination .page-numbers.current{background:var(--teal);color:#fff;border-color:var(--teal)}
.elementor-widget.ts-404{text-align:center}
.ts-search .elementor-search-form{max-width:480px;margin:0 auto}

/* Etiqueta del enlace del listing de noticias, localizada por idioma (el label del widget no es traducible) */
.ts-article-link .jet-listing-dynamic-link__label{font-size:0}
.ts-article-link .jet-listing-dynamic-link__label::after{font-size:11px;content:"Lire l’article ↗"}
html[lang^="en"] .ts-article-link .jet-listing-dynamic-link__label::after{content:"Read the article ↗"}
html[lang^="es"] .ts-article-link .jet-listing-dynamic-link__label::after{content:"Leer el artículo ↗"}
