:root {
    --ds-navy: #002147;
    --ds-navy-2: #082642;
    --ds-blue: #123D5F;
    --ds-gold: #D4AF37;
    --ds-gold-dark: #B58F18;
    --ds-cream: #F7F3EA;
    --ds-ink: #101828;
    --ds-radius: 28px;
}

html { scroll-behavior: smooth; }

.dsolution-page {
    overflow: hidden;
    background: var(--ds-cream);
    color: var(--ds-navy);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.dsolution-page *, .dsolution-page *::before, .dsolution-page *::after { box-sizing: border-box; }
.dsolution-page a { text-decoration: none; }
.dsolution-page img { max-width: 100%; }
.dsolution-page ::selection { background: var(--ds-gold); color: var(--ds-navy); }

.ds-container { width: min(1160px, calc(100% - 40px)); margin-inline: auto; }
.ds-section { position: relative; padding: 74px 0; }
.ds-section--compact { padding: 56px 0; }
.ds-section--white { background: rgba(255,255,255,.68); }
.ds-section--blue { background: var(--ds-blue); color: #fff; }
.ds-section--navy { background: var(--ds-navy-2); color: #fff; }

.ds-eyebrow {
    margin: 0;
    color: var(--ds-gold-dark);
    font-size: .74rem;
    line-height: 1;
    font-weight: 800;
    letter-spacing: .28em;
    text-transform: uppercase;
}
.ds-section--blue .ds-eyebrow,
.ds-section--navy .ds-eyebrow,
.ds-contact .ds-eyebrow { color: var(--ds-gold); }
.ds-title {
    margin: .85rem 0 0;
    max-width: 900px;
    color: var(--ds-navy);
    font-size: clamp(2rem, 3.15vw, 3rem);
    line-height: 1.08;
    font-weight: 650;
    letter-spacing: -.035em;
}
.ds-section--blue .ds-title,
.ds-section--navy .ds-title,
.ds-contact .ds-title { color: #fff; }
.ds-subtitle {
    margin: 1rem 0 0;
    max-width: 720px;
    color: rgba(16,24,40,.68);
    font-size: clamp(1rem, 1.25vw, 1.125rem);
    line-height: 1.75;
}
.ds-section--blue .ds-subtitle,
.ds-section--navy .ds-subtitle { color: rgba(255,255,255,.74); }
.ds-divider {
    display: block;
    margin-top: 1.15rem;
    width: 68px;
    height: 2px;
    border-radius: 999px;
    background: var(--ds-gold-dark);
}
.ds-section--blue .ds-divider,
.ds-section--navy .ds-divider,
.ds-contact .ds-divider { background: var(--ds-gold); }

/* Header */
.ds-header {
    position: fixed;
    inset: 0 0 auto 0;
    z-index: 1045;
    border-bottom: 1px solid rgba(255,255,255,.10);
    background: transparent;
    transition: background .3s ease, box-shadow .3s ease, border-color .3s ease, backdrop-filter .3s ease;
}
.ds-header.is-scrolled,
.ds-header.is-menu-open,
.dsolution-service-page .ds-header {
    border-color: rgba(0,33,71,.10);
    background: rgba(247,243,234,.88);
    box-shadow: 0 12px 35px rgba(0,33,71,.10);
    backdrop-filter: blur(18px);
}
.ds-nav {
    width: min(1240px, calc(100% - 40px));
    min-height: 78px;
    margin-inline: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}
.ds-brand { display: inline-flex; align-items: center; gap: 12px; color: #fff; }
.ds-brand-logo { width: 54px; height: 54px; object-fit: contain; }
.ds-brand-logo--dark { display: none; }
.ds-brand-copy { line-height: 1; }
.ds-brand-name { display: block; font-size: 1.18rem; font-weight: 800; letter-spacing: -.03em; }
.ds-brand-tagline { display: block; margin-top: 6px; font-size: .52rem; font-weight: 650; letter-spacing: .12em; text-transform: uppercase; opacity: .72; }
.ds-header.is-scrolled .ds-brand,
.ds-header.is-menu-open .ds-brand,
.dsolution-service-page .ds-brand { color: var(--ds-navy); }
.ds-header.is-scrolled .ds-brand-logo--light,
.ds-header.is-menu-open .ds-brand-logo--light,
.dsolution-service-page .ds-brand-logo--light { display: none; }
.ds-header.is-scrolled .ds-brand-logo--dark,
.ds-header.is-menu-open .ds-brand-logo--dark,
.dsolution-service-page .ds-brand-logo--dark { display: block; }
.ds-nav-links { display: flex; align-items: center; gap: 26px; }
.ds-nav-links > a,
.ds-services-wrap > a {
    color: rgba(255,255,255,.94);
    font-size: .9rem;
    font-weight: 650;
    transition: color .2s ease;
}
.ds-nav-links > a:hover,
.ds-services-wrap > a:hover { color: var(--ds-gold); }
.ds-header.is-scrolled .ds-nav-links > a,
.ds-header.is-scrolled .ds-services-wrap > a,
.ds-header.is-menu-open .ds-nav-links > a,
.ds-header.is-menu-open .ds-services-wrap > a,
.dsolution-service-page .ds-nav-links > a,
.dsolution-service-page .ds-services-wrap > a { color: #0B2340; }
.ds-services-wrap { position: relative; display: flex; align-items: center; gap: 4px; }
.ds-services-toggle {
    border: 0;
    background: transparent;
    color: rgba(255,255,255,.88);
    font-size: 1rem;
    line-height: 1;
    padding: 4px 6px;
}
.ds-header.is-scrolled .ds-services-toggle,
.ds-header.is-menu-open .ds-services-toggle,
.dsolution-service-page .ds-services-toggle { color: var(--ds-navy); }
.ds-services-menu {
    display: none;
    position: absolute;
    top: 34px;
    left: -16px;
    width: 290px;
    padding: 12px;
    border: 1px solid rgba(0,33,71,.10);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 24px 55px rgba(0,33,71,.17);
}
.ds-services-menu.is-open { display: grid; }
.ds-services-menu a {
    padding: 10px 12px;
    border-radius: 12px;
    color: rgba(0,33,71,.82);
    font-size: .86rem;
    font-weight: 650;
}
.ds-services-menu a:hover { background: var(--ds-cream); color: var(--ds-gold-dark); }
.ds-nav-actions { display: flex; align-items: center; gap: 10px; }
.ds-language {
    display: inline-flex;
    border: 1px solid rgba(255,255,255,.20);
    border-radius: 999px;
    padding: 4px;
    background: rgba(255,255,255,.10);
    color: #fff;
}
.ds-header.is-scrolled .ds-language,
.dsolution-service-page .ds-language { border-color: rgba(0,33,71,.10); background: rgba(255,255,255,.86); color: var(--ds-navy); }
.ds-language span { padding: 6px 10px; border-radius: 999px; font-size: .75rem; font-weight: 700; }
.ds-language .is-active { background: var(--ds-navy); color: #fff; }
.ds-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 0 24px;
    border-radius: 999px;
    background: #fff;
    color: var(--ds-navy);
    font-size: .87rem;
    font-weight: 750;
    box-shadow: 0 10px 28px rgba(0,0,0,.13);
    transition: transform .2s ease, background .2s ease;
}
.ds-header.is-scrolled .ds-cta,
.dsolution-service-page .ds-cta { background: var(--ds-gold); box-shadow: 0 10px 28px rgba(0,33,71,.08); }
.ds-cta:hover { transform: translateY(-2px); background: var(--ds-gold); color: var(--ds-navy); }
.ds-mobile-toggle { display: none; border: 1px solid rgba(255,255,255,.2); border-radius: 12px; padding: 9px 12px; background: rgba(255,255,255,.1); color: #fff; font-size: 1.2rem; }
.ds-header.is-scrolled .ds-mobile-toggle,
.ds-header.is-menu-open .ds-mobile-toggle,
.dsolution-service-page .ds-mobile-toggle { border-color: rgba(0,33,71,.10); background: #fff; color: var(--ds-navy); }
.ds-mobile-menu { display: none; padding: 16px 20px 22px; border-top: 1px solid rgba(0,33,71,.08); background: rgba(247,243,234,.98); }
.ds-mobile-menu.is-open { display: grid; gap: 12px; }
.ds-mobile-menu a { color: var(--ds-navy); font-size: .92rem; font-weight: 650; }
.ds-mobile-submenu { display: grid; gap: 9px; margin-left: 10px; padding-left: 14px; border-left: 1px solid rgba(212,175,55,.5); }
.ds-mobile-submenu a { font-weight: 500; opacity: .78; }

/* Hero */
.ds-hero {
    position: relative;
    min-height: 100svh;
    display: grid;
    place-items: center;
    overflow: hidden;
    isolation: isolate;
    background:
        radial-gradient(circle at 50% 42%, rgba(18,61,95,.42), transparent 36%),
        radial-gradient(circle at 8% 12%, rgba(212,175,55,.08), transparent 24%),
        linear-gradient(145deg, #00162f 0%, #001b3a 48%, #001125 100%);
    color: #fff;
}
.ds-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(180deg, rgba(0,8,24,.08), rgba(0,8,24,.42));
    pointer-events: none;
}
.ds-hero-grid {
    position: absolute;
    inset: 0;
    z-index: -3;
    opacity: .11;
    background-image:
        linear-gradient(rgba(255,255,255,.08) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.08) 1px, transparent 1px);
    background-size: 92px 92px;
    mask-image: radial-gradient(circle at center, #000 0%, transparent 76%);
}
.ds-hero-vector {
    position: absolute;
    inset: -3%;
    z-index: -2;
    width: 106%;
    height: 106%;
    opacity: .72;
    pointer-events: none;
}
.ds-vector-orbits {
    stroke-width: 3;
    transform-origin: center;
    animation: ds-orbit-drift 22s ease-in-out infinite alternate;
}
.ds-vector-orbits--soft {
    opacity: .34;
    stroke-width: 2;
    animation-duration: 28s;
    animation-direction: alternate-reverse;
}
.ds-vector-flow {
    opacity: .58;
    stroke-dasharray: 10 15;
    animation: ds-flow 18s linear infinite;
}
.ds-hero-glow {
    position: absolute;
    z-index: -2;
    border-radius: 999px;
    filter: blur(56px);
    pointer-events: none;
}
.ds-hero-glow--one {
    width: 360px;
    height: 360px;
    left: 14%;
    top: 20%;
    background: rgba(212,175,55,.08);
    animation: ds-glow 12s ease-in-out infinite alternate;
}
.ds-hero-glow--two {
    width: 440px;
    height: 440px;
    right: 8%;
    bottom: 3%;
    background: rgba(20,112,130,.14);
    animation: ds-glow 15s ease-in-out infinite alternate-reverse;
}
.ds-hero-content {
    position: relative;
    z-index: 2;
    width: min(1080px, calc(100% - 40px));
    padding: 150px 0 110px;
    text-align: center;
}
.ds-hero-eyebrow {
    margin: 0 0 20px;
    color: rgba(212,175,55,.94);
    font-size: .72rem;
    line-height: 1;
    font-weight: 800;
    letter-spacing: .26em;
    text-transform: uppercase;
}
.ds-hero h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(3rem, 5.25vw, 5.6rem);
    line-height: .99;
    letter-spacing: -.052em;
    text-shadow: 0 20px 58px rgba(0,0,0,.28);
}
.ds-hero h1 strong { display: block; font-weight: 800; }
.ds-hero h1 span {
    display: block;
    margin-top: .06em;
    font-weight: 380;
    letter-spacing: -.043em;
    color: rgba(255,255,255,.96);
}
.ds-hero-kicker {
    margin: 27px auto 0;
    max-width: 720px;
    color: rgba(255,255,255,.75);
    font-size: 1.04rem;
    line-height: 1.72;
}
.ds-hero-actions {
    margin-top: 31px;
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 12px;
}
.ds-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 50px;
    padding: 0 24px;
    border-radius: 999px;
    font-size: .88rem;
    font-weight: 750;
    transition: transform .2s ease, background .2s ease, color .2s ease, box-shadow .2s ease;
}
.ds-btn:hover { transform: translateY(-2px); }
.ds-btn--gold {
    background: var(--ds-gold);
    color: var(--ds-navy);
    box-shadow: 0 12px 30px rgba(212,175,55,.17);
}
.ds-btn--gold:hover { background: #e1bf48; color: var(--ds-navy); }
.ds-btn--outline {
    border: 1px solid rgba(255,255,255,.46);
    color: #fff;
    background: rgba(255,255,255,.035);
    backdrop-filter: blur(8px);
}
.ds-btn--outline:hover {
    border-color: var(--ds-gold);
    background: rgba(212,175,55,.12);
    color: #fff;
}
.ds-scroll-cue {
    position: absolute;
    z-index: 3;
    left: 50%;
    bottom: 28px;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: rgba(255,255,255,.54);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
}
.ds-scroll-cue i {
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border: 1px solid rgba(255,255,255,.22);
    border-radius: 999px;
    font-style: normal;
    animation: ds-scroll-bob 1.8s ease-in-out infinite;
}
@keyframes ds-orbit-drift {
    0% { transform: translate3d(-1%, -1%, 0) scale(1); }
    100% { transform: translate3d(1.8%, 1.2%, 0) scale(1.025); }
}
@keyframes ds-flow {
    to { stroke-dashoffset: -180; }
}
@keyframes ds-glow {
    from { transform: translate3d(-10px, -8px, 0) scale(.96); opacity: .68; }
    to { transform: translate3d(16px, 12px, 0) scale(1.07); opacity: 1; }
}
@keyframes ds-scroll-bob {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(5px); }
}

/* Services */
.ds-services-grid { margin-top: 30px; display: grid; grid-template-columns: repeat(3, 1fr); overflow: hidden; border: 1px solid rgba(255,255,255,.6); border-radius: var(--ds-radius); background: var(--ds-navy); box-shadow: 0 24px 70px rgba(0,33,71,.16); }
.ds-service-card { position: relative; min-height: 215px; overflow: hidden; border-right: 1px solid rgba(255,255,255,.10); border-bottom: 1px solid rgba(255,255,255,.10); color: #fff; }
.ds-service-card:nth-child(3n) { border-right: 0; }
.ds-service-card:nth-last-child(-n+3) { border-bottom: 0; }
.ds-service-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); transition: transform .7s ease, filter .7s ease; }
.ds-service-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,0,0,.62), rgba(0,0,0,.34)); transition: background .45s ease; }
.ds-service-card:hover img { transform: scale(1.055); filter: grayscale(0); }
.ds-service-card:hover::after { background: linear-gradient(135deg, rgba(0,0,0,.44), rgba(0,0,0,.22)); }
.ds-service-content { position: absolute; z-index: 2; inset: auto 0 0 0; padding: 22px; text-shadow: 0 4px 22px rgba(0,0,0,.9); }
.ds-service-number { color: var(--ds-gold); font-size: .72rem; font-weight: 800; letter-spacing: .22em; }
.ds-service-card h3 { margin: 9px 0 0; color: #fff; font-size: 1.45rem; font-weight: 750; }
.ds-service-link { display: inline-flex; margin-top: 14px; color: rgba(255,255,255,.92); font-size: .85rem; font-weight: 750; }
.ds-service-card:hover .ds-service-link { color: var(--ds-gold); }

/* Process */
.ds-process-layout { display: grid; grid-template-columns: .74fr 1.65fr; gap: 38px; align-items: center; }
.ds-process-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.ds-process-card { position: relative; min-height: 370px; overflow: hidden; border: 1px solid rgba(255,255,255,.14); border-radius: 22px; background: rgba(255,255,255,.045); box-shadow: 0 20px 70px rgba(0,0,0,.20); }
.ds-process-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .70; filter: grayscale(1); transition: transform .7s ease, filter .7s ease; }
.ds-process-card:hover img { transform: scale(1.05); filter: grayscale(0); }
.ds-process-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(9,35,61,.30), rgba(9,35,61,.62) 42%, rgba(3,11,21,.90)); }
.ds-process-content { position: absolute; z-index: 2; inset: auto 0 0; padding: 22px; }
.ds-process-content strong { display: block; color: var(--ds-gold); font-size: 2rem; line-height: 1; }
.ds-process-content h3 { margin: 18px 0 0; color: #fff; font-size: 1.12rem; font-weight: 750; }
.ds-process-content p { margin: 9px 0 0; color: rgba(255,255,255,.78); font-size: .86rem; line-height: 1.65; }

/* Stats */
.ds-stats-grid { margin-top: 32px; display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid rgba(0,33,71,.10); border-bottom: 1px solid rgba(0,33,71,.10); }
.ds-stat { min-height: 135px; padding: 28px 18px; display: flex; flex-direction: column; justify-content: center; border-right: 1px solid rgba(0,33,71,.10); }
.ds-stat:last-child { border-right: 0; }
.ds-stat strong { color: var(--ds-gold-dark); font-size: clamp(2.3rem,4vw,4rem); line-height: 1; font-weight: 750; letter-spacing: -.05em; }
.ds-stat span { margin-top: 10px; color: rgba(0,33,71,.70); font-size: .9rem; line-height: 1.45; }

/* Ecosystem */
.ds-marquee { position: relative; width: 100%; overflow: hidden; margin-top: 24px; border-block: 1px solid rgba(255,255,255,.12); padding: 16px 0; mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.ds-marquee-track { display: flex; width: max-content; gap: 16px; animation: ds-marquee-left 34s linear infinite; }
.ds-marquee--reverse .ds-marquee-track { animation-name: ds-marquee-right; animation-duration: 38s; }
.ds-tool { display: inline-flex; align-items: center; gap: 10px; min-width: max-content; padding: 7px 18px; color: rgba(255,255,255,.92); font-size: .92rem; font-weight: 700; }
.ds-tool-mark { display: grid; place-items: center; width: 28px; height: 28px; border: 1px solid rgba(255,255,255,.4); border-radius: 9px; background: rgba(255,255,255,.08); font-size: .65rem; font-weight: 900; }
@keyframes ds-marquee-left { from { transform: translateX(0); } to { transform: translateX(-33.333%); } }
@keyframes ds-marquee-right { from { transform: translateX(-33.333%); } to { transform: translateX(0); } }

/* Portfolio */
.ds-portfolio-grid { margin-top: 34px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.ds-project { overflow: hidden; border: 1px solid rgba(0,33,71,.10); border-radius: 26px; background: #fff; box-shadow: 0 16px 45px rgba(0,33,71,.09); transition: transform .3s ease, box-shadow .3s ease; }
.ds-project:hover { transform: translateY(-5px); box-shadow: 0 22px 60px rgba(0,33,71,.13); }
.ds-project-media { height: 220px; overflow: hidden; }
.ds-project-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
.ds-project:hover .ds-project-media img { transform: scale(1.055); }
.ds-project-body { padding: 27px; }
.ds-project-category { margin: 0; color: var(--ds-gold-dark); font-size: .72rem; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; }
.ds-project h3 { margin: 12px 0 0; color: var(--ds-navy); font-size: 1.45rem; font-weight: 700; letter-spacing: -.02em; }
.ds-project p { margin: 12px 0 0; color: rgba(33,37,41,.68); line-height: 1.7; }
.ds-project a { display: inline-flex; margin-top: 18px; color: var(--ds-navy); font-size: .86rem; font-weight: 750; }
.ds-project a:hover { color: var(--ds-gold-dark); }

/* Contact */
.ds-contact-wrap { padding: 0 0 76px; background: var(--ds-cream); }
.ds-contact { width: min(1160px, calc(100% - 40px)); margin-inline: auto; display: grid; grid-template-columns: .85fr 1.15fr; gap: 34px; padding: 40px; border-radius: 32px; background: var(--ds-navy); color: #fff; box-shadow: 0 30px 70px rgba(0,33,71,.22); }
.ds-contact-info { margin-top: 30px; display: grid; gap: 14px; }
.ds-contact-info a { color: rgba(255,255,255,.82); }
.ds-contact-info a:hover { color: #fff; }
.ds-contact-form .s_website_form_rows { margin: 0; }
.ds-field { margin-bottom: 14px; padding-inline: 7px; }
.ds-field label { display: block; margin-bottom: 6px; color: rgba(255,255,255,.75); font-size: .78rem; font-weight: 650; }
.ds-field input,
.ds-field textarea { width: 100%; border: 1px solid rgba(255,255,255,.10); border-radius: 13px; background: #fff; color: #111827; padding: 13px 15px; outline: none; }
.ds-field textarea { min-height: 125px; resize: vertical; }
.ds-field input:focus,
.ds-field textarea:focus { border-color: var(--ds-gold); box-shadow: 0 0 0 2px rgba(212,175,55,.22); }
.ds-submit { padding-inline: 7px; }
.ds-submit .s_website_form_send { width: 100%; min-height: 52px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 13px; background: var(--ds-gold); color: var(--ds-navy); font-weight: 800; }

/* Footer */
.ds-footer { background: #061523; color: rgba(255,255,255,.74); padding: 58px 0 26px; }
.ds-footer-grid { display: grid; grid-template-columns: 1.25fr .65fr 1fr; gap: 42px; }
.ds-footer-brand { display: flex; align-items: center; gap: 12px; color: #fff; }
.ds-footer-brand img { width: 54px; height: 54px; object-fit: contain; }
.ds-footer h4 { margin: 0 0 15px; color: #fff; font-size: .9rem; font-weight: 750; }
.ds-footer p { max-width: 480px; margin: 18px 0 0; line-height: 1.7; font-size: .9rem; }
.ds-footer-links { display: grid; gap: 9px; }
.ds-footer-links a { color: rgba(255,255,255,.68); font-size: .88rem; }
.ds-footer-links a:hover { color: var(--ds-gold); }
.ds-footer-bottom { margin-top: 38px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.10); font-size: .78rem; }

/* Service detail */
.ds-service-hero { position: relative; min-height: 72vh; display: grid; align-items: end; overflow: hidden; background: var(--ds-navy); color: #fff; }
.ds-service-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ds-service-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,20,40,.25), rgba(0,20,40,.88)); }
.ds-service-hero-inner { position: relative; z-index: 2; width: min(1160px, calc(100% - 40px)); margin: 0 auto; padding: 160px 0 76px; }
.ds-service-hero-number { color: var(--ds-gold); font-size: .8rem; font-weight: 850; letter-spacing: .24em; }
.ds-service-hero h1 { max-width: 850px; margin: 14px 0 0; color: #fff; font-size: clamp(2.7rem, 6vw, 5.2rem); line-height: 1; letter-spacing: -.05em; }
.ds-service-hero p { max-width: 700px; margin: 22px 0 0; color: rgba(255,255,255,.78); font-size: 1.08rem; line-height: 1.75; }
.ds-service-content-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
.ds-service-points { display: grid; gap: 14px; }
.ds-service-point { padding: 18px 20px; border: 1px solid rgba(0,33,71,.10); border-radius: 16px; background: rgba(255,255,255,.65); }
.ds-service-point strong { display: block; color: var(--ds-navy); }
.ds-service-point span { display: block; margin-top: 5px; color: rgba(0,33,71,.67); line-height: 1.6; }

/* Scroll reveal — Odoo 20:
   visible by default; JS activates the animation only when ready. */
.ds-reveal { opacity: 1; transform: none; }
html.ds-animate .ds-reveal {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity .55s ease, transform .55s ease;
}
html.ds-animate .ds-reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
    .ds-reveal { opacity: 1; transform: none; transition: none; }
    .ds-marquee-track { animation: none; }
    * { scroll-behavior: auto !important; }
}


@media (max-width: 1180px) {
    .ds-nav { width: min(1120px, calc(100% - 32px)); gap: 18px; }
    .ds-nav-links { gap: 18px; }
    .ds-cta { padding-inline: 18px; }
    .ds-process-layout { grid-template-columns: .9fr 1.5fr; gap: 28px; }
}

@media (max-width: 1000px) {
    .ds-nav-links, .ds-nav-actions { display: none; }
    .ds-mobile-toggle { display: inline-flex; }
    .ds-services-grid { grid-template-columns: repeat(2, 1fr); }
    .ds-service-card { border-right: 1px solid rgba(255,255,255,.10) !important; border-bottom: 1px solid rgba(255,255,255,.10) !important; }
    .ds-service-card:nth-child(2n) { border-right: 0 !important; }
    .ds-service-card:nth-last-child(-n+2) { border-bottom: 0 !important; }
    .ds-process-layout { grid-template-columns: 1fr; }
    .ds-process-cards { grid-template-columns: repeat(2, 1fr); }
    .ds-stats-grid { grid-template-columns: repeat(2, 1fr); }
    .ds-stat:nth-child(2) { border-right: 0; }
    .ds-stat:nth-child(-n+2) { border-bottom: 1px solid rgba(0,33,71,.10); }
    .ds-portfolio-grid { grid-template-columns: 1fr 1fr; }
    .ds-contact { grid-template-columns: 1fr; }
    .ds-footer-grid { grid-template-columns: 1fr 1fr; }
    .ds-footer-grid > :first-child { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
    .ds-container, .ds-nav, .ds-contact, .ds-service-hero-inner { width: min(calc(100% - 30px), 1160px); }
    .ds-section { padding: 52px 0; }
    .ds-section--compact { padding: 44px 0; }
    .ds-title { font-size: clamp(1.85rem, 8vw, 2.5rem); }
    .ds-subtitle { font-size: .98rem; line-height: 1.65; }
    .ds-brand-copy { display: none; }
    .ds-brand-logo { width: 48px; height: 48px; }
    .ds-nav { min-height: 70px; }
    .ds-btn { width: 100%; max-width: 340px; }
    .ds-services-grid { grid-template-columns: 1fr; border-radius: 22px; }
    .ds-service-card { min-height: 210px; border-right: 0 !important; border-bottom: 1px solid rgba(255,255,255,.10) !important; }
    .ds-service-card:last-child { border-bottom: 0 !important; }
    .ds-process-cards { grid-template-columns: 1fr; }
    .ds-process-card { min-height: 330px; }
    .ds-stats-grid { grid-template-columns: 1fr; }
    .ds-stat { border-right: 0; border-bottom: 1px solid rgba(0,33,71,.10); text-align: center; align-items: center; }
    .ds-stat:last-child { border-bottom: 0; }
    .ds-portfolio-grid { grid-template-columns: 1fr; }
    .ds-contact { padding: 28px 18px; border-radius: 22px; gap: 22px; }
    .ds-contact-wrap { padding-bottom: 52px; }
    .ds-field { padding-inline: 0; }
    .ds-submit { padding-inline: 0; }
    .ds-footer { padding-top: 46px; }
    .ds-footer-grid { grid-template-columns: 1fr; }
    .ds-footer-grid > :first-child { grid-column: auto; }
    .ds-service-content-grid { grid-template-columns: 1fr; gap: 28px; }
    .ds-service-hero { min-height: 64vh; }
}

@media (max-width: 430px) {
    .ds-nav { min-height: 66px; }
    .ds-brand-logo { width: 44px; height: 44px; }
    .ds-mobile-toggle { padding: 8px 10px; }
    .ds-service-card { min-height: 190px; }
    .ds-process-card { min-height: 300px; }
    .ds-project-media { height: 190px; }
}


.ds-mobile-language {
    display: inline-flex;
    width: fit-content;
    align-items: center;
    gap: 3px;
    padding: 4px;
    border: 1px solid rgba(0,33,71,.10);
    border-radius: 999px;
    background: #fff;
}
.ds-mobile-language span {
    padding: 6px 10px;
    border-radius: 999px;
    color: rgba(0,33,71,.62);
    font-size: .74rem;
    font-weight: 750;
}
.ds-mobile-language .is-active { background: var(--ds-navy); color: #fff; }

.ds-whatsapp-float {
    position: fixed;
    z-index: 1050;
    right: 24px;
    bottom: 24px;
    width: 64px;
    height: 64px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: transparent;
    filter: drop-shadow(0 14px 25px rgba(0,33,71,.20));
    transition: transform .22s ease, filter .22s ease;
}
.ds-whatsapp-float:hover {
    transform: translateY(-4px) scale(1.04);
    filter: drop-shadow(0 18px 30px rgba(0,33,71,.28));
}
.ds-whatsapp-icon {
    display: block;
    width: 64px;
    height: 64px;
    object-fit: contain;
}

@media (max-width: 760px) {
    .ds-hero-grid { background-size: 58px 58px; opacity: .09; }
    .ds-hero-vector { width: 122%; height: 112%; left: -11%; }
    .ds-hero-content { padding: 118px 0 86px; }
    .ds-hero-eyebrow { margin-bottom: 16px; font-size: .64rem; letter-spacing: .21em; }
    .ds-hero h1 { font-size: clamp(2.45rem, 11.8vw, 4rem); }
    .ds-hero-kicker { max-width: 540px; font-size: .95rem; }
    .ds-scroll-cue { display: none; }
    .ds-whatsapp-float { right: 16px; bottom: 18px; width: 56px; height: 56px; }
    .ds-whatsapp-float svg { width: 56px; height: 56px; }
}

@media (max-width: 430px) {
    .ds-hero { min-height: 86svh; }
    .ds-hero-content { padding-top: 108px; }
    .ds-hero h1 { font-size: clamp(2.22rem, 11.3vw, 3.25rem); }
}


/* Website Builder v0.7 */
.ds-builder-media-grid {
    display: grid;
    grid-template-columns: .85fr 1.15fr;
    align-items: center;
    gap: 44px;
}
.ds-builder-media-frame {
    margin: 0;
    overflow: hidden;
    min-height: 360px;
    border-radius: 28px;
    background: #061523;
    box-shadow: 0 24px 65px rgba(0,33,71,.14);
}
.ds-builder-media-frame img {
    width: 100%;
    height: 100%;
    min-height: 360px;
    object-fit: cover;
}
.ds-builder-cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}
.ds-hero--builder { min-height: 78svh; }

@media (max-width: 760px) {
    .ds-builder-media-grid { grid-template-columns: 1fr; gap: 24px; }
    .ds-builder-media-frame, .ds-builder-media-frame img { min-height: 260px; }
    .ds-builder-cta { align-items: flex-start; flex-direction: column; }
    .ds-whatsapp-float { right: 14px; bottom: 16px; width: 56px; height: 56px; }
    .ds-whatsapp-icon { width: 56px; height: 56px; }
}


/* v0.8 - Website Builder stability */
.o_editable .dsolution-page > section,
.o_editable .dsolution-page .ds-contact-wrap {
    visibility: visible;
}


/* v0.9 - Editable media */
.ds-process-card > img.o_we_custom_image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.ds-project-media > img.o_we_custom_image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.o_editable img.o_we_custom_image {
    cursor: pointer;
}


/* v0.10 — modo de edición de medios
   En el editor, las fotos dejan temporalmente de funcionar como "background visual"
   y pasan a una zona separada para que sea fácil seleccionarlas/reemplazarlas. */
body.editor_enable .ds-process-card {
    min-height: 0 !important;
    overflow: hidden;
    background: #071522;
}
body.editor_enable .ds-process-card > img.o_we_custom_image {
    position: relative !important;
    inset: auto !important;
    z-index: 5 !important;
    width: 100% !important;
    height: 180px !important;
    min-height: 180px !important;
    object-fit: cover !important;
    opacity: 1 !important;
    filter: none !important;
    cursor: pointer !important;
}
body.editor_enable .ds-process-content {
    position: relative !important;
    z-index: 2 !important;
    min-height: 190px;
    background: linear-gradient(180deg, #0c2235, #06121d);
}
body.editor_enable .ds-process-card::after {
    content: "Haz clic en la foto para cambiarla";
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 7;
    padding: 5px 8px;
    border-radius: 999px;
    background: rgba(0, 33, 71, .86);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    pointer-events: none;
}

body.editor_enable .ds-service-card {
    min-height: 0 !important;
    display: block !important;
    overflow: hidden;
    background: #080d12;
}
body.editor_enable .ds-service-card > img.o_we_custom_image {
    position: relative !important;
    inset: auto !important;
    z-index: 5 !important;
    width: 100% !important;
    height: 165px !important;
    min-height: 165px !important;
    object-fit: cover !important;
    opacity: 1 !important;
    filter: none !important;
    cursor: pointer !important;
}
body.editor_enable .ds-service-content {
    position: relative !important;
    z-index: 2 !important;
    min-height: 118px;
    background: #080d12;
}
body.editor_enable .ds-service-card::after {
    content: "Imagen editable";
    position: absolute;
    top: 9px;
    left: 9px;
    z-index: 7;
    padding: 5px 8px;
    border-radius: 999px;
    background: rgba(0, 33, 71, .86);
    color: white;
    font-size: 10px;
    font-weight: 700;
    pointer-events: none;
}

body.editor_enable .ds-project-media {
    position: relative;
    outline: 2px dashed rgba(212, 175, 55, .55);
    outline-offset: -3px;
}
body.editor_enable .ds-project-media::after {
    content: "Imagen editable";
    position: absolute;
    top: 9px;
    left: 9px;
    z-index: 6;
    padding: 5px 8px;
    border-radius: 999px;
    background: rgba(0, 33, 71, .86);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    pointer-events: none;
}
body.editor_enable .ds-project-media > img.o_we_custom_image {
    cursor: pointer !important;
    position: relative;
    z-index: 5;
}

/* Galería reutilizable */
.ds-gallery-section { background: #f7f3ea; }
.ds-gallery-heading { max-width: 760px; margin-bottom: 28px; }
.ds-gallery-grid {
    display: grid;
    grid-template-columns: 1.15fr .85fr .85fr;
    gap: 16px;
}
.ds-gallery-item {
    margin: 0;
    min-height: 360px;
    overflow: hidden;
    border-radius: 24px;
    background: #071522;
    box-shadow: 0 18px 48px rgba(0,33,71,.10);
}
.ds-gallery-item img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 360px;
    object-fit: cover;
}
@media (max-width: 850px) {
    .ds-gallery-grid { grid-template-columns: 1fr; }
    .ds-gallery-item, .ds-gallery-item img { min-height: 260px; }
}
\n\n/* v0.11 — páginas de servicio editables */
.ds-service-gallery-section{background:#f7f3ea}.ds-service-gallery-heading{max-width:760px;margin-bottom:28px}.ds-service-gallery-grid{display:grid;grid-template-columns:1.15fr .85fr .85fr;gap:16px}.ds-service-gallery-item{margin:0;min-height:330px;overflow:hidden;border-radius:24px;background:#071522;box-shadow:0 18px 48px rgba(0,33,71,.10)}.ds-service-gallery-item img{display:block;width:100%;height:100%;min-height:330px;object-fit:cover}
body.editor_enable .ds-service-hero--editable{display:block;min-height:0!important;background:#061523;overflow:hidden}body.editor_enable .ds-service-hero--editable>img.o_we_custom_image{position:relative!important;inset:auto!important;display:block!important;width:100%!important;height:320px!important;min-height:320px!important;object-fit:cover!important;opacity:1!important;filter:none!important;cursor:pointer!important;z-index:5!important}body.editor_enable .ds-service-hero--editable .ds-service-hero-inner{position:relative!important;inset:auto!important;min-height:360px;padding-top:54px;padding-bottom:54px;background:linear-gradient(180deg,#0a2134,#061523);z-index:2}body.editor_enable .ds-service-hero--editable::after{content:"Imagen principal editable";position:absolute;top:12px;left:12px;z-index:8;padding:6px 10px;border-radius:999px;background:rgba(0,33,71,.88);color:#fff;font-size:11px;font-weight:700;pointer-events:none}body.editor_enable .ds-service-gallery-item{outline:2px dashed rgba(212,175,55,.48);outline-offset:-3px}body.editor_enable .ds-service-gallery-item img.o_we_custom_image{cursor:pointer!important}
@media(max-width:850px){.ds-service-gallery-grid{grid-template-columns:1fr}.ds-service-gallery-item,.ds-service-gallery-item img{min-height:250px}body.editor_enable .ds-service-hero--editable>img.o_we_custom_image{height:240px!important;min-height:240px!important}}


/* ==========================================================
   v0.12 — Home fiel a d-solution.org
   Hero de vídeo original + selector de idioma nativo Odoo
   ========================================================== */

.ds-hero--video {
    position: relative;
    min-height: 100svh;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: #061523;
}
.ds-hero--video::after {
    display: none;
}
.ds-hero-video {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.ds-hero-video-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(180deg, rgba(0,0,0,.54), rgba(0,0,0,.34) 45%, rgba(0,0,0,.55)),
        linear-gradient(90deg, rgba(0,33,71,.30), rgba(0,33,71,.08), rgba(0,33,71,.30));
    pointer-events: none;
}
.ds-hero--video .ds-hero-content {
    position: relative;
    z-index: 2;
    width: min(1100px, calc(100% - 40px));
    min-height: 100svh;
    padding: 120px 0 90px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.ds-hero--video h1 {
    margin: 0;
    max-width: 980px;
    color: #fff;
    font-size: clamp(2.7rem, 5.3vw, 5.3rem);
    line-height: 1.03;
    letter-spacing: -.045em;
    text-shadow: 0 18px 45px rgba(0,0,0,.34);
}
.ds-hero--video h1 strong {
    display: block;
    font-weight: 800;
}
.ds-hero--video h1 span {
    display: block;
    font-weight: 400;
    letter-spacing: -.035em;
    color: rgba(255,255,255,.96);
}

/* En edición no dejamos que el vídeo capture clics; el título sigue editable. */
body.editor_enable .ds-hero-video {
    pointer-events: none;
}
body.editor_enable .ds-hero--video {
    outline: 2px dashed rgba(212,175,55,.45);
    outline-offset: -2px;
}

/* Idioma nativo de Odoo, visualmente cercano al ES/EN original. */
.ds-language-wrap,
.ds-mobile-language-wrap {
    position: relative;
    display: flex;
    align-items: center;
}
.ds-language-native {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    margin: 0;
    padding: 3px;
    border: 1px solid rgba(255,255,255,.22);
    border-radius: 999px;
    background: rgba(0,33,71,.28);
    color: #fff;
    backdrop-filter: blur(12px);
}
.ds-header.is-scrolled .ds-language-native,
.dsolution-service-page .ds-language-native {
    border-color: rgba(0,33,71,.12);
    background: rgba(255,255,255,.88);
    color: #002147;
}
.ds-language-native a,
.ds-language-native .nav-link,
.ds-language-native .dropdown-item {
    text-decoration: none !important;
    font-size: .75rem !important;
    font-weight: 800 !important;
}
.ds-language-native .js_change_lang,
.ds-language-native a {
    border-radius: 999px;
    padding: 6px 9px !important;
}
.ds-language-native .active,
.ds-language-native [aria-current="true"] {
    background: #002147;
    color: #fff !important;
}
.ds-language-fallback {
    display: inline-flex;
    gap: 2px;
    align-items: center;
    padding: 3px;
    border: 1px solid rgba(255,255,255,.22);
    border-radius: 999px;
    background: rgba(0,33,71,.28);
    color: #fff;
}
.ds-language-fallback span {
    padding: 6px 9px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 800;
}
.ds-language-fallback .is-active {
    background: #fff;
    color: #002147;
}
.ds-header.is-scrolled .ds-language-fallback,
.dsolution-service-page .ds-language-fallback {
    border-color: rgba(0,33,71,.12);
    background: rgba(255,255,255,.88);
    color: #002147;
}
.ds-header.is-scrolled .ds-language-fallback .is-active,
.dsolution-service-page .ds-language-fallback .is-active {
    background: #002147;
    color: #fff;
}
/* Cuando Odoo ya tiene 2+ idiomas, ocultamos el fallback visual. */
.ds-language-wrap:has(.js_language_selector) .ds-language-fallback,
.ds-mobile-language-wrap:has(.js_language_selector) .ds-language-fallback {
    display: none;
}
.ds-language-native--mobile {
    margin: 8px 0;
    border-color: rgba(0,33,71,.12);
    background: #fff;
    color: #002147;
}

@media (max-width: 767px) {
    .ds-hero--video,
    .ds-hero--video .ds-hero-content {
        min-height: 86svh;
    }
    .ds-hero--video .ds-hero-content {
        width: min(100% - 30px, 720px);
        padding: 100px 0 70px;
    }
    .ds-hero--video h1 {
        font-size: clamp(2.35rem, 11vw, 3.65rem);
        line-height: 1.04;
    }
}


/* ==========================================================
   v0.13 — Hero media gestionado por Odoo
   ========================================================== */

/* La capa de video/imagen queda debajo del contenido. */
.ds-hero--video .ds-hero-video,
.ds-hero--image .ds-hero-video {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.ds-hero--video .ds-hero-video-overlay,
.ds-hero--image .ds-hero-video-overlay {
    display: block;
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(180deg, rgba(0,0,0,.56), rgba(0,0,0,.34) 45%, rgba(0,0,0,.57)),
        linear-gradient(90deg, rgba(0,33,71,.28), rgba(0,33,71,.08), rgba(0,33,71,.28));
    pointer-events: none;
}
.ds-hero--vector-mode .ds-hero-video-overlay {
    display: none;
}
.ds-hero--video .ds-hero-content,
.ds-hero--image .ds-hero-content,
.ds-hero--vector-mode .ds-hero-content {
    position: relative;
    z-index: 2;
}

/* Selector ES/EN real de Odoo */
.ds-language-native a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    min-height: 32px;
    padding: 6px 9px;
    border-radius: 999px;
    color: inherit;
    text-decoration: none !important;
    font-size: .75rem;
    font-weight: 800;
    line-height: 1;
}
.ds-language-native a.is-active {
    background: #fff;
    color: #002147 !important;
}
.ds-header.is-scrolled .ds-language-native a.is-active,
.dsolution-service-page .ds-language-native a.is-active,
.ds-language-native--mobile a.is-active {
    background: #002147;
    color: #fff !important;
}


/* ==========================================================
   v0.14 — header, chevron y responsive final
   ========================================================== */

/* Servicios: chevron limpio y alineado como en la web original */
.ds-services-wrap {
    gap: 2px;
}
.ds-services-toggle {
    width: 24px;
    height: 28px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border-radius: 999px;
    transition: color .2s ease, background .2s ease;
}
.ds-services-toggle:hover,
.ds-services-toggle:focus-visible {
    background: rgba(255,255,255,.10);
    outline: none;
}
.ds-header.is-scrolled .ds-services-toggle:hover,
.ds-header.is-menu-open .ds-services-toggle:hover,
.dsolution-service-page .ds-services-toggle:hover {
    background: rgba(0,33,71,.07);
}
.ds-services-chevron {
    display: block;
    flex: 0 0 auto;
    transition: transform .22s ease;
}
.ds-services-toggle[aria-expanded="true"] .ds-services-chevron {
    transform: rotate(180deg);
}

/* Desktop grande */
@media (min-width: 1181px) {
    .ds-nav {
        width: min(1240px, calc(100% - 48px));
    }
}

/* Laptop / tablet horizontal: evitamos que el header quede apretado */
@media (max-width: 1180px) and (min-width: 1101px) {
    .ds-nav {
        width: min(1120px, calc(100% - 28px));
        gap: 14px;
    }
    .ds-nav-links {
        gap: 15px;
    }
    .ds-nav-links > a,
    .ds-services-wrap > a {
        font-size: .84rem;
    }
    .ds-brand {
        gap: 9px;
    }
    .ds-brand-logo {
        width: 48px;
        height: 48px;
    }
    .ds-brand-tagline {
        max-width: 240px;
        font-size: .47rem;
        letter-spacing: .09em;
    }
    .ds-cta {
        min-height: 46px;
        padding-inline: 17px;
        font-size: .81rem;
    }
}

/* A partir de 1100 px usamos el menú móvil para no comprimir el header */
@media (max-width: 1100px) {
    .ds-nav-links,
    .ds-nav-actions {
        display: none !important;
    }
    .ds-mobile-toggle {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
    }
    .ds-nav {
        width: min(100% - 32px, 1080px);
    }
    .ds-mobile-menu {
        max-height: calc(100svh - 78px);
        overflow-y: auto;
        overscroll-behavior: contain;
        box-shadow: 0 24px 50px rgba(0,33,71,.12);
    }
}

/* Tablet */
@media (max-width: 900px) {
    .ds-section {
        padding: 58px 0;
    }
    .ds-section--compact {
        padding: 48px 0;
    }
    .ds-process-layout {
        grid-template-columns: 1fr;
        gap: 28px;
    }
    .ds-process-intro {
        max-width: 680px;
    }
    .ds-process-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .ds-portfolio-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .ds-contact {
        grid-template-columns: 1fr;
    }
    .ds-footer-grid {
        grid-template-columns: 1fr 1fr;
    }
    .ds-footer-grid > :first-child {
        grid-column: 1 / -1;
    }
}

/* Tablet vertical / móvil grande */
@media (max-width: 760px) {
    .ds-nav {
        width: calc(100% - 24px);
        min-height: 70px;
    }
    .ds-brand-logo {
        width: 46px;
        height: 46px;
    }
    .ds-mobile-toggle {
        min-width: 44px;
        min-height: 44px;
        padding: 8px 11px;
    }
    .ds-mobile-menu {
        padding: 16px 18px 22px;
        gap: 13px;
        max-height: calc(100svh - 70px);
    }
    .ds-mobile-menu > a {
        min-height: 38px;
        display: flex;
        align-items: center;
    }
    .ds-mobile-submenu {
        margin: 0 0 4px 4px;
        padding: 6px 0 6px 14px;
    }

    /* Hero: vídeo a pantalla completa y texto dentro de zona segura */
    .ds-hero--video,
    .ds-hero--image,
    .ds-hero--vector-mode {
        min-height: 92svh;
    }
    .ds-hero--video .ds-hero-video,
    .ds-hero--image .ds-hero-video {
        object-position: 50% 50%;
    }
    .ds-hero--video .ds-hero-content,
    .ds-hero--image .ds-hero-content,
    .ds-hero--vector-mode .ds-hero-content {
        width: min(calc(100% - 30px), 680px);
        min-height: 92svh;
        padding: 104px 0 72px;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .ds-hero h1,
    .ds-hero--video h1 {
        max-width: 100%;
        font-size: clamp(2.25rem, 10.5vw, 3.7rem);
        line-height: 1.03;
    }

    .ds-services-grid {
        grid-template-columns: 1fr;
    }
    .ds-process-cards,
    .ds-portfolio-grid,
    .ds-stats-grid {
        grid-template-columns: 1fr;
    }
    .ds-contact {
        padding: 26px 18px;
    }
    .ds-footer-grid {
        grid-template-columns: 1fr;
    }
    .ds-footer-grid > :first-child {
        grid-column: auto;
    }
}

/* Móvil estrecho */
@media (max-width: 430px) {
    .ds-nav {
        width: calc(100% - 20px);
        min-height: 66px;
    }
    .ds-brand-logo {
        width: 43px;
        height: 43px;
    }
    .ds-mobile-toggle {
        min-width: 42px;
        min-height: 42px;
        font-size: 1.08rem;
    }
    .ds-hero--video,
    .ds-hero--image,
    .ds-hero--vector-mode,
    .ds-hero--video .ds-hero-content,
    .ds-hero--image .ds-hero-content,
    .ds-hero--vector-mode .ds-hero-content {
        min-height: 88svh;
    }
    .ds-hero h1,
    .ds-hero--video h1 {
        font-size: clamp(2.05rem, 10.8vw, 3.05rem);
    }
    .ds-service-card {
        min-height: 200px;
    }
    .ds-process-card {
        min-height: 300px;
    }
    .ds-whatsapp-float {
        right: 14px;
        bottom: 14px;
        width: 54px;
        height: 54px;
    }
    .ds-whatsapp-icon {
        width: 54px;
        height: 54px;
    }
}


/* v0.15 — Intro Loader + Marketing Digital */
.ds-intro-loader{display:flex;position:fixed;inset:0;z-index:99999;align-items:center;justify-content:center;background:#F7F3EA;color:#002147;opacity:1;transition:opacity .26s ease}.ds-intro-loader.is-visible{display:flex;opacity:1}.ds-intro-loader.is-leaving{opacity:0;pointer-events:none}.ds-intro-loader-inner{display:flex;flex-direction:column;align-items:center;text-align:center}.ds-intro-loader-logo{width:112px;height:auto;object-fit:contain;animation:ds-intro-fade .7s ease both}.ds-intro-loader-line{width:128px;height:2px;margin-top:32px;overflow:hidden;border-radius:999px;background:rgba(212,175,55,.20)}.ds-intro-loader-line span{display:block;width:100%;height:100%;transform-origin:left center;border-radius:inherit;background:#D4AF37;animation:ds-intro-line 1.1s ease .15s both}.ds-intro-loader p{margin:20px 18px 0;color:rgba(33,37,41,.80);font-size:.72rem;font-weight:800;line-height:1.4;letter-spacing:.24em;text-transform:uppercase}@keyframes ds-intro-fade{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ds-intro-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.dsolution-marketing-page{background:#F7F3EA}.ds-md-hero{position:relative;min-height:820px;padding:118px 0 42px;overflow:hidden;background:#020912;color:#fff}.ds-md-hero-image{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:center}.ds-md-hero-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(2,9,18,.96) 0%,rgba(2,9,18,.88) 38%,rgba(2,9,18,.58) 62%,rgba(2,9,18,.12) 100%),linear-gradient(180deg,rgba(2,9,18,.10),rgba(2,9,18,.36))}.ds-md-hero-content{position:relative;z-index:2;min-height:500px;display:grid;align-items:center}.ds-md-hero-copy{max-width:560px}.ds-md-hero-copy .ds-eyebrow{color:#D4AF37}.ds-md-hero-copy h1{margin:20px 0 0;color:#fff;font-size:clamp(3.6rem,6vw,6.8rem);line-height:.91;font-weight:850;letter-spacing:-.065em}.ds-md-hero-copy h1 span{display:block;color:#D4AF37}.ds-md-gold-line{display:block;width:64px;height:2px;margin-top:24px;background:#D4AF37}.ds-md-lead{max-width:520px;margin:24px 0 0;color:rgba(255,255,255,.88);font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.72}.ds-md-hero-cta{display:inline-flex;align-items:center;gap:12px;min-height:56px;margin-top:30px;padding:0 24px;border-radius:12px;background:#D4AF37;color:#002147!important;font-weight:800;box-shadow:0 20px 42px rgba(212,175,55,.22);transition:transform .2s ease,background .2s ease}.ds-md-hero-cta:hover{transform:translateY(-2px);background:#fff}
.ds-md-services-panel{position:relative;z-index:3;margin-top:-76px;padding:26px 28px 24px;border:1px solid rgba(255,255,255,.23);border-radius:28px;background:rgba(5,18,31,.90);box-shadow:0 34px 75px rgba(0,0,0,.33);backdrop-filter:blur(18px)}.ds-md-panel-title{display:flex;align-items:center;gap:18px;margin-bottom:18px}.ds-md-panel-title span{flex:0 0 auto;color:#D4AF37;font-size:.72rem;font-weight:850;letter-spacing:.20em;text-transform:uppercase}.ds-md-panel-title i{height:1px;flex:1;background:linear-gradient(90deg,rgba(212,175,55,.55),transparent)}.ds-md-services-grid{display:grid;grid-template-columns:repeat(4,1fr)}.ds-md-service-item{display:grid;grid-template-columns:56px 1fr;gap:16px;min-width:0;padding:16px 20px;border-right:1px solid rgba(255,255,255,.10)}.ds-md-service-item:last-child{border-right:0}.ds-md-service-item h3{margin:0;color:#fff;font-size:.96rem;font-weight:800}.ds-md-service-item p{margin:9px 0 0;color:rgba(255,255,255,.74);font-size:.82rem;line-height:1.62}.ds-md-service-icon{width:54px;height:54px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.10);border-radius:16px;background:rgba(255,255,255,.06);font-weight:900}.ds-md-service-icon--ads{color:#4285F4;font-size:1.7rem}.ds-md-service-icon--meta{color:#1877F2;font-size:2rem}.ds-md-service-icon--analytics{color:#F9AB00;font-size:1.7rem}.ds-md-service-icon--gtm{color:#D4AF37;font-size:.78rem}
.ds-md-includes{padding:80px 0 88px;background:#fff}.ds-md-section-heading{text-align:center}.ds-md-section-heading h2{margin:0;color:#071522;font-size:clamp(2rem,3.3vw,3rem);font-weight:850;letter-spacing:-.045em;text-transform:uppercase}.ds-md-section-heading i{display:block;width:50px;height:2px;margin:14px auto 0;background:#D4AF37}.ds-md-includes-shell{margin-top:36px;padding:20px;border-radius:30px;background:#F7F3EA;box-shadow:0 22px 58px rgba(0,33,71,.08)}.ds-md-includes-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.ds-md-include-card{min-height:300px;padding:24px 20px 22px;border-radius:18px;background:#fff;box-shadow:0 12px 30px rgba(0,33,71,.05)}.ds-md-include-top{display:flex;align-items:center;justify-content:space-between}.ds-md-mini-icon{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(0,33,71,.07);border-radius:13px;background:#F7F3EA;color:#002147;font-weight:800}.ds-md-include-top b{color:#D4AF37;font-size:1.22rem}.ds-md-include-card h3{margin:24px 0 0;color:#071522;font-size:1.15rem;line-height:1.15;font-weight:850}.ds-md-include-card p{margin:16px 0 0;color:rgba(16,24,40,.70);font-size:.94rem;line-height:1.7}
.ds-md-audience{padding:76px 0 82px;background:linear-gradient(145deg,#03090F,#07131D)}.ds-md-section-heading--dark h2{color:#fff}.ds-md-audience-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:34px}.ds-md-audience-card{position:relative;min-height:390px;overflow:hidden;border-radius:28px;background:#071522}.ds-md-audience-card>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.ds-md-audience-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(1,8,16,.18),rgba(1,8,16,.88))}.ds-md-audience-copy{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;padding:26px}.ds-md-audience-icon{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:18px;border-radius:999px;background:#D4AF37;color:#002147;font-weight:900}.ds-md-audience-copy h3{margin:0;color:#fff;font-size:1.4rem;font-weight:850}.ds-md-audience-copy i{width:34px;height:2px;margin:13px 0 0;background:#D4AF37}.ds-md-audience-copy p{margin:14px 0 0;max-width:290px;color:rgba(255,255,255,.82);font-size:.9rem;line-height:1.6}.ds-md-audience-copy b{margin-top:20px;color:#D4AF37;font-size:2rem;line-height:1}
body.editor_enable .ds-md-hero{display:block;min-height:0;padding-top:0}body.editor_enable .ds-md-hero>img.o_we_custom_image{position:relative!important;inset:auto!important;z-index:5!important;display:block!important;width:100%!important;height:360px!important;object-fit:cover!important;opacity:1!important;cursor:pointer!important}body.editor_enable .ds-md-hero-shade{display:none}body.editor_enable .ds-md-hero-content{min-height:420px;padding-top:40px;padding-bottom:120px;background:#020912}body.editor_enable .ds-md-services-panel{margin-top:-72px}body.editor_enable .ds-md-hero::after{content:"Imagen principal editable";position:absolute;top:14px;left:14px;z-index:8;padding:6px 10px;border-radius:999px;background:rgba(0,33,71,.88);color:#fff;font-size:11px;font-weight:800;pointer-events:none}body.editor_enable .ds-md-audience-card{display:block;min-height:0;background:#071522}body.editor_enable .ds-md-audience-card>img.o_we_custom_image{position:relative!important;inset:auto!important;z-index:5!important;display:block!important;width:100%!important;height:240px!important;object-fit:cover!important;cursor:pointer!important}body.editor_enable .ds-md-audience-overlay{display:none}body.editor_enable .ds-md-audience-copy{position:relative;min-height:300px;background:#071522}
@media(max-width:1050px){.ds-md-hero{min-height:760px}.ds-md-services-grid{grid-template-columns:repeat(2,1fr)}.ds-md-service-item:nth-child(2){border-right:0}.ds-md-service-item:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.10)}.ds-md-includes-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.ds-intro-loader-logo{width:96px}.ds-intro-loader p{font-size:.62rem;letter-spacing:.18em}.ds-md-hero{min-height:0;padding:98px 0 30px}.ds-md-hero-shade{background:linear-gradient(180deg,rgba(2,9,18,.68),rgba(2,9,18,.92))}.ds-md-hero-content{min-height:480px}.ds-md-hero-copy{max-width:100%}.ds-md-hero-copy h1{font-size:clamp(3rem,15vw,5rem)}.ds-md-services-panel{margin-top:20px;padding:22px 16px}.ds-md-services-grid{grid-template-columns:1fr}.ds-md-service-item{grid-template-columns:50px 1fr;padding:16px 8px;border-right:0!important;border-bottom:1px solid rgba(255,255,255,.10)}.ds-md-service-item:last-child{border-bottom:0}.ds-md-includes{padding:60px 0 64px}.ds-md-includes-grid{grid-template-columns:1fr}.ds-md-include-card{min-height:0}.ds-md-audience{padding:60px 0 64px}.ds-md-audience-grid{grid-template-columns:1fr}.ds-md-audience-card{min-height:360px}}
@media(prefers-reduced-motion:reduce){.ds-intro-loader-logo,.ds-intro-loader-line span{animation:none!important}}


/* ==========================================================
   v0.16 — Marketing hero photo + editable service brand marks
   ========================================================== */

.ds-md-hero-image {
    object-position: center 48%;
}

/* Logo boxes */
.ds-md-service-logo {
    width: 56px;
    height: 56px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 56px;
}
.ds-md-service-logo img {
    display: block;
    width: 56px;
    height: 56px;
    object-fit: contain;
    border-radius: 16px;
}

/* Old text-icon classes are no longer used in v0.16. */
.ds-md-service-icon {
    display: none !important;
}

/* Editing: make hero and brand marks easy to replace using Odoo's image selector */
body.editor_enable .ds-md-service-logo {
    position: relative;
    outline: 2px dashed rgba(212,175,55,.48);
    outline-offset: 3px;
    border-radius: 16px;
}
body.editor_enable .ds-md-service-logo::after {
    content: "Logo editable";
    position: absolute;
    left: 50%;
    top: -25px;
    transform: translateX(-50%);
    white-space: nowrap;
    padding: 3px 7px;
    border-radius: 999px;
    background: rgba(0,33,71,.88);
    color: #fff;
    font-size: 9px;
    font-weight: 800;
    pointer-events: none;
}
body.editor_enable .ds-md-service-logo img.o_we_custom_image {
    cursor: pointer !important;
}

/* Hero: in editor, clearly expose the underlying image for replacement */
body.editor_enable .ds-md-hero > img.o_we_custom_image.ds-md-hero-image {
    outline: 3px dashed rgba(212,175,55,.55);
    outline-offset: -5px;
}

/* Better logo/text alignment on the services panel */
.ds-md-service-item {
    align-items: center;
}
.ds-md-service-item > div:last-child {
    align-self: center;
}

/* Tablet/mobile */
@media (max-width: 760px) {
    .ds-md-service-logo,
    .ds-md-service-logo img {
        width: 50px;
        height: 50px;
    }
    .ds-md-service-logo {
        flex-basis: 50px;
    }
}


/* ==========================================================
   v0.17 — Advanced D-Solution Website Builder options
   Persisted classes applied by Odoo's native Builder options.
   ========================================================== */

/* Text tracking */
.ds-track-tight { letter-spacing: -.03em !important; }
.ds-track-normal { letter-spacing: 0 !important; }
.ds-track-wide { letter-spacing: .04em !important; }
.ds-track-wider { letter-spacing: .08em !important; }

/* Line height */
.ds-leading-tight { line-height: 1 !important; }
.ds-leading-normal { line-height: 1.25 !important; }
.ds-leading-relaxed { line-height: 1.55 !important; }
.ds-leading-loose { line-height: 1.8 !important; }

/* Font weight */
.ds-weight-400 { font-weight: 400 !important; }
.ds-weight-500 { font-weight: 500 !important; }
.ds-weight-650 { font-weight: 650 !important; }
.ds-weight-800 { font-weight: 800 !important; }

/* Text transform */
.ds-case-normal { text-transform: none !important; }
.ds-case-upper { text-transform: uppercase !important; }
.ds-case-lower { text-transform: lowercase !important; }
.ds-case-capitalize { text-transform: capitalize !important; }

/* Text width */
.ds-text-w-480 { max-width: 480px !important; }
.ds-text-w-680 { max-width: 680px !important; }
.ds-text-w-900 { max-width: 900px !important; }
.ds-text-w-full { max-width: 100% !important; width: 100% !important; }

/* Brand quick colors */
.ds-color-navy { color: #002147 !important; }
.ds-color-gold { color: #D4AF37 !important; }
.ds-color-white { color: #fff !important; }
.ds-color-muted { color: rgba(16,24,40,.66) !important; }

/* Opacity */
.ds-opacity-60 { opacity: .60 !important; }
.ds-opacity-80 { opacity: .80 !important; }
.ds-opacity-90 { opacity: .90 !important; }
.ds-opacity-100 { opacity: 1 !important; }

/* Box radius */
.ds-radius-none { border-radius: 0 !important; }
.ds-radius-sm { border-radius: 10px !important; }
.ds-radius-md { border-radius: 18px !important; }
.ds-radius-lg { border-radius: 28px !important; }
.ds-radius-pill { border-radius: 999px !important; }

/* Shadows */
.ds-shadow-none { box-shadow: none !important; }
.ds-shadow-soft { box-shadow: 0 10px 28px rgba(0,33,71,.08) !important; }
.ds-shadow-medium { box-shadow: 0 18px 46px rgba(0,33,71,.15) !important; }
.ds-shadow-strong { box-shadow: 0 28px 70px rgba(0,33,71,.24) !important; }

/* Images */
.ds-img-radius-none { border-radius: 0 !important; }
.ds-img-radius-sm { border-radius: 12px !important; }
.ds-img-radius-lg { border-radius: 24px !important; }
.ds-img-radius-round { border-radius: 999px !important; aspect-ratio: 1 / 1; object-fit: cover !important; }

.ds-img-cover { object-fit: cover !important; }
.ds-img-contain { object-fit: contain !important; }
.ds-img-pos-top { object-position: center top !important; }
.ds-img-pos-center { object-position: center center !important; }
.ds-img-pos-bottom { object-position: center bottom !important; }

/* Marketing service logo sizing */
.ds-md-service-logo img.ds-logo-40 { width: 40px !important; height: 40px !important; }
.ds-md-service-logo img.ds-logo-48 { width: 48px !important; height: 48px !important; }
.ds-md-service-logo img.ds-logo-56 { width: 56px !important; height: 56px !important; }
.ds-md-service-logo img.ds-logo-64 { width: 64px !important; height: 64px !important; }


/* ==========================================================
   v0.18 — Performance / resilience
   ========================================================== */

/* Poster is the immediate visual while the CDN video is loaded lazily. */
video.js_ds_hero_video {
    background: #00162f;
}


/* ==========================================================
   v0.19.1 — verified visible overrides
   ========================================================== */

/* Stats */
.ds-stat-head {
    display: flex;
    align-items: center;
    gap: 18px;
}
.ds-stat-icon {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    object-fit: contain;
}

/* Ecosystem: real logo slot, text remains beside it. */
.ds-tool {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.ds-tool-logo-slot {
    width: 36px;
    height: 36px;
    flex: 0 0 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255,255,255,.28);
    border-radius: 10px;
    background: rgba(255,255,255,.96);
    padding: 5px;
}
.ds-tool-logo {
    width: 26px;
    height: 26px;
    display: block;
    object-fit: contain;
    object-position: center;
}
.ds-tool-label {
    white-space: nowrap;
}

/* In editor: stop movement and expose only the editable source copies. */
body.editor_enable .ds-marquee-track {
    animation: none !important;
    transform: none !important;
    width: 100% !important;
    flex-wrap: wrap;
}
body.editor_enable .ds-tool-clone {
    display: none !important;
}
body.editor_enable .js_ds_tool_logo_source {
    cursor: pointer !important;
}
body.editor_enable .ds-tool-logo-slot:has(.js_ds_tool_logo_source) {
    border: 1px dashed #D9B22B;
}

/* Contact native spacer. It has no visible line; only space. */
.ds-contact-top-spacer > hr {
    display: none !important;
}
body:not(.editor_enable) .ds-contact-top-spacer {
    min-height: 0;
}
.ds-contact-info a {
    display: flex;
    align-items: center;
    gap: 12px;
}
.ds-contact-icon {
    width: 25px;
    height: 25px;
    flex: 0 0 25px;
    object-fit: contain;
}

/* Make editable media obvious only while editing. */
body.editor_enable .ds-stat-icon.o_we_custom_image,
body.editor_enable .ds-contact-icon.o_we_custom_image {
    cursor: pointer !important;
    outline: 1px dashed rgba(217,178,43,.60);
    outline-offset: 3px;
}

@media (max-width: 760px) {
    .ds-stat-icon { width: 36px; height: 36px; flex-basis: 36px; }
    .ds-tool-logo-slot { width: 30px; height: 30px; flex-basis: 30px; }
    .ds-tool-logo { width: 24px; height: 24px; }
    .ds-contact-icon { width: 23px; height: 23px; flex-basis: 23px; }
}


/* ==========================================================
   v0.20 — Odoo 20.1 migration + performance
   ========================================================== */

/* Official Odoo 20 background-video layer for CDN/direct MP4 URL. */
.ds-hero.o_background_video > .o_bg_video_container {
    z-index: 1;
}
.ds-hero.o_background_video > .o_bg_video_container .o_bg_video_file {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.ds-hero-native-poster {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.ds-hero.o_background_video .ds-hero-video-overlay {
    z-index: 2;
}
.ds-hero.o_background_video .ds-hero-content {
    z-index: 3;
}

/* Poster is the loading feedback; do not overlay an extra spinner. */
.ds-hero.o_background_video > .o_bg_video_container .o_bg_video_loading {
    opacity: 0;
    pointer-events: none;
}

/* Approved intro effect, but faster. */
.ds-intro-loader { transition-duration: .26s; }
.ds-intro-loader-logo { animation-duration: .48s; }
.ds-intro-loader-line span { animation-duration: .58s; animation-delay: .05s; }
body.editor_enable .ds-intro-loader { display: none !important; }

/* If frontend JS fails, the intro can never trap the visitor over the page. */
.ds-intro-loader.is-visible {
    animation: ds-intro-failsafe .25s ease 3s forwards;
}
@keyframes ds-intro-failsafe {
    to { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* Reduce work below the fold. Unsupported browsers simply ignore it. */
@supports (content-visibility: auto) {
    body:not(.editor_enable) .dsolution-page > .ds-section {
        content-visibility: auto;
        contain-intrinsic-size: auto 720px;
    }
}

/* JS failure must never leave page sections hidden. */
html:not(.ds-animate) .dsolution-page .ds-reveal {
    opacity: 1 !important;
    transform: none !important;
}

/* ==========================================================
   v20.1.6 — Audiovisual page + Marketing editable icons
   ========================================================== */

/* Marketing: keep CTA visible; the services panel no longer overlaps the button. */
.ds-md-services-panel { margin-top: 20px; }
body.editor_enable .ds-md-services-panel { margin-top: 20px; }
.ds-md-mini-icon img { width: 34px; height: 34px; object-fit: contain; }
.ds-md-audience-icon img { width: 28px; height: 28px; object-fit: contain; }
body.editor_enable .ds-md-mini-icon img.o_we_custom_image,
body.editor_enable .ds-md-audience-icon img.o_we_custom_image,
body.editor_enable .ds-av-service-icon.o_we_custom_image {
    cursor: pointer !important;
    outline: 1px dashed rgba(217,178,43,.75);
    outline-offset: 3px;
}

/* Audiovisual page */
.dsolution-audiovisual-page { background: #f7f3ea; color: #061523; }
.dsolution-audiovisual-page .ds-av-eyebrow,
.dsolution-audiovisual-page .ds-av-heading > p {
    margin: 0;
    color: #b88a1a;
    font-size: .72rem;
    font-weight: 850;
    line-height: 1.3;
    letter-spacing: .22em;
    text-transform: uppercase;
}

.ds-av-hero {
    position: relative;
    min-height: 720px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #061523;
    color: #fff;
}
.ds-av-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.ds-av-hero-shade {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(90deg, rgba(4,18,31,.98) 0%, rgba(4,18,31,.93) 31%, rgba(4,18,31,.64) 57%, rgba(4,18,31,.16) 100%),
        linear-gradient(180deg, rgba(4,18,31,.08), rgba(4,18,31,.36));
}
.ds-av-hero-content {
    position: relative;
    z-index: 2;
    flex: 1;
    display: flex;
    align-items: center;
    padding-top: 108px;
    padding-bottom: 40px;
}
.ds-av-hero-copy { max-width: 650px; }
.ds-av-hero-copy .ds-av-eyebrow { color: #d4af37; }
.ds-av-hero-copy h1 {
    margin: 14px 0 0;
    color: #fff;
    font-size: clamp(3.2rem, 6vw, 6.2rem);
    font-weight: 900;
    line-height: .90;
    letter-spacing: -.058em;
}
.ds-av-hero-copy h2 {
    margin: 16px 0 0;
    color: #d4af37;
    font-size: clamp(1.45rem, 2.5vw, 2.35rem);
    font-weight: 850;
    line-height: 1.05;
    letter-spacing: -.03em;
}
.ds-av-hero-copy > p:not(.ds-av-eyebrow) {
    max-width: 585px;
    margin: 18px 0 0;
    color: rgba(255,255,255,.80);
    font-size: 1rem;
    line-height: 1.7;
}
.ds-av-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.ds-av-btn-outline {
    border: 1px solid rgba(255,255,255,.28);
    background: rgba(255,255,255,.04);
    color: #fff !important;
}
.ds-av-btn-outline:hover { border-color: #d4af37; color: #d4af37 !important; }

.ds-av-trustbar {
    position: relative;
    z-index: 2;
    border-top: 1px solid rgba(255,255,255,.12);
    background: rgba(3,15,27,.78);
    backdrop-filter: blur(8px);
}
.ds-av-trust-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.ds-av-trust {
    display: grid;
    grid-template-columns: 38px 1fr;
    gap: 12px;
    align-items: center;
    padding: 16px 16px;
    border-right: 1px solid rgba(255,255,255,.09);
}
.ds-av-trust:last-child { border-right: 0; }
.ds-av-trust > span {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(212,175,55,.52);
    border-radius: 999px;
    color: #d4af37;
    font-weight: 900;
}
.ds-av-trust strong { display: block; color: #fff; font-size: .78rem; line-height: 1.25; }
.ds-av-trust small { display: block; margin-top: 3px; color: rgba(255,255,255,.60); font-size: .68rem; line-height: 1.35; }

.ds-av-services { padding: 78px 0 88px; background: #f7f3ea; }
.ds-av-heading { text-align: center; }
.ds-av-heading h2 {
    margin: 10px 0 0;
    color: #061523;
    font-size: clamp(2rem, 3.7vw, 3.45rem);
    font-weight: 900;
    line-height: 1;
    letter-spacing: -.045em;
}
.ds-av-services-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 12px;
    margin-top: 34px;
}
.ds-av-service-card {
    min-width: 0;
    min-height: 310px;
    padding: 22px 17px;
    border: 1px solid rgba(0,33,71,.07);
    border-radius: 18px;
    background: #fff;
    text-align: center;
    box-shadow: 0 14px 34px rgba(0,33,71,.07);
}
.ds-av-service-icon {
    width: 48px;
    height: 48px;
    display: block;
    margin: 0 auto;
    padding: 9px;
    object-fit: contain;
    border: 1px solid rgba(212,175,55,.18);
    border-radius: 14px;
    background: #f7f3ea;
}
.ds-av-service-card h3 {
    margin: 18px 0 0;
    color: #061523;
    font-size: .94rem;
    font-weight: 900;
    line-height: 1.18;
}
.ds-av-service-card p {
    margin: 13px 0 0;
    color: rgba(6,21,35,.64);
    font-size: .78rem;
    line-height: 1.65;
}

.ds-av-streaming {
    position: relative;
    min-height: 610px;
    overflow: hidden;
    display: flex;
    align-items: center;
    background: #061523;
    color: #fff;
}
.ds-av-streaming-shade {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(90deg, rgba(3,17,29,.98) 0%, rgba(3,17,29,.91) 37%, rgba(3,17,29,.60) 60%, rgba(3,17,29,.18) 100%);
}
.ds-av-streaming-content { position: relative; z-index: 2; padding-top: 76px; padding-bottom: 76px; }
.ds-av-streaming-copy { max-width: 620px; }
.ds-av-streaming-copy .ds-av-eyebrow { color: #d4af37; }
.ds-av-streaming h2,
.ds-av-training h2,
.ds-av-tech h2 {
    margin: 12px 0 0;
    font-size: clamp(2rem, 3.9vw, 3.7rem);
    font-weight: 900;
    line-height: 1.02;
    letter-spacing: -.045em;
}
.ds-av-streaming h2 { color: #fff; }
.ds-av-streaming ul,
.ds-av-training ul { list-style: none; padding: 0; margin: 22px 0 0; }
.ds-av-streaming li,
.ds-av-training li {
    position: relative;
    padding: 4px 0 4px 22px;
    font-size: .9rem;
    line-height: 1.55;
}
.ds-av-streaming li { color: rgba(255,255,255,.83); }
.ds-av-training li { color: rgba(6,21,35,.76); }
.ds-av-streaming li::before,
.ds-av-training li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 4px;
    color: #d4af37;
    font-weight: 900;
}
.ds-av-streaming .ds-btn { margin-top: 24px; }

.ds-av-training { padding: 84px 0; background: #f7f3ea; }
.ds-av-training-grid {
    display: grid;
    grid-template-columns: 1.06fr 1fr .42fr;
    gap: 24px;
    align-items: center;
}
.ds-av-training-photo {
    min-height: 380px;
    overflow: hidden;
    border-radius: 18px;
    box-shadow: 0 18px 42px rgba(0,33,71,.12);
}
.ds-av-training-photo img { width: 100%; height: 100%; min-height: 380px; object-fit: cover; }
.ds-av-training-copy h2 { color: #061523; }
.ds-av-training-copy .ds-btn { margin-top: 24px; }
.ds-av-training-box {
    padding: 30px 20px;
    border-radius: 18px;
    background: #ece9e2;
    text-align: center;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
}
.ds-av-training-box > span { color: #b88a1a; font-size: 2.2rem; }
.ds-av-training-box p { margin: 16px 0 0; color: rgba(6,21,35,.74); font-size: .82rem; font-weight: 800; line-height: 1.55; }
.ds-av-training-box strong { display: block; margin-top: 18px; color: #061523; font-size: .78rem; line-height: 1.5; }

.ds-av-tech { padding: 78px 0 82px; background: #061523; color: #fff; }
.ds-av-tech-grid { display: grid; grid-template-columns: 1fr 1px 1fr; gap: 42px; align-items: start; }
.ds-av-tech .ds-av-eyebrow { color: #d4af37; }
.ds-av-tech h2 { color: #fff; }
.ds-av-tech-divider { width: 1px; min-height: 320px; background: rgba(255,255,255,.12); }
.ds-av-list-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px 22px; margin-top: 28px; }
.ds-av-equipment-list { grid-template-columns: repeat(2, 1fr); }
.ds-av-list-grid span { display: flex; gap: 9px; align-items: center; color: rgba(255,255,255,.84); font-size: .79rem; font-weight: 700; line-height: 1.35; }
.ds-av-list-grid b {
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 7px;
    background: rgba(255,255,255,.09);
    color: #d4af37;
    font-size: .62rem;
}
.ds-av-equipment-list span { color: rgba(255,255,255,.80); }

.ds-av-process { padding: 64px 0 72px; background: #f7f3ea; }
.ds-av-process-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; margin-top: 34px; }
.ds-av-process-grid article { position: relative; text-align: center; }
.ds-av-process-grid article::after {
    content: "";
    position: absolute;
    top: 25px;
    left: 66%;
    width: 68%;
    border-top: 1px dashed rgba(183,138,26,.55);
}
.ds-av-process-grid article:last-child::after { display: none; }
.ds-av-process-grid article > span {
    position: relative;
    z-index: 1;
    width: 52px;
    height: 52px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: #d4af37;
    color: #fff;
    font-size: 1.05rem;
    font-weight: 900;
    box-shadow: 0 12px 28px rgba(212,175,55,.28);
}
.ds-av-process-grid h3 { margin: 17px 0 0; color: #061523; font-size: .85rem; font-weight: 900; }
.ds-av-process-grid p { max-width: 190px; margin: 9px auto 0; color: rgba(6,21,35,.62); font-size: .72rem; line-height: 1.55; }

.ds-av-projects { padding: 72px 0 82px; background: #061523; color: #fff; }
.ds-av-heading--dark h2 { color: #fff; }
.ds-av-heading--dark > p { color: #d4af37; }
.ds-av-projects-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; margin-top: 34px; }
.ds-av-projects-grid article { overflow: hidden; border: 1px solid rgba(255,255,255,.08); border-radius: 14px; background: rgba(255,255,255,.05); }
.ds-av-projects-grid figure { position: relative; height: 160px; margin: 0; overflow: hidden; background: rgba(255,255,255,.03); }
.ds-av-projects-grid figure img { width: 100%; height: 100%; object-fit: cover; opacity: .26; filter: saturate(.6); }
.ds-av-projects-grid figure::after { content: ""; position: absolute; inset: 0; background: rgba(3,17,29,.34); pointer-events: none; }
.ds-av-projects-grid figure > span {
    position: absolute;
    z-index: 2;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    color: #fff;
    font-size: .75rem;
    font-weight: 900;
    text-align: center;
    pointer-events: none;
}
.ds-av-projects-grid figure > span::before { content: "▣"; color: #d4af37; font-size: 1.4rem; }
.ds-av-projects-grid figure small { color: rgba(255,255,255,.55); font-size: .62rem; font-weight: 600; }
.ds-av-projects-grid article > div { padding: 14px; }
.ds-av-projects-grid h3 { margin: 0; color: #fff; font-size: .78rem; font-weight: 900; }
.ds-av-projects-grid p { margin: 7px 0 0; color: rgba(255,255,255,.58); font-size: .66rem; line-height: 1.45; }

/* Website Builder: expose background media as normal selectable images while editing. */
body.editor_enable .ds-av-hero,
body.editor_enable .ds-av-streaming { display: block; min-height: 0; }
body.editor_enable .ds-av-hero > .ds-av-cover.o_we_custom_image,
body.editor_enable .ds-av-streaming > .ds-av-cover.o_we_custom_image {
    position: relative !important;
    inset: auto !important;
    z-index: 5 !important;
    display: block !important;
    width: 100% !important;
    height: 340px !important;
    object-fit: cover !important;
    opacity: 1 !important;
    filter: none !important;
    cursor: pointer !important;
}
body.editor_enable .ds-av-hero-shade,
body.editor_enable .ds-av-streaming-shade { display: none; }
body.editor_enable .ds-av-hero-content,
body.editor_enable .ds-av-streaming-content { min-height: 450px; background: #061523; }
body.editor_enable .ds-av-trustbar { background: #061523; }
body.editor_enable .ds-av-projects-grid figure img.o_we_custom_image { opacity: 1; filter: none; cursor: pointer !important; }
body.editor_enable .ds-av-projects-grid figure > span,
body.editor_enable .ds-av-projects-grid figure::after { display: none; }

@media (max-width: 1120px) {
    .ds-av-services-grid { grid-template-columns: repeat(3, 1fr); }
    .ds-av-service-card { min-height: 260px; }
    .ds-av-training-grid { grid-template-columns: 1fr 1fr; }
    .ds-av-training-box { grid-column: 1 / -1; }
    .ds-av-tech-grid { grid-template-columns: 1fr; }
    .ds-av-tech-divider { display: none; }
    .ds-av-projects-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 820px) {
    .ds-av-hero { min-height: 680px; }
    .ds-av-hero-shade { background: linear-gradient(180deg, rgba(4,18,31,.56), rgba(4,18,31,.96) 78%); }
    .ds-av-hero-content { align-items: flex-end; padding-top: 116px; padding-bottom: 34px; }
    .ds-av-trust-grid { grid-template-columns: repeat(2, 1fr); }
    .ds-av-trust:nth-child(2) { border-right: 0; }
    .ds-av-trust:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.09); }
    .ds-av-services-grid { grid-template-columns: repeat(2, 1fr); }
    .ds-av-streaming-shade { background: linear-gradient(180deg, rgba(3,17,29,.65), rgba(3,17,29,.96)); }
    .ds-av-training-grid { grid-template-columns: 1fr; }
    .ds-av-training-box { grid-column: auto; }
    .ds-av-list-grid { grid-template-columns: repeat(2, 1fr); }
    .ds-av-process-grid { grid-template-columns: 1fr; gap: 24px; }
    .ds-av-process-grid article::after { display: none; }
    .ds-av-process-grid p { max-width: 360px; }
    .ds-av-projects-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
    .ds-av-hero { min-height: 660px; }
    .ds-av-hero-copy h1 { font-size: clamp(2.8rem, 15vw, 4.1rem); }
    .ds-av-hero-copy h2 { font-size: 1.35rem; }
    .ds-av-actions .ds-btn { width: auto; max-width: 100%; }
    .ds-av-trust-grid { grid-template-columns: 1fr; }
    .ds-av-trust { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.09); }
    .ds-av-trust:last-child { border-bottom: 0; }
    .ds-av-services { padding: 58px 0 64px; }
    .ds-av-services-grid { grid-template-columns: 1fr; }
    .ds-av-service-card { min-height: 0; }
    .ds-av-streaming-content { padding-top: 58px; padding-bottom: 58px; }
    .ds-av-training { padding: 60px 0; }
    .ds-av-training-photo,
    .ds-av-training-photo img { min-height: 280px; }
    .ds-av-tech { padding: 60px 0; }
    .ds-av-list-grid,
    .ds-av-equipment-list { grid-template-columns: 1fr; }
    .ds-av-process { padding: 54px 0 60px; }
    .ds-av-projects { padding: 58px 0 64px; }
    .ds-av-projects-grid { grid-template-columns: 1fr; }
}

/* Ecosystem animation only starts after JS has created equal runtime copies. */
.ds-marquee-track:not(.is-runtime-cloned) { animation: none; }

/* ==========================================================
   v20.1.7 — Audiovisual refinements + Web + Automation/IA
   ========================================================== */

/* Audiovisual: full first viewport, reference icons, vertical columns and arrows. */
@media (min-width: 821px) {
    .dsolution-audiovisual-page .ds-av-hero { min-height: 100svh; }
}
.ds-av-trust > span img { width: 18px; height: 18px; object-fit: contain; }
.ds-av-tech-grid { grid-template-columns: 1.15fr 1px .85fr; }
.ds-av-tools-list { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 20px 28px; }
.ds-av-tools-list span,
.ds-av-equipment-list span { min-width: 0; align-items: center; }
.ds-av-tools-list img { width: 27px; height: 27px; flex: 0 0 27px; object-fit: contain; border-radius: 6px; }
.ds-av-equipment-list img { width: 23px; height: 23px; flex: 0 0 23px; object-fit: contain; }
.ds-av-list-grid b { display: none; }
.ds-av-process-grid article::after {
    content: "→";
    top: 13px;
    left: 61%;
    width: 78%;
    height: 18px;
    border-top: 1px dashed rgba(183,138,26,.60);
    color: #d4af37;
    font-size: 17px;
    line-height: 1;
    text-align: right;
}
.ds-av-process-grid article > span img { width: 26px; height: 26px; object-fit: contain; }
@media (max-width:1120px) {
    .ds-av-tech-grid { grid-template-columns: 1fr; }
}

/* ---------------- Desarrollo Web ---------------- */
.dsolution-web-page { background:#f7f3ea; color:#061523; }
.ds-web-hero { position:relative; overflow:hidden; padding:120px 0 68px; background:#062b4c; color:#fff; }
.ds-web-hero::before { content:""; position:absolute; inset:0; background:linear-gradient(135deg,#0d3c55 0%,#062b4c 46%,#002147 100%); }
.ds-web-glow { position:absolute; z-index:1; border-radius:999px; filter:blur(70px); opacity:.18; pointer-events:none; }
.ds-web-glow--one { width:500px; height:500px; left:14%; top:-180px; background:#d4af37; }
.ds-web-glow--two { width:520px; height:520px; right:-120px; top:80px; background:#127ca8; }
.ds-web-hero-inner { position:relative; z-index:2; }
.ds-web-heading { max-width:850px; margin:0 auto 44px; text-align:center; }
.ds-web-heading-icon { display:inline-flex; width:34px; height:34px; align-items:center; justify-content:center; color:#d4af37; border-bottom:1px solid rgba(212,175,55,.55); }
.ds-web-heading p { margin:10px 0 0; color:#d4af37; font-size:.72rem; font-weight:900; letter-spacing:.24em; text-transform:uppercase; }
.ds-web-heading h1 { margin:10px 0 0; color:#fff; font-size:clamp(2.7rem,5vw,5.15rem); line-height:.98; font-weight:900; letter-spacing:-.055em; }
.ds-web-heading h1 em { color:#d4af37; font-style:normal; }
.ds-web-heading small { display:block; margin-top:16px; color:rgba(255,255,255,.72); font-size:.96rem; }
.ds-web-showcase { display:grid; grid-template-columns:290px 1fr; gap:44px; align-items:center; }
.ds-web-types { display:grid; gap:11px; }
.ds-web-types button { position:relative; display:grid; grid-template-columns:34px 1fr 26px; grid-template-rows:auto auto; gap:2px 10px; width:100%; min-height:68px; padding:12px 15px; border:1px solid rgba(255,255,255,.38); border-radius:12px; background:rgba(255,255,255,.03); color:#fff; text-align:left; transition:.25s ease; }
.ds-web-types button > span { grid-row:1/3; align-self:center; color:#d4af37; font-size:1.1rem; }
.ds-web-types button b { font-size:.91rem; font-weight:850; }
.ds-web-types button small { color:rgba(255,255,255,.55); font-size:.69rem; }
.ds-web-types button i { grid-column:3; grid-row:1/3; align-self:center; justify-self:center; color:rgba(255,255,255,.62); font-style:normal; }
.ds-web-types button.is-active { border-color:#d4af37; background:rgba(212,175,55,.08); box-shadow:0 0 0 1px rgba(212,175,55,.12) inset; }
.ds-web-types button.is-active i { display:inline-flex; width:24px; height:24px; align-items:center; justify-content:center; border-radius:999px; background:#d4af37; color:#061523; }
.ds-web-device-stage { position:relative; min-height:420px; }
.ds-web-device { position:absolute; overflow:hidden; border:7px solid #111827; background:#fff; box-shadow:0 24px 50px rgba(0,0,0,.33); }
.ds-web-device--desktop { left:2%; top:18px; width:76%; aspect-ratio:16/10; border-radius:18px; }
.ds-web-browserbar { height:22px; display:flex; gap:5px; align-items:center; padding:0 10px; background:#edf0f4; }
.ds-web-browserbar i { width:6px; height:6px; border-radius:99px; background:#94a3b8; }
.ds-web-galleries { position:absolute; inset:22px 0 0; overflow:hidden; background:#fff; }
.ds-web-gallery { position:absolute; inset:0; display:none; overflow:hidden; }
.ds-web-gallery.is-active { display:block; }
.ds-web-slides { display:flex; width:100%; height:100%; transform:translateX(0); transition:transform 1.35s cubic-bezier(.22,.61,.36,1); }
.ds-web-slides img { flex:0 0 100%; width:100%; height:100%; object-fit:cover; object-position:top; }
.ds-web-device--tablet { right:6%; bottom:26px; width:27%; aspect-ratio:10/13; border-width:6px; border-radius:18px; z-index:3; }
.ds-web-device--phone { right:0; bottom:16px; width:15%; aspect-ratio:9/18; border-width:6px; border-radius:18px; z-index:4; }
.ds-web-device--tablet img,.ds-web-device--phone img { width:100%; height:100%; object-fit:cover; object-position:top; }
.ds-web-details { margin-top:34px; }
.ds-web-details article { display:none; grid-template-columns:1fr 250px; gap:30px; align-items:center; padding:28px 30px; border:1px solid rgba(255,255,255,.45); border-radius:22px; background:rgba(4,24,43,.55); }
.ds-web-details article.is-active { display:grid; }
.ds-web-details article > div { display:grid; grid-template-columns:48px 1fr; column-gap:16px; }
.ds-web-details article > div > span { grid-row:1/4; display:flex; width:48px; height:48px; align-items:center; justify-content:center; border:1px solid rgba(212,175,55,.45); border-radius:999px; color:#d4af37; }
.ds-web-details h2 { margin:0; color:#fff; font-size:1.65rem; font-weight:900; }
.ds-web-details p { margin:8px 0 0; color:rgba(255,255,255,.72); font-size:.86rem; line-height:1.6; }
.ds-web-details ul { grid-column:2; display:flex; flex-wrap:wrap; gap:8px 28px; margin:14px 0 0; padding:0; list-style:none; color:rgba(255,255,255,.78); font-size:.72rem; }
.ds-web-details li::before { content:"✓"; margin-right:7px; color:#d4af37; }
.ds-web-details article > a { display:flex; min-height:50px; align-items:center; justify-content:center; gap:12px; border-radius:9px; background:#d4af37; color:#061523!important; font-weight:850; }
.ds-web-extras { padding:82px 0 94px; background:#f7f3ea; }
.ds-web-section-heading { max-width:800px; margin:0 auto; text-align:center; }
.ds-web-section-heading p { margin:0; color:#b88a1a; font-size:.68rem; font-weight:900; letter-spacing:.22em; text-transform:uppercase; }
.ds-web-section-heading h2 { margin:10px 0 0; color:#061523; font-size:clamp(2.2rem,4.1vw,3.75rem); font-weight:900; letter-spacing:-.05em; }
.ds-web-section-heading h2 em { color:#b88a1a; font-style:normal; }
.ds-web-section-heading small { display:block; margin-top:10px; color:rgba(6,21,35,.55); }
.ds-web-extras-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-top:40px; }
.ds-web-extras-grid article { position:relative; min-height:245px; padding:22px; border-radius:18px; background:#fff; box-shadow:0 14px 34px rgba(0,33,71,.07); }
.ds-web-extras-grid article > span { position:absolute; top:17px; right:18px; color:#d4af37; font-size:.74rem; font-weight:900; }
.ds-web-extras-grid i { display:flex; width:42px; height:42px; align-items:center; justify-content:center; border:1px solid rgba(212,175,55,.34); border-radius:999px; color:#061523; background:#faf8f2; font-style:normal; font-size:.76rem; font-weight:900; }
.ds-web-extras-grid h3 { margin:22px 0 0; color:#061523; font-size:1rem; font-weight:900; }
.ds-web-extras-grid p { margin:12px 0 0; color:rgba(6,21,35,.63); font-size:.78rem; line-height:1.65; }
body.editor_enable .ds-web-device-stage { min-height:auto; display:block; }
body.editor_enable .ds-web-device--desktop { position:relative; left:auto; top:auto; width:100%; aspect-ratio:auto; overflow:visible; }
body.editor_enable .ds-web-galleries { position:relative; inset:auto; overflow:visible; }
body.editor_enable .ds-web-gallery { position:relative; display:block!important; padding:12px; }
body.editor_enable .ds-web-slides { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; transform:none!important; height:auto; }
body.editor_enable .ds-web-slides img { width:100%; height:auto; cursor:pointer; }
body.editor_enable .ds-web-device--tablet, body.editor_enable .ds-web-device--phone { display:none; }

/* ---------------- Automatización e IA ---------------- */
.dsolution-ai-page { background:#f7f3ea; color:#061523; }
.ds-ai-hero { position:relative; overflow:hidden; padding:132px 0 78px; min-height:760px; display:flex; align-items:center; background:#051a2d; color:#fff; }
.ds-ai-grid-bg { position:absolute; inset:0; background:radial-gradient(circle at 72% 45%,rgba(52,130,170,.25),transparent 30%),radial-gradient(circle at 18% 20%,rgba(212,175,55,.12),transparent 22%),linear-gradient(135deg,#071d31,#03111f); }
.ds-ai-grid-bg::after { content:""; position:absolute; inset:0; opacity:.18; background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px); background-size:46px 46px; mask-image:linear-gradient(90deg,transparent,black 50%,black); }
.ds-ai-hero-grid { position:relative; z-index:2; display:grid; grid-template-columns:.92fr 1.08fr; gap:58px; align-items:center; }
.ds-ai-copy > p,.ds-ai-heading > p { margin:0; color:#d4af37; font-size:.7rem; font-weight:900; letter-spacing:.22em; text-transform:uppercase; }
.ds-ai-copy h1 { margin:15px 0 0; color:#fff; font-size:clamp(3.4rem,6vw,6.2rem); font-weight:900; line-height:.91; letter-spacing:-.06em; }
.ds-ai-copy h1 em { color:#d4af37; font-style:normal; }
.ds-ai-copy > span { display:block; max-width:570px; margin-top:22px; color:rgba(255,255,255,.76); font-size:1.02rem; line-height:1.7; }
.ds-ai-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:30px; }
.ds-ai-btn-outline { border:1px solid rgba(255,255,255,.28); color:#fff!important; background:rgba(255,255,255,.03); }
.ds-ai-benefits { display:flex; gap:26px; margin-top:36px; padding-top:24px; border-top:1px solid rgba(255,255,255,.10); }
.ds-ai-benefits small { color:rgba(255,255,255,.64); line-height:1.45; }
.ds-ai-benefits small::first-letter { color:#d4af37; }
.ds-ai-benefits b { color:#fff; }
.ds-ai-flow { position:relative; min-height:470px; display:grid; grid-template-columns:1fr 120px 1.15fr; align-items:center; gap:34px; padding:38px; border:1px solid rgba(255,255,255,.10); border-radius:28px; background:rgba(10,36,60,.58); box-shadow:0 30px 70px rgba(0,0,0,.25); backdrop-filter:blur(10px); }
.ds-ai-inputs,.ds-ai-outputs { display:grid; gap:16px; }
.ds-ai-inputs span,.ds-ai-outputs span { display:flex; flex-direction:column; justify-content:center; min-height:72px; padding:14px 17px; border:1px solid rgba(87,161,218,.35); border-radius:12px; background:rgba(17,58,93,.62); color:#fff; box-shadow:0 0 30px rgba(58,130,180,.08); }
.ds-ai-outputs b { font-size:.9rem; }
.ds-ai-outputs small { margin-top:4px; color:rgba(255,255,255,.58); font-size:.68rem; }
.ds-ai-core { position:relative; z-index:3; display:flex; width:118px; height:118px; flex-direction:column; align-items:center; justify-content:center; border:1px solid rgba(212,175,55,.60); border-radius:22px; background:linear-gradient(145deg,#163d5f,#071d31); box-shadow:0 0 42px rgba(212,175,55,.18); }
.ds-ai-core i { color:#d4af37; font-size:2rem; font-style:normal; animation:dsAiPulse 2.6s ease-in-out infinite; }
.ds-ai-core strong { margin-top:3px; font-size:1.15rem; }
.ds-ai-core small { color:rgba(255,255,255,.55); font-size:.62rem; }
.ds-ai-line { position:absolute; top:50%; height:1px; background:linear-gradient(90deg,transparent,#d4af37,transparent); box-shadow:0 0 12px rgba(212,175,55,.7); animation:dsAiLine 2.4s linear infinite; }
.ds-ai-line--left { left:29%; width:22%; }.ds-ai-line--right { right:27%; width:23%; }
@keyframes dsAiPulse { 50%{transform:scale(1.15);filter:drop-shadow(0 0 8px #d4af37)} }
@keyframes dsAiLine { 50%{opacity:.45} }
.ds-ai-services { padding:82px 0 92px; background:#f7f3ea; }
.ds-ai-heading { max-width:820px; margin:0 auto; text-align:center; }
.ds-ai-heading h2 { margin:10px 0 0; color:#061523; font-size:clamp(2.3rem,4.2vw,3.9rem); line-height:1; font-weight:900; letter-spacing:-.05em; }
.ds-ai-heading > span { display:block; margin-top:13px; color:rgba(6,21,35,.58); }
.ds-ai-map { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:42px; }
.ds-ai-map article,.ds-ai-map-core { min-height:160px; padding:22px; border-radius:18px; background:#fff; box-shadow:0 14px 34px rgba(0,33,71,.07); }
.ds-ai-map article i { color:#b88a1a; font-style:normal; font-size:.68rem; font-weight:900; }
.ds-ai-map article h3 { margin:18px 0 0; color:#061523; font-size:1rem; font-weight:900; }
.ds-ai-map article p { margin:9px 0 0; color:rgba(6,21,35,.60); font-size:.78rem; line-height:1.6; }
.ds-ai-map-core { grid-column:2; grid-row:2; display:flex; flex-direction:column; align-items:center; justify-content:center; color:#fff; background:#061523; box-shadow:0 18px 44px rgba(0,33,71,.20); }
.ds-ai-map-core span { color:#d4af37; font-size:2rem; }.ds-ai-map-core strong { margin-top:5px; font-size:1.05rem; }.ds-ai-map-core small { margin-top:5px; color:rgba(255,255,255,.56); }
.ds-ai-before-after { padding:78px 0 88px; background:#061523; color:#fff; }
.ds-ai-heading--dark h2 { color:#fff; }.ds-ai-heading--dark > span { color:rgba(255,255,255,.58); }
.ds-ai-compare { display:grid; grid-template-columns:1fr 52px 1fr; gap:20px; align-items:center; max-width:980px; margin:40px auto 0; }
.ds-ai-before,.ds-ai-after { min-height:280px; padding:28px; border:1px solid rgba(255,255,255,.08); border-radius:18px; background:rgba(255,255,255,.04); }
.ds-ai-after { border-color:rgba(212,175,55,.28); background:linear-gradient(135deg,rgba(212,175,55,.11),rgba(255,255,255,.04)); }
.ds-ai-before h3,.ds-ai-after h3 { margin:0; color:#fff; font-size:1rem; font-weight:900; }.ds-ai-after h3{color:#d4af37;}
.ds-ai-compare ul { list-style:none; padding:0; margin:20px 0 0; display:grid; gap:12px; color:rgba(255,255,255,.76); font-size:.84rem; }
.ds-ai-before li::before { content:"×"; margin-right:10px; color:#ff6961; font-weight:900; }.ds-ai-after li::before { content:"✓"; margin-right:10px; color:#7bd389; font-weight:900; }
.ds-ai-compare-arrow { color:#d4af37; font-size:1.6rem; text-align:center; }
.ds-ai-how { padding:82px 0 94px; background:#f7f3ea; }
.ds-ai-how-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:42px; }
.ds-ai-how-grid article { position:relative; min-height:310px; padding:28px; border-radius:20px; background:#fff; box-shadow:0 14px 34px rgba(0,33,71,.07); text-align:center; }
.ds-ai-how-grid article > span { position:absolute; top:18px; right:20px; color:#d4af37; font-size:.8rem; font-weight:900; }
.ds-ai-how-visual { display:flex; width:78px; height:78px; margin:6px auto 0; align-items:center; justify-content:center; border-radius:999px; background:#061523; color:#d4af37; font-size:2rem; box-shadow:0 14px 30px rgba(0,33,71,.16); }
.ds-ai-how-grid h3 { margin:24px 0 0; color:#061523; font-size:1.15rem; font-weight:900; }.ds-ai-how-grid p { margin:13px 0 0; color:rgba(6,21,35,.62); font-size:.82rem; line-height:1.65; }

@media (max-width:1050px) {
    .ds-web-showcase { grid-template-columns:250px 1fr; gap:24px; }
    .ds-web-device-stage { min-height:350px; }
    .ds-web-extras-grid { grid-template-columns:repeat(2,1fr); }
    .ds-ai-hero-grid { grid-template-columns:1fr; }
    .ds-ai-flow { max-width:760px; width:100%; margin-inline:auto; }
}
@media (max-width:760px) {
    .ds-web-hero { padding:100px 0 54px; }
    .ds-web-showcase { grid-template-columns:1fr; }
    .ds-web-types { grid-template-columns:1fr 1fr; }
    .ds-web-device-stage { min-height:300px; }
    .ds-web-device--desktop { width:82%; }
    .ds-web-details article,.ds-web-details article.is-active { grid-template-columns:1fr; }
    .ds-web-details article > a { width:100%; }
    .ds-web-extras-grid { grid-template-columns:1fr; }
    .ds-ai-hero { padding:110px 0 60px; min-height:0; }
    .ds-ai-flow { grid-template-columns:1fr; gap:18px; min-height:0; padding:22px; }
    .ds-ai-line { display:none; }
    .ds-ai-core { margin:auto; }
    .ds-ai-map { grid-template-columns:1fr 1fr; }
    .ds-ai-map-core { grid-column:1/-1; grid-row:auto; }
    .ds-ai-compare { grid-template-columns:1fr; }.ds-ai-compare-arrow { transform:rotate(90deg); }
    .ds-ai-how-grid { grid-template-columns:1fr; }
}
@media (max-width:520px) {
    .ds-web-types { grid-template-columns:1fr; }
    .ds-web-device-stage { min-height:245px; }
    .ds-web-device--desktop { width:88%; }.ds-web-device--tablet { width:30%; }.ds-web-device--phone { width:17%; }
    .ds-web-extras { padding:62px 0 70px; }
    .ds-ai-benefits { display:grid; gap:12px; }
    .ds-ai-map { grid-template-columns:1fr; }.ds-ai-map-core { grid-column:auto; }
}

/* ==========================================================
   v20.1.8 — editable visual refinements + Branding page
   ========================================================== */

/* ---------- Audiovisual: uploadable icons, tidy vertical lists, solid arrows ---------- */
.ds-av-trust > span img,
.ds-av-process-grid article > span img,
.ds-av-tools-list img,
.ds-av-equipment-list img { display:block; object-fit:contain; }
.ds-av-trust > span img { width:20px; height:20px; }
.ds-av-tools-list {
    grid-template-columns:repeat(3,minmax(150px,1fr));
    gap:22px 30px;
    align-items:start;
}
.ds-av-equipment-list {
    grid-template-columns:repeat(2,minmax(190px,1fr));
    gap:22px 34px;
    align-items:start;
}
.ds-av-tools-list span,
.ds-av-equipment-list span {
    display:flex;
    width:100%;
    min-width:0;
    gap:12px;
    align-items:center;
    white-space:normal;
    line-height:1.35;
}
.ds-av-tools-list img { width:30px; height:30px; flex:0 0 30px; }
.ds-av-equipment-list img { width:28px; height:28px; flex:0 0 28px; }
.ds-av-process-grid article::after {
    content:"";
    position:absolute;
    top:31px;
    left:64%;
    width:72%;
    height:1px;
    border:0;
    background:#d4af37;
    opacity:.72;
}
.ds-av-process-grid article::before {
    content:"";
    position:absolute;
    top:27px;
    left:calc(136% - 8px);
    width:8px;
    height:8px;
    border-top:1.5px solid #d4af37;
    border-right:1.5px solid #d4af37;
    transform:rotate(45deg);
    opacity:.9;
}
.ds-av-process-grid article:last-child::before,
.ds-av-process-grid article:last-child::after { display:none; }
.ds-av-process-grid article > span { width:64px; height:64px; }
.ds-av-process-grid article > span img { width:30px; height:30px; }
body.editor_enable .ds-av-trust img.o_we_custom_image,
body.editor_enable .ds-av-tools-list img.o_we_custom_image,
body.editor_enable .ds-av-equipment-list img.o_we_custom_image,
body.editor_enable .ds-av-process-grid img.o_we_custom_image {
    outline:1px dashed rgba(212,175,55,.85);
    outline-offset:3px;
    cursor:pointer!important;
}

/* ---------- Marketing: larger uploadable icons + reference audience layout ---------- */
.ds-md-mini-icon { width:64px; height:64px; border-radius:16px; }
.ds-md-mini-icon img { width:40px; height:40px; object-fit:contain; }
.ds-md-include-top { align-items:flex-start; }
.ds-md-include-top b { margin-top:7px; }
.ds-md-audience-overlay {
    background:
        linear-gradient(90deg,rgba(1,8,16,.88) 0%,rgba(1,8,16,.66) 43%,rgba(1,8,16,.20) 100%),
        linear-gradient(180deg,rgba(1,8,16,.08) 35%,rgba(1,8,16,.82) 100%);
}
.ds-md-audience-copy {
    justify-content:flex-end;
    padding:28px 30px 30px 102px;
}
.ds-md-audience-icon { width:56px; height:56px; margin-bottom:15px; }
.ds-md-audience-icon img { width:34px; height:34px; object-fit:contain; }
.ds-md-audience-copy b {
    position:absolute;
    left:28px;
    bottom:30px;
    margin:0;
    font-size:2.65rem;
}
.ds-md-audience-copy h3 { font-size:1.48rem; }
.ds-md-audience-copy p { max-width:270px; }

/* ---------- Desarrollo Web ---------- */
.ds-web-heading-ornament {
    display:grid;
    grid-template-columns:minmax(70px,140px) 42px minmax(70px,140px);
    gap:16px;
    align-items:center;
    justify-content:center;
    margin:0 auto 8px;
}
.ds-web-heading-ornament > i { height:1px; background:rgba(212,175,55,.72); }
.ds-web-heading-ornament > span {
    display:flex;
    width:42px;
    height:42px;
    align-items:center;
    justify-content:center;
}
.ds-web-heading-ornament img { width:32px; height:32px; object-fit:contain; }
.ds-web-types button { grid-template-columns:42px 1fr 30px; min-height:74px; padding:13px 16px; }
.ds-web-type-icon { grid-row:1/3; align-self:center; display:flex; width:38px; height:38px; align-items:center; justify-content:center; }
.ds-web-type-icon img { width:31px; height:31px; object-fit:contain; }
.ds-web-device-stage { min-height:440px; }
.ds-web-device { overflow:hidden; }
.ds-web-device--desktop { aspect-ratio:16/10; }
.ds-web-preview-window { position:relative; width:100%; height:100%; overflow:hidden; background:#fff; }
.ds-web-device--desktop .ds-web-preview-window { height:calc(100% - 22px); }
.js_ds_web_preview {
    display:block;
    width:100%;
    height:auto;
    min-height:100%;
    max-width:none;
    transform:translateY(0);
    will-change:transform;
}
.js_ds_web_preview.is-scrolling {
    animation:dsWebVerticalScroll var(--ds-scroll-duration,22s) ease-in-out infinite alternate;
}
@keyframes dsWebVerticalScroll {
    0%,10% { transform:translateY(0); }
    90%,100% { transform:translateY(calc(-1 * var(--ds-scroll-distance, 0px))); }
}
.ds-web-upload-bank { display:none; }
body.editor_enable .ds-web-upload-bank {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
    margin-top:34px;
    padding:18px;
    border:1px dashed rgba(212,175,55,.5);
    border-radius:18px;
    background:rgba(255,255,255,.06);
}
body.editor_enable .ds-web-upload-bank figure { margin:0; padding:12px; border-radius:14px; background:#fff; color:#061523; }
body.editor_enable .ds-web-upload-bank figcaption { margin-bottom:9px; font-size:.75rem; font-weight:850; }
body.editor_enable .ds-web-upload-bank img { display:block; width:100%; height:230px; object-fit:cover; object-position:top; cursor:pointer!important; }
body.editor_enable .js_ds_web_preview { animation:none!important; transform:none!important; }
.ds-web-detail-icon img { width:28px; height:28px; object-fit:contain; }
.ds-web-extra-top { display:flex; align-items:center; gap:14px; }
.ds-web-extras-grid article > span { position:static; }
.ds-web-extra-top b { color:#d4af37; font-size:.86rem; font-weight:900; }
.ds-web-extra-icon {
    display:flex;
    width:64px;
    height:64px;
    align-items:center;
    justify-content:center;
    border:1px solid rgba(212,175,55,.34);
    border-radius:999px;
    background:#faf8f2;
}
.ds-web-extra-icon img { width:38px; height:38px; object-fit:contain; }
.ds-web-extras-grid h3 { margin:22px 0 0; }
body.editor_enable .ds-web-heading-ornament img.o_we_custom_image,
body.editor_enable .ds-web-type-icon img.o_we_custom_image,
body.editor_enable .ds-web-extra-icon img.o_we_custom_image {
    outline:1px dashed rgba(212,175,55,.8);
    outline-offset:3px;
    cursor:pointer!important;
}

/* ---------- Automatización e IA ---------- */
@media (min-width:821px) {
    .ds-ai-hero { min-height:100svh; padding-top:118px; padding-bottom:42px; }
}
.ds-ai-hero-grid { grid-template-columns:.9fr 1.1fr; }
.ds-ai-hero-visual {
    min-width:0;
    overflow:hidden;
    border:1px solid rgba(255,255,255,.10);
    border-radius:30px;
    background:rgba(10,36,60,.40);
    box-shadow:0 30px 70px rgba(0,0,0,.25);
}
.ds-ai-hero-visual > img { display:block; width:100%; height:auto; max-height:560px; object-fit:contain; }
.ds-ai-benefits { gap:22px; }
.ds-ai-benefits small { display:flex; align-items:center; gap:10px; min-width:0; }
.ds-ai-benefits small > span {
    display:flex;
    width:38px;
    height:38px;
    flex:0 0 38px;
    align-items:center;
    justify-content:center;
    border:1px solid rgba(212,175,55,.45);
    border-radius:999px;
    background:rgba(255,255,255,.04);
}
.ds-ai-benefits small > span img { width:20px; height:20px; object-fit:contain; }
.ds-ai-benefits small > i { color:rgba(255,255,255,.64); font-style:normal; }
.ds-ai-benefits small > i b { color:#fff; }
.ds-ai-service-grid {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:18px;
    margin-top:42px;
}
.ds-ai-service-card {
    overflow:hidden;
    min-width:0;
    border-radius:18px;
    background:#fff;
    box-shadow:0 14px 34px rgba(0,33,71,.07);
}
.ds-ai-service-head { min-height:112px; padding:18px 18px 12px; }
.ds-ai-service-head > span {
    display:flex;
    width:42px;
    height:42px;
    align-items:center;
    justify-content:center;
    border:1px solid rgba(212,175,55,.26);
    border-radius:999px;
    background:#faf8f2;
}
.ds-ai-service-head > span img { width:27px; height:27px; object-fit:contain; }
.ds-ai-service-head h3 { margin:10px 0 0; color:#061523; font-size:.98rem; font-weight:900; line-height:1.18; }
.ds-ai-service-photo { display:block; width:100%; aspect-ratio:16/8.7; object-fit:cover; }
.ds-ai-how-grid article {
    overflow:hidden;
    min-height:0;
    padding:0;
    text-align:left;
}
.ds-ai-how-grid figure { height:190px; margin:0; overflow:hidden; background:#e9edf1; }
.ds-ai-how-grid figure > img { width:100%; height:100%; object-fit:cover; }
.ds-ai-how-body { position:relative; min-height:180px; padding:34px 24px 24px; }
.ds-ai-how-icon {
    position:absolute;
    top:-27px;
    left:22px;
    display:flex;
    width:54px;
    height:54px;
    align-items:center;
    justify-content:center;
    border:5px solid #fff;
    border-radius:999px;
    background:#061523;
    box-shadow:0 8px 20px rgba(0,33,71,.14);
}
.ds-ai-how-icon img { width:25px; height:25px; object-fit:contain; filter:none; }
.ds-ai-how-body > b { position:absolute; top:14px; right:22px; color:#d4af37; font-size:.78rem; }
.ds-ai-how-grid h3 { margin:12px 0 0; }
.ds-ai-how-grid p { margin:10px 0 0; }
body.editor_enable .ds-ai-hero-visual img.o_we_custom_image,
body.editor_enable .ds-ai-benefits img.o_we_custom_image,
body.editor_enable .ds-ai-service-card img.o_we_custom_image,
body.editor_enable .ds-ai-how-grid img.o_we_custom_image {
    outline:1px dashed rgba(212,175,55,.8);
    outline-offset:2px;
    cursor:pointer!important;
}

/* ---------- Branding y Diseño ---------- */
.dsolution-branding-page { background:#f7f3ea; color:#061523; }
.ds-brand-hero {
    position:relative;
    min-height:760px;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    background:#061523;
    color:#fff;
}
@media (min-width:821px) { .ds-brand-hero { min-height:100svh; } }
.ds-brand-cover { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.ds-brand-hero-shade {
    position:absolute;
    inset:0;
    z-index:1;
    background:linear-gradient(90deg,rgba(3,16,28,.97) 0%,rgba(3,16,28,.91) 36%,rgba(3,16,28,.58) 62%,rgba(3,16,28,.20) 100%),linear-gradient(180deg,rgba(3,16,28,.08),rgba(3,16,28,.35));
}
.ds-brand-hero-content { position:relative; z-index:2; flex:1; display:flex; align-items:center; padding-top:108px; padding-bottom:54px; }
.ds-brand-hero-copy { max-width:650px; }
.ds-brand-hero-copy > p,.ds-brand-heading > p { margin:0; color:#d4af37; font-size:.72rem; font-weight:900; letter-spacing:.22em; text-transform:uppercase; }
.ds-brand-hero-copy h1 { margin:14px 0 0; color:#fff; font-size:clamp(3.2rem,6vw,6rem); line-height:.92; font-weight:900; letter-spacing:-.055em; }
.ds-brand-hero-copy h1 em { color:#d4af37; font-style:normal; }
.ds-brand-hero-copy > span { display:block; max-width:600px; margin-top:20px; color:rgba(255,255,255,.8); font-size:1rem; line-height:1.7; }
.ds-brand-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:28px; }
.ds-brand-btn-outline { border:1px solid rgba(255,255,255,.30); color:#fff!important; background:rgba(255,255,255,.03); }
.ds-brand-benefits { position:relative; z-index:2; border-top:1px solid rgba(255,255,255,.12); background:rgba(3,15,27,.80); backdrop-filter:blur(8px); }
.ds-brand-benefit-grid { display:grid; grid-template-columns:repeat(3,1fr); }
.ds-brand-benefit-grid > div { display:flex; align-items:center; gap:13px; padding:17px 20px; border-right:1px solid rgba(255,255,255,.09); }
.ds-brand-benefit-grid > div:last-child { border-right:0; }
.ds-brand-benefit-grid > div > span { display:flex; width:38px; height:38px; flex:0 0 38px; align-items:center; justify-content:center; border:1px solid rgba(212,175,55,.50); border-radius:999px; }
.ds-brand-benefit-grid img { width:21px; height:21px; object-fit:contain; }
.ds-brand-benefit-grid p { margin:0; }
.ds-brand-benefit-grid b { display:block; color:#fff; font-size:.78rem; }
.ds-brand-benefit-grid small { display:block; margin-top:3px; color:rgba(255,255,255,.60); font-size:.68rem; }
.ds-brand-services { padding:82px 0 92px; background:#f7f3ea; }
.ds-brand-heading { max-width:850px; margin:0 auto; text-align:center; }
.ds-brand-heading h2 { margin:10px 0 0; color:#061523; font-size:clamp(2.2rem,4vw,3.75rem); line-height:1; font-weight:900; letter-spacing:-.05em; }
.ds-brand-heading > span { display:block; margin-top:12px; color:rgba(6,21,35,.58); }
.ds-brand-services-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin-top:42px; }
.ds-brand-service-card { display:grid; grid-template-columns:minmax(0,1fr) 42%; min-height:260px; overflow:hidden; border-radius:20px; background:#fff; box-shadow:0 14px 34px rgba(0,33,71,.07); }
.ds-brand-service-copy { padding:22px 16px 22px 22px; }
.ds-brand-service-copy > span { display:flex; width:48px; height:48px; align-items:center; justify-content:center; border:1px solid rgba(212,175,55,.28); border-radius:999px; background:#faf8f2; }
.ds-brand-service-copy > span img { width:29px; height:29px; object-fit:contain; }
.ds-brand-service-copy h3 { margin:16px 0 0; color:#061523; font-size:1.08rem; font-weight:900; line-height:1.2; }
.ds-brand-service-copy p { margin:10px 0 0; color:rgba(6,21,35,.62); font-size:.78rem; line-height:1.6; }
.ds-brand-service-photo { width:100%; height:100%; min-height:260px; object-fit:cover; }
.ds-brand-visual { padding:78px 0 90px; background:#f3eadb; }
.ds-brand-visual-grid { display:grid; grid-template-columns:1.35fr .7fr .85fr 1fr; grid-template-rows:180px 180px; gap:14px; margin-top:38px; }
.ds-brand-visual-grid figure { position:relative; margin:0; overflow:hidden; border-radius:18px; background:#fff; box-shadow:0 14px 34px rgba(0,33,71,.07); }
.ds-brand-visual-grid .ds-brand-visual-main { grid-row:1/3; }
.ds-brand-visual-grid figure:nth-child(4),.ds-brand-visual-grid figure:nth-child(5) { grid-row:1/3; }
.ds-brand-visual-grid img { width:100%; height:100%; object-fit:cover; }
.ds-brand-visual-grid figcaption { position:absolute; left:14px; bottom:12px; padding:6px 9px; border-radius:9px; background:rgba(6,21,35,.82); color:#fff; font-size:.68rem; font-weight:800; }
.ds-brand-process { padding:76px 0 88px; background:#f7f3ea; }
.ds-brand-process-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:18px; margin-top:38px; }
.ds-brand-process-grid article { position:relative; text-align:center; }
.ds-brand-process-grid article::after { content:""; position:absolute; top:31px; left:64%; width:72%; height:1px; background:#d4af37; opacity:.72; }
.ds-brand-process-grid article::before { content:""; position:absolute; top:27px; left:calc(136% - 8px); width:8px; height:8px; border-top:1.5px solid #d4af37; border-right:1.5px solid #d4af37; transform:rotate(45deg); }
.ds-brand-process-grid article:last-child::after,.ds-brand-process-grid article:last-child::before { display:none; }
.ds-brand-process-grid article > span { position:relative; z-index:1; display:flex; width:64px; height:64px; margin:auto; align-items:center; justify-content:center; border-radius:999px; background:#d4af37; box-shadow:0 12px 28px rgba(212,175,55,.28); }
.ds-brand-process-grid article > span img { width:30px; height:30px; object-fit:contain; }
.ds-brand-process-grid h3 { margin:18px 0 0; color:#061523; font-size:.88rem; font-weight:900; }
.ds-brand-process-grid p { max-width:190px; margin:9px auto 0; color:rgba(6,21,35,.62); font-size:.74rem; line-height:1.55; }
.ds-brand-cta { padding:46px 0; background:#061523; color:#fff; }
.ds-brand-cta .ds-container { display:flex; align-items:center; justify-content:space-between; gap:28px; }
.ds-brand-cta h2 { margin:0; max-width:760px; color:#fff; font-size:clamp(1.7rem,3vw,2.7rem); font-weight:900; line-height:1; letter-spacing:-.035em; }
.ds-brand-cta p { margin:10px 0 0; color:rgba(255,255,255,.64); }
body.editor_enable .ds-branding-page img.o_we_custom_image,
body.editor_enable .dsolution-branding-page img.o_we_custom_image {
    outline:1px dashed rgba(212,175,55,.82);
    outline-offset:2px;
    cursor:pointer!important;
}

@media (max-width:1100px) {
    .ds-av-tools-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .ds-web-showcase { grid-template-columns:260px 1fr; }
    .ds-ai-service-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .ds-brand-services-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .ds-brand-visual-grid { grid-template-columns:1fr 1fr; grid-template-rows:auto; }
    .ds-brand-visual-grid .ds-brand-visual-main,.ds-brand-visual-grid figure:nth-child(4),.ds-brand-visual-grid figure:nth-child(5) { grid-row:auto; }
    .ds-brand-visual-grid figure { min-height:260px; }
}

@media (max-width:820px) {
    .ds-av-tools-list,.ds-av-equipment-list { grid-template-columns:1fr; }
    .ds-av-process-grid article::before,.ds-av-process-grid article::after,
    .ds-brand-process-grid article::before,.ds-brand-process-grid article::after { display:none; }
    .ds-md-audience-copy { padding-left:92px; }
    .ds-web-heading-ornament { grid-template-columns:80px 40px 80px; }
    .ds-web-types { grid-template-columns:1fr; }
    .ds-web-device-stage { min-height:330px; }
    .ds-web-device--desktop { width:84%; }
    body.editor_enable .ds-web-upload-bank { grid-template-columns:1fr; }
    .ds-ai-benefits { flex-direction:column; }
    .ds-ai-service-grid { grid-template-columns:1fr; }
    .ds-ai-how-grid { grid-template-columns:1fr; }
    .ds-brand-benefit-grid { grid-template-columns:1fr; }
    .ds-brand-benefit-grid > div { border-right:0; border-bottom:1px solid rgba(255,255,255,.08); }
    .ds-brand-services-grid { grid-template-columns:1fr; }
    .ds-brand-service-card { grid-template-columns:1fr; }
    .ds-brand-service-photo { min-height:220px; }
    .ds-brand-process-grid { grid-template-columns:1fr; gap:30px; }
    .ds-brand-cta .ds-container { align-items:flex-start; flex-direction:column; }
}

/* ==========================================================
   v20.1.9 — Website Builder media selection hardening
   Every requested icon/photo is a real <img> element. In edit mode we make
   even tiny icons visually obvious and easy to click without changing public layout.
   ========================================================== */
body.editor_enable img.ds-editable-media {
    outline:2px dashed rgba(212,175,55,.92)!important;
    outline-offset:3px!important;
    cursor:pointer!important;
    position:relative;
    z-index:4;
}
body.editor_enable img.ds-editable-media:hover {
    outline-style:solid!important;
    box-shadow:0 0 0 5px rgba(212,175,55,.14)!important;
}
/* Small icon zones: temporarily enlarge only in Website Builder for easier selection. */
body.editor_enable .ds-av-trust img.ds-editable-media,
body.editor_enable .ds-av-tools-list img.ds-editable-media,
body.editor_enable .ds-av-equipment-list img.ds-editable-media,
body.editor_enable .ds-av-process-grid img.ds-editable-media,
body.editor_enable .ds-av-training-icon img.ds-editable-media,
body.editor_enable .ds-md-mini-icon img.ds-editable-media,
body.editor_enable .ds-md-audience-icon img.ds-editable-media,
body.editor_enable .ds-web-heading-ornament img.ds-editable-media,
body.editor_enable .ds-web-type-icon img.ds-editable-media,
body.editor_enable .ds-web-extra-icon img.ds-editable-media,
body.editor_enable .ds-ai-benefits img.ds-editable-media,
body.editor_enable .ds-ai-service-head img.ds-editable-media,
body.editor_enable .ds-ai-how-icon img.ds-editable-media,
body.editor_enable .ds-brand-benefit-grid img.ds-editable-media,
body.editor_enable .ds-brand-service-copy img.ds-editable-media,
body.editor_enable .ds-brand-process-grid img.ds-editable-media {
    min-width:42px!important;
    min-height:42px!important;
    width:42px!important;
    height:42px!important;
    padding:5px!important;
    border-radius:9px!important;
    background:#fff!important;
    object-fit:contain!important;
}
.ds-av-training-icon {
    display:flex;
    width:52px;
    height:52px;
    margin:0 auto 14px;
    align-items:center;
    justify-content:center;
    border:1px solid rgba(212,175,55,.32);
    border-radius:999px;
    background:#f7f3ea;
}
.ds-av-training-icon img { width:30px; height:30px; object-fit:contain; }
/* Make the edit-master screenshot bank unmistakable and clickable. */
body.editor_enable .ds-web-upload-bank::before {
    content:"Capturas largas editables: haz clic sobre cada imagen para reemplazarla";
    grid-column:1/-1;
    color:#fff;
    font-size:.78rem;
    font-weight:800;
    letter-spacing:.02em;
}


/* ==========================================================
   v20.1.11 — raster icon slots + deterministic rendering
   Small editable icons are real PNG <img> elements. These rules prevent
   theme/editor glyph styles from shrinking or visually replacing them.
   ========================================================== */
.ds-md-mini-icon,
.ds-md-audience-icon,
.ds-web-heading-ornament > span,
.ds-web-type-icon,
.ds-web-extra-icon,
.ds-ai-benefits small > span,
.ds-ai-service-head > span,
.ds-ai-how-icon,
.ds-brand-benefit-grid > div > span,
.ds-brand-service-copy > span,
.ds-brand-process-grid article > span {
    overflow:hidden;
    font-size:0!important;
    line-height:0!important;
}

.ds-md-mini-icon > img.ds-editable-media {
    display:block!important;width:48px!important;height:48px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-md-audience-icon > img.ds-editable-media {
    display:block!important;width:38px!important;height:38px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-av-trust > span img.ds-editable-media {
    display:block!important;width:28px!important;height:28px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-av-tools-list img.ds-editable-media {
    display:block!important;width:40px!important;height:40px!important;flex:0 0 40px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-av-equipment-list img.ds-editable-media {
    display:block!important;width:38px!important;height:38px!important;flex:0 0 38px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-av-process-grid article > span img.ds-editable-media {
    display:block!important;width:36px!important;height:36px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-web-heading-ornament img.ds-editable-media {
    display:block!important;width:36px!important;height:36px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-web-type-icon img.ds-editable-media {
    display:block!important;width:34px!important;height:34px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-web-extra-icon img.ds-editable-media {
    display:block!important;width:42px!important;height:42px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-ai-benefits small > span img.ds-editable-media {
    display:block!important;width:24px!important;height:24px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-ai-service-head > span img.ds-editable-media {
    display:block!important;width:30px!important;height:30px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-ai-how-icon img.ds-editable-media {
    display:block!important;width:30px!important;height:30px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-brand-benefit-grid img.ds-editable-media {
    display:block!important;width:24px!important;height:24px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-brand-service-copy > span img.ds-editable-media {
    display:block!important;width:32px!important;height:32px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}
.ds-brand-process-grid article > span img.ds-editable-media {
    display:block!important;width:34px!important;height:34px!important;max-width:none!important;max-height:none!important;
    margin:0!important;padding:0!important;object-fit:contain!important;opacity:1!important;visibility:visible!important;filter:none!important;transform:none!important;
}

/* Website Builder: keep each small image easy to select/repaint without changing public layout. */
body.editor_enable img.ds-editable-media[src*="_v11"] {
    cursor:pointer!important;
    outline:2px dashed rgba(212,175,55,.92)!important;
    outline-offset:3px!important;
}


/* ==========================================================
   v20.1.12 — deterministic initial icon rendering
   Initial icon pixels are served from module static PNG files, while the
   same PNGs remain registered as ir.attachment media in media.xml so they
   stay available in Odoo's media library. Website Builder can still replace
   each <img class="o_we_custom_image">; once replaced Odoo stores the chosen
   media normally.
   ========================================================== */
.ds-md-mini-icon > img.o_we_custom_image,
.ds-md-audience-icon > img.o_we_custom_image,
.ds-av-trust img.o_we_custom_image,
.ds-av-tools-list img.o_we_custom_image,
.ds-av-equipment-list img.o_we_custom_image,
.ds-av-process-grid img.o_we_custom_image,
.ds-web-heading-ornament img.o_we_custom_image,
.ds-web-type-icon img.o_we_custom_image,
.ds-web-extra-icon img.o_we_custom_image,
.ds-ai-benefits img.o_we_custom_image,
.ds-ai-service-head img.o_we_custom_image,
.ds-ai-how-icon img.o_we_custom_image,
.ds-brand-benefit-grid img.o_we_custom_image,
.ds-brand-service-copy img.o_we_custom_image,
.ds-brand-process-grid img.o_we_custom_image {
    display:block !important;
    opacity:1 !important;
    visibility:visible !important;
    filter:none !important;
    transform:none !important;
    object-fit:contain !important;
}
.ds-md-mini-icon > img.o_we_custom_image {
    width:48px !important;
    height:48px !important;
}


/* ==========================================================
   v20.1.14 — Marketing: cinco espacios pequeños para PNG
   ========================================================== */
.ds-md-mini-icon {
    position:relative;
    width:64px;
    height:64px;
    padding:7px;
    overflow:hidden;
    border:1px solid rgba(0,33,71,.10);
    border-radius:16px;
    background:#F7F3EA;
}
.ds-md-mini-icon > img.ds-md-png-slot {
    display:block !important;
    width:100% !important;
    height:100% !important;
    max-width:none !important;
    opacity:1 !important;
    visibility:visible !important;
    object-fit:contain !important;
    cursor:pointer !important;
}
body.editor_enable .ds-md-mini-icon {
    outline:2px dashed rgba(212,175,55,.95) !important;
    outline-offset:4px !important;
}
body.editor_enable .ds-md-mini-icon::after {
    content:"Subir PNG";
    position:absolute;
    left:50%;
    bottom:-24px;
    transform:translateX(-50%);
    z-index:8;
    white-space:nowrap;
    padding:2px 6px;
    border-radius:999px;
    background:#002147;
    color:#fff;
    font-size:9px;
    font-weight:800;
    pointer-events:none;
}
body.editor_enable .ds-md-mini-icon > img.ds-md-png-slot {
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    min-height:48px !important;
    padding:0 !important;
    background:transparent !important;
    outline:none !important;
}


/* ==========================================================
   v20.1.15 — Marketing: cassettes editables para iconos PNG
   Mismo patrón visual/editorial que los logos editables del panel superior.
   ========================================================== */
.ds-md-icon-cassette {
    position:relative;
    width:64px !important;
    height:64px !important;
    flex:0 0 64px;
    display:flex !important;
    align-items:center;
    justify-content:center;
    padding:7px !important;
    overflow:visible !important;
    border:1px solid rgba(0,33,71,.10) !important;
    border-radius:16px !important;
    background:#F7F3EA !important;
}
.ds-md-icon-cassette > img.o_we_custom_image {
    display:block !important;
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    min-height:48px !important;
    max-width:48px !important;
    max-height:48px !important;
    padding:0 !important;
    margin:0 !important;
    object-fit:contain !important;
    opacity:1 !important;
    visibility:visible !important;
    background:transparent !important;
    cursor:pointer !important;
}
body.editor_enable .ds-md-icon-cassette {
    outline:2px dashed rgba(212,175,55,.75) !important;
    outline-offset:3px !important;
}
body.editor_enable .ds-md-icon-cassette::after {
    content:"Icono editable";
    position:absolute;
    left:50%;
    top:-25px;
    transform:translateX(-50%);
    white-space:nowrap;
    padding:3px 7px;
    border-radius:999px;
    background:rgba(0,33,71,.88);
    color:#fff;
    font-size:9px;
    font-weight:800;
    line-height:1.2;
    pointer-events:none;
    z-index:8;
}


/* ==========================================================
   v20.1.16 — Marketing: slots de imagen NATIVOS de Odoo
   Se reutiliza exactamente el patrón .ds-md-service-logo que ya funciona
   para Google Ads / Meta / Analytics / GTM.
   ========================================================== */
.ds-md-include-logo-slot {
    width:64px !important;
    height:64px !important;
    flex:0 0 64px !important;
    padding:7px;
    border:1px solid rgba(0,33,71,.10);
    border-radius:16px;
    background:#F7F3EA;
}
.ds-md-include-logo-slot > img.o_we_custom_image {
    display:block !important;
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    min-height:48px !important;
    max-width:48px !important;
    max-height:48px !important;
    object-fit:contain !important;
    background:transparent !important;
    cursor:pointer !important;
}
body.editor_enable .ds-md-include-logo-slot::after {
    content:"Icono editable" !important;
}


/* ==========================================================
   v20.1.17 — Marketing: imagen editable nativa Odoo
   ========================================================== */
.ds-md-include-logo-slot {
    position:relative;
    width:64px !important;
    height:64px !important;
    flex:0 0 64px !important;
    padding:7px !important;
    border:1px solid rgba(0,33,71,.10) !important;
    border-radius:16px !important;
    background:#F7F3EA !important;
}
.ds-md-include-logo-slot > img.o_we_custom_image {
    display:block !important;
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    min-height:48px !important;
    max-width:48px !important;
    max-height:48px !important;
    margin:0 !important;
    padding:0 !important;
    object-fit:contain !important;
    opacity:1 !important;
    visibility:visible !important;
    cursor:pointer !important;
}
body.editor_enable .ds-md-include-logo-slot {
    outline:2px dashed rgba(212,175,55,.72) !important;
    outline-offset:3px !important;
}
body.editor_enable .ds-md-include-logo-slot::after {
    content:"Icono editable" !important;
}


/* ==========================================================
   v20.1.18 — Home performance: poster-first / deferred video
   ========================================================== */
.ds-hero-deferred-video {
    position:absolute;
    inset:0;
    z-index:1;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;
    opacity:0;
    transition:opacity .45s ease;
}
.ds-hero-deferred-video.is-ready { opacity:1; }
.js_ds_lazy_hero_video .ds-hero-native-poster { z-index:0; }
.js_ds_lazy_hero_video .ds-hero-video-overlay { z-index:2; }
.js_ds_lazy_hero_video .ds-hero-content { z-index:3; }
/* Mobile Hero first real video frame: keep it visible until Odoo's video is ready + user interacts. */
@media (max-width:760px){
  .dsolution-page #inicio.ds-hero--video.o_background_video{
    background-image:url('/website_dsolution/static/src/img/content/hero-first-frame.webp?v=20119') !important;
    background-size:cover !important;
    background-position:center center !important;
    background-repeat:no-repeat !important;
  }
  .dsolution-page #inicio.ds-hero--video.o_background_video > .o_bg_video_container{
    opacity:0 !important;
    visibility:hidden !important;
    transition:opacity .35s ease !important;
  }
  .dsolution-page #inicio.ds-hero--video.o_background_video.ds-mobile-video-reveal > .o_bg_video_container{
    opacity:1 !important;
    visibility:visible !important;
  }
}


/* v20.1.25 — Ecosistema final: 2 filas horizontales y distancia uniforme logo-a-logo. */
.dsolution-page .ds-marquee-track{
    display:flex !important;
    flex-direction:row !important;
    flex-wrap:nowrap !important;
    align-items:center !important;
    width:max-content !important;
    gap:0 !important;
}
.dsolution-page .ds-tool{
    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    width:170px !important;
    min-width:170px !important;
    max-width:170px !important;
    flex:0 0 170px !important;
    box-sizing:border-box;
    padding:7px 0 !important;
    gap:12px !important;
    overflow:hidden !important;
}
.dsolution-page .ds-tool-logo-slot{
    width:36px !important;
    height:36px !important;
    min-width:36px !important;
    max-width:36px !important;
    flex:0 0 36px !important;
}
.dsolution-page .ds-tool-label{
    display:block !important;
    min-width:0 !important;
    max-width:170px !important;
    overflow:hidden !important;
    white-space:nowrap !important;
    text-overflow:ellipsis !important;
    opacity:1 !important;
    visibility:visible !important;
    color:rgba(255,255,255,.92) !important;
}
@media (max-width:760px){
    .dsolution-page .ds-tool{
        width:220px !important;
        min-width:220px !important;
        max-width:220px !important;
        flex:0 0 220px !important;
        gap:10px !important;
    }
    .dsolution-page .ds-tool-logo-slot{
        width:30px !important;
        height:30px !important;
        min-width:30px !important;
        max-width:30px !important;
        flex-basis:30px !important;
    }
    .dsolution-page .ds-tool-label{max-width:170px !important;}
}

/* Service cassettes: full color normally; navy tint on hover/focus/touch. */
.ds-service-card img{
    filter:none !important;
    transition:transform .55s ease, filter .35s ease !important;
}
.ds-service-card::after{
    background:linear-gradient(135deg,rgba(2,9,18,.42),rgba(2,9,18,.20)) !important;
    transition:background .35s ease, opacity .35s ease !important;
}
.ds-service-card:hover img,
.ds-service-card:focus-visible img,
.ds-service-card:active img{
    transform:scale(1.045);
    filter:none !important;
}
.ds-service-card:hover::after,
.ds-service-card:focus-visible::after,
.ds-service-card:active::after{
    background:linear-gradient(135deg,rgba(0,33,71,.88),rgba(0,33,71,.62)) !important;
}
.ds-service-card:hover .ds-service-link,
.ds-service-card:focus-visible .ds-service-link,
.ds-service-card:active .ds-service-link{
    color:#fff;
}
@media (hover:none){
    .ds-service-card:active::after{
        background:linear-gradient(135deg,rgba(0,33,71,.90),rgba(0,33,71,.66)) !important;
    }
}



/* DS marketing include numbers aligned */
.ds-md-include-card{position:relative;}
.ds-md-include-top b{
  position:absolute;
  top:31px;
  right:20px;
  margin:0;
  line-height:1;
}

/* Scoped, conservative visual changes requested Oct 2026 */

.ds-service-card:hover::after,.ds-service-card:focus-visible::after,.ds-service-card:active::after{background:linear-gradient(135deg,rgba(0,33,71,.63),rgba(0,33,71,.38))!important}
.ds-process-card img,.ds-process-card:hover img{filter:none!important;opacity:1!important}
.ds-process-card::after{background:linear-gradient(to top,rgba(0,25,50,.82),rgba(0,25,50,.2))!important}
@media(min-width:1025px) and (min-height:650px){
 .ds-web-hero{min-height:calc(100svh - 75px);height:auto;max-height:none;padding:83px 0 20px!important}
 .ds-web-heading{margin-bottom:10px!important}
 .ds-web-heading h1{font-size:clamp(28px,2.8vw,43px)!important;white-space:nowrap}
 .ds-web-heading-ornament{margin-bottom:3px!important}
 .ds-web-heading small{margin-top:4px!important}
 .ds-web-showcase{align-items:center}
 .ds-web-types button{min-height:60px!important;padding:7px 12px!important}
 .ds-web-device-stage{min-height:310px!important;max-height:43vh}
}
.ds-web-types button{grid-template-columns:42px minmax(0,1fr) 30px!important;grid-template-rows:auto auto;column-gap:12px;text-align:left}
.ds-web-types button .ds-web-type-icon{grid-column:1;grid-row:1 / 3;align-self:center}
.ds-web-types button b{grid-column:2;grid-row:1;align-self:end}
.ds-web-types button small{grid-column:2;grid-row:2;align-self:start}
.ds-web-types button i{grid-column:3;grid-row:1 / 3;align-self:center;justify-self:center}
.ds-web-types button.is-active i{background:#d4af37!important;color:#061523!important;border-radius:50%}
@media(max-width:1024px){.ds-web-heading h1{white-space:normal}}

.js_ds_web_preview.is-scrolling{animation-delay:1s!important;animation-fill-mode:both!important}
