/* Identidad del PSD «web david»: compartida por todas las páginas públicas. */
:root,
.page-trabajos {
  --violet: #1a04a0;
  --blue: #0328c6;
  --cyan: #03ffff;
  --ink: #101216;
  --muted: #59616d;
  --paper: #f1f2f3;
  --navy: #0b0e12;
  --line: #dce0e5;
  --wrap: min(1400px, calc(100% - 5vw));
}
body { background: var(--paper); font-size: clamp(13.005px, 1.10925vw, 18.36px); }
h1,h2,h3 { letter-spacing: -.055em; }
h2 { font-size: clamp(1.7595rem, 3.519vw, 3.5955rem); line-height: 1.03; }
h1 em,h2 em { color: var(--blue); }
a,button,input,textarea,select { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid var(--blue); outline-offset: 5px; }
.site-header :focus-visible,.hero :focus-visible,.ai-section :focus-visible,.contact :focus-visible,footer :focus-visible,.page-hero :focus-visible { outline-color: var(--cyan); }
.site-header,.site-header.header-on-light {
  position: relative; height: clamp(84px, 7vw, 112px); padding-inline: 6.5%; display: grid; grid-template-columns: 18.2vw minmax(0,1fr) auto;
  background: var(--violet); color: #fff; border: 0; gap: 4vw;
}
.brand-logo { width: 100%; max-width: 330px; height: auto; filter: none; transform: none; }
.site-header nav { margin-left: 0; gap: 18px; justify-content: space-between; font-size: clamp(9.945px, 0.918vw, 16.83px); text-transform: uppercase; align-items: center; white-space: nowrap; }
.site-header .nav-contact { display: none; }
.site-header nav a,.site-header.header-on-light nav a { color: #fff; opacity: .85; padding-block: 12px; }
.site-header nav a:hover,
.site-header nav a[aria-current="page"],
.site-header.header-on-light nav a[aria-current="page"] { opacity: 1; color: var(--cyan); }
.site-header>.btn { background: none; color: var(--cyan); box-shadow: none; padding-inline: 0; white-space: nowrap; font-size: clamp(10.71px, 0.8415vw, 15.3px); gap: 12px; }
.site-header>.btn span { color: #fff; font-size: 27.54px; line-height: 1; }
.menu,.site-header.header-on-light .menu { color: #fff; }
.btn { border-radius: 999px; background: var(--violet); color: #fff; padding: 17px 32px; font-size: clamp(12.24px, 0.9945vw, 16.83px); justify-content: center; box-shadow: none; }
.btn:hover,.btn:focus-visible { background: var(--blue); color: #fff; box-shadow: 0 7px 24px #1a04a026; }
.hero { min-height: min(73.4vw,1326px); overflow: visible; background: #000; }
.hero-bg { background: linear-gradient(90deg,#000f 0%,#000b 35%,#0002 77%),url('../images/psd/hero.webp') center / cover no-repeat; }
.hero:after { display: none; }
.hero-content { width: min(1400px,80%); padding: 100px 0 45px; }
.kicker { color: var(--cyan); font-size: clamp(11.475px,1.224vw,16.83px); letter-spacing: -.03em; text-transform: none; }
.hero h1 { font-size: clamp(2.6775rem,5.508vw,5.508rem); line-height: .98; margin: 28px 0 38px; max-width: 1100px; }
.hero h1 em { color: #eeeef3; }
.hero .lead { color: #eeeef3; font-size: clamp(13.005px,1.4535vw,19.89px); max-width: 1000px; line-height: 1.45; }
.hero-actions { gap: 26px; }
.hero .hero-actions { flex-direction: column; align-items: flex-start; margin-top: 48px; gap: 28px; }
.hero .btn { min-width: 300px; }
.hero .text-link { font-size: 12.24px; padding-inline: 16px; }
.hero .text-link span { font-size: 21.42px; vertical-align: middle; }
.hero-proof { margin-top: 110px; color: var(--cyan); font-size: clamp(9.945px,0.918vw,16.065px); gap: clamp(14px,1.15vw,24px); letter-spacing: 0; }
.hero-proof i { display: none; }
.ai-card { width: clamp(300px,28.2vw,510px); right: 6.2%; bottom: -45px; background: var(--cyan); color: var(--violet); border: 0; border-radius: 32px; padding: 55px 30px 35px; backdrop-filter: none; box-shadow: -38px -22px 0 var(--violet); }
.ai-card small { color: var(--violet); margin-bottom: 26px; font-size: 9.945px; }
.ai-card strong { font-size: 15.3px; font-weight: 800; line-height: 1.3; }
.intro { padding-top: 110px; padding-bottom: 55px; }
.section-tag { font-size: clamp(10.71px,0.918vw,16.065px); letter-spacing: .15em; color: #657180; }
.light,.page-trabajos .page-hero .section-tag { color: #c1bcea; }
.intro>div>p { max-width: 1050px; font-size: clamp(15.3px,1.41525vw,24.48px); line-height: 1.7; }
.services { margin-bottom: 85px; }
.service { min-height: 365px; padding: clamp(26px,2.4vw,38px); display: flex; flex-direction: column; background: var(--paper); transition: transform .25s ease, box-shadow .25s ease, background .25s ease; isolation: isolate; }

.service-icon { height: 85px; flex-shrink: 0; }
.service-icon img { display: block; width: 60px; height: auto; }
.service h3 { font-size: clamp(20.655px,2.0655vw,35.19px); line-height: 1.2; }
.service>p:not(.eyebrow) { color: #536174; padding-bottom: 12px; font-size: clamp(13.77px,1.26225vw,21.42px); line-height: 1.65; }
.eyebrow,.page-trabajos .eyebrow { color: #315b88; font-size: clamp(9.18px,0.8415vw,14.535px); line-height: 1.5; }
.service a span { color: var(--violet); }
.ai-section { background: var(--violet); padding: 90px 0; }
.ai-grid { gap: 35px; min-height: 620px; }
.ai-grid h2 { font-size: clamp(1.7595rem,2.907vw,3.06rem); }
.ai-grid h2 em { color: #fff; }
.ai-grid>div>p:not(.section-tag) { color: #d3cdef; }
.ai-section .btn { background: transparent; border: 1px solid #d3cdef; margin-top: 25px; }
.ai-section .btn:hover { background: #ffffff18; }
.ai-illustration { position: relative; width: min(100%,600px); justify-self: center; }
.ai-illustration>img { display: block; width: 100%; height: auto; }
.ai-illustration__label { position: absolute; top: 43%; left: 50%; transform: translateX(-50%); text-align: center; color: var(--violet); }
.ai-illustration__label>span { display: block; font-size: clamp(30.6px,3.366vw,53.55px); font-weight: 400; line-height: 1; }
.ai-illustration__label strong { display: block; font-size: clamp(10.71px,1.071vw,16.83px); line-height: 1.05; }
.ai-label { position: absolute; color: #e6e0ff; font-size: 8.415px; }
.ai-label--user { top: 16%; left: 5%; }
.ai-label--automation { top: 8%; right: 12%; }
.ai-label--content { top: 49%; right: 0; }
.ai-label--analysis { bottom: 9%; right: 23%; }
.ai-label--code { bottom: 9%; left: 13%; }
.work { padding: 130px 0; }
.section-head { gap: 70px; }
.project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 55px 36px; }
.project:first-child { grid-row: auto; }
.project img,.project:first-child img { width: 100%; height: 100%; aspect-ratio: 3/2; object-fit: cover; object-position: top; }
.project-image span { background: var(--navy); }
.cases { padding: 120px 0; }
.cases h2 em { color: #4967ff; }
.case-grid { background: none; gap: 0; }
.case-grid article { padding: 40px 70px; }
.case-grid article+article { border-left: 1px solid #ffffff1a; }
.case-grid strong { color: #75fbfd; }
.case-grid small { color: #a8afbc; }
.tech { align-items: start; gap: 30px; }
.tech-intro img { display: block; width: 210px; height: auto; margin: 90px auto 0; }
.tech-list { max-width: 790px; gap: 14px; }
.tech-list span { border: 0; font-size: 9.945px; padding: 14px 20px; }
.integral { gap: 50px; grid-template-columns: 1fr 2fr; }
.integral h2 { font-size: clamp(1.7595rem,2.601vw,2.907rem); }
.integral li { padding-block: 30px; }
.contact { background: var(--blue); padding: 80px 0 60px; }
.contact-grid { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: clamp(40px,5vw,90px); }
.contact-grid h2 { margin-bottom: 100px; }
.contact form,.standalone-form { background: #081cb1; gap: 22px; }
.contact form,.standalone-form { padding: clamp(26px,2.8vw,44px); }
.contact .btn,.standalone-form .btn { background: linear-gradient(115deg,#010126,#0c075e); border-radius: 6px; padding: 18px 26px; justify-content: flex-start; gap: 35px; box-shadow: 0 12px 30px #020a6b22; }
.contact .check { flex-wrap: wrap; gap: 5px; line-height: 1.6; }
.check a { text-decoration: underline; text-underline-offset: 3px; }
.contact input:focus-visible,.contact textarea:focus-visible,.contact select:focus-visible,.standalone-form :focus-visible { outline: 2px solid var(--cyan); outline-offset: 4px; }
footer { background: #040b13; }
.footer-brand { align-self: start; }
.footer-brand .brand-logo { width: min(100%,28vw); max-width: 510px; height: auto; }
.footer-grid { width: min(1400px,85.5%); grid-template-columns: 2.3fr .75fr .85fr; gap: 7vw; align-items: start; }
.footer-grid p,.footer-grid>div:not(.brand) { color: #a8b1bf; }
.footer-grid>div:not(.brand) { font-size: clamp(13.77px,1.071vw,18.36px); gap: 16px; }
.footer-identity p { font-size: clamp(11.475px,0.918vw,15.3px); line-height: 1.7; margin: 30px 0 0; max-width: 430px; }
.footer-grid a:hover { color: var(--cyan); }
.legal { color: #959eaa; }
/* Interior: las mismas superficies, acentos y controles que la portada. */
.page-hero,.page-trabajos .page-hero { padding: 100px 0; background: var(--violet); }
.page-hero:after,.page-trabajos .page-hero:after { background: radial-gradient(ellipse at 85% 40%,#0328c699,transparent 65%); }
.page-hero h1 { font-size: clamp(2.295rem,4.9725vw,4.8195rem); }
.page-hero h1 em { color: var(--cyan); }
.page-hero .btn { background: var(--cyan); color: var(--violet); }
.page-hero>div>p:not(.section-tag),.page-trabajos .page-hero>div>p:not(.section-tag) { color: #e0dbfa; }
.values strong,.detail-grid article>span,.detail-grid a,.inline-link,.portfolio-list a,.portfolio-list strong,.contact-page a,.portfolio-actions a,.solutions-grid a,.solutions-grid strong,.nearby a,.legal-content a,.page-trabajos .portfolio-list strong,.page-trabajos .portfolio-list a,.page-trabajos .portfolio-actions a { color: var(--blue); }
.detail-grid article { border-top-color: var(--violet); }
.values article,.feature-grid article,.detail-grid article,.solutions-grid article { border-radius: 4px; }
.inner-cta,.page-trabajos .inner-cta { background: var(--blue); color: #fff; }
.inner-cta h2 em,.page-trabajos .inner-cta h2 em { color: var(--cyan); }
.inner-cta .section-tag,.page-trabajos .inner-cta .section-tag { color: #d2dbff; }
.price-card,.local-aside { background: var(--violet); border-radius: 24px; }
.price-card strong { color: var(--cyan); }
.price-card small,.price-card p,.local-aside p { color: #ded7f9; }
.contact-page .btn { color: #fff; }
.portfolio-actions a.btn,.solutions-grid a.btn,.portfolio-list a.btn { color: #fff; }
.contact-page .standalone-form a { color: #fff; }
.solution-placeholder { background: var(--violet); color: var(--cyan); }
.nearby a:hover { background: var(--violet); }
.slider-arrow,.page-trabajos .slider-arrow { background: var(--violet); }
.slider-arrow:hover,.slider-arrow:focus-visible,.page-trabajos .slider-arrow:hover,.page-trabajos .slider-arrow:focus-visible { background: var(--blue); }
.portfolio-gallery,.portfolio-gallery .gallery-shot,.project-screens .gallery-shot { scrollbar-color: var(--violet) #dce4eb; }
.legal-page { padding-top: 85px; }
.cookie-banner { background: #f1f2f3f5; border-color: #dce0e5; }
.cookie-banner button { background: var(--violet); border-radius: 999px; box-shadow: none; }
.cookie-banner button:hover,.cookie-banner button:focus-visible { background: var(--blue); }
.cookie-banner .cookie-secondary { background: #e4e2f4; color: var(--violet); }
.cookie-banner__copy a { color: var(--violet); }
.cookie-settings input { accent-color: var(--violet); }
/* Escala tipográfica y proporciones de la maqueta original. */
.section-head>p,.ai-grid>div>p:not(.section-tag),.integral>div>p,.contact-grid>div>p:not(.section-tag) { font-size: clamp(14.535px,1.33875vw,22.95px); line-height: 1.7; }
.section-head>p { max-width: 650px; }
.ai-grid>div>p:not(.section-tag) { max-width: 800px; }
.ai-card small { font-size: clamp(12.24px,0.9945vw,17.595px); }
.ai-card strong { font-size: clamp(16.83px,1.33875vw,23.715px); }
.service .num { font-size: 12.24px; }
.service .service-link { position: static; margin-top: auto; font-size: clamp(12.24px,1.071vw,17.595px); }
.service-link::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.service:focus-within { z-index: 3; transform: translateY(-8px); background: #b9b9bd; box-shadow: 0 14px 35px #16142640; }
.service:focus-within .service-link { outline: 0; }
.service:has(.service-link:focus-visible) { outline: 3px solid var(--violet); outline-offset: 3px; }
@media(hover:hover) and (prefers-reduced-motion:no-preference) {
  .service:hover { z-index: 3; transform: translateY(-10px) scale(1.025); background: #b9b9bd; box-shadow: 0 15px 42px #16142655; }
}
.project-preview { display: block; border-radius: 5px; background: #e1e4eb; padding: clamp(12px,1.5vw,25px); }
.project-image { aspect-ratio: 3/2; box-shadow: 0 5px 20px #1112; }
.project h3 { font-size: clamp(20.655px,1.683vw,29.07px); margin-bottom: 12px; }
.project p { font-size: clamp(13.005px,1.071vw,18.36px); line-height: 1.65; max-width: none; }
.project strong { font-size: clamp(11.475px,0.95625vw,16.065px); }
.project .project-category { color: #52627e; font-size: 9.945px; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 12px; }
.project .project-copy { padding-top: 25px; }
.tech-list span { font-size: clamp(11.475px,0.918vw,15.3px); }
.case-grid article>p { font-size: clamp(13.77px,1.1475vw,19.89px); }
.case-grid span { font-size: clamp(9.945px,0.87975vw,15.3px); line-height: 1.6; }
.case-grid small,.integral li small { font-size: clamp(12.24px,0.9945vw,16.83px); line-height: 1.65; }
.integral li span { font-size: clamp(13.77px,1.1475vw,19.89px); }
.contact label,.standalone-form label { font-size: clamp(12.24px,0.918vw,16.065px); gap: 12px; }
.contact input,.contact textarea,.contact select,.standalone-form input,.standalone-form textarea,.standalone-form select { min-width: 0; width: 100%; font: inherit; font-size: clamp(13.005px,1.1475vw,19.125px); padding: 11px 0; }
.contact textarea,.standalone-form textarea { min-height: 110px; height: 110px; }
.contact .check,.standalone-form .check { font-size: 12.24px; gap: 8px; }
.contact .check input,.standalone-form .check input { width: 18px; height: 18px; flex: 0 0 18px; accent-color: var(--cyan); }
.contact .btn:hover,.contact .btn:focus-visible,.standalone-form .btn:hover,.standalone-form .btn:focus-visible { background: linear-gradient(115deg,#120463,#1a04a0); box-shadow: 0 14px 35px #03053650; }
.contact .btn span,.standalone-form .btn span { font-size: 22.95px; }
footer { padding-top: 110px; }
.footer-identity { display: block!important; }
.footer-identity .brand { display: block; }
.legal { font-size: 9.18px; line-height: 1.6; }
.prose,.values p,.feature-grid p,.detail-grid p,.mini-list,.solutions-grid p,.faq details p,.legal-content { font-size: clamp(13.77px,1.071vw,18.36px); }
.faq summary { font-size: clamp(16.065px,1.3005vw,22.185px); }
.detail-grid a,.inline-link,.portfolio-actions a,.solutions-grid a { font-size: clamp(13.005px,0.9945vw,16.83px); }
.contact-page { grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); }
.contact-page .standalone-form { min-width: 0; }
@media(min-width:1600px) {
  .hero { min-height: min(73.4vw,1326px); }
  .hero-content { padding-top: 150px; }
  .hero-proof { margin-top: 170px; }
  .ai-card { width: min(28.2vw,510px); padding: 65px 36px 45px; }
}
@media(max-width:1100px) {
  .site-header,.site-header.header-on-light { height: 76px; display: flex; }
  .brand-logo { width: 200px; }
  .site-header nav,.site-header>.btn { display: none; }
  .menu { display: block; margin-left: auto; min-width: 44px; min-height: 44px; cursor: pointer; }
  .site-header nav.is-open { display: flex; position: absolute; top: 100%; left: 0; right: 0; margin: 0; background: var(--violet); padding: 20px 32px 30px; flex-direction: column; align-items: stretch; gap: 4px; border-top: 1px solid #ffffff30; box-shadow: 0 15px 25px #0003; }
  .site-header nav a { padding: 14px 0; }
  .site-header .nav-contact { display: block; color: var(--cyan); }
  .hero { min-height: 780px; }
  .hero-content { padding-top: 75px; }
  .hero h1 { font-size: clamp(2.6775rem,6.12vw,4.59rem); }
  .hero .lead { max-width: 730px; }
  .ai-card { width: 250px; padding: 35px 25px; }
  .ai-card strong { font-size: 13.005px; }
  .ai-grid { min-height: 500px; }
  .service { padding: 28px; }
  .service h3 { font-size: 21.42px; }
  .contact-grid { gap: 40px; }
  .integral { grid-template-columns: 1fr 1.6fr; gap: 30px; }
}
@media(max-width:900px) {
  :root,.page-trabajos { --wrap: calc(100% - 40px); }
  .hero-content { width: calc(100% - 64px); }
  .hero { padding-bottom: 40px; }
  .ai-card { display: block; right: 30px; bottom: -45px; width: 220px; box-shadow: -20px -16px 0 var(--violet); padding: 28px 22px; }
  .hero-proof { max-width: 290px; flex-wrap: wrap; }
  .intro,.tech,.integral { grid-template-columns: 1fr; }
  .intro { padding-top: 120px; }
  .ai-grid { grid-template-columns: 1fr; gap: 55px; }
  .ai-illustration { width: min(100%,480px); }
  .ai-illustration__label>span { font-size: 41.31px; }
  .ai-illustration__label strong { font-size: 13.77px; }
  .section-head { gap: 10px; }
  .project-grid { grid-template-columns: 1fr; }
  
  .tech-intro { display: flex; align-items: center; justify-content: space-between; }
  .tech-intro img { width: 125px; margin: 0 30px 0 0; }
  .contact-grid,.contact-page { grid-template-columns: 1fr; }
  .contact-grid h2 { margin-bottom: 35px; }
  .footer-grid { width: var(--wrap); grid-template-columns: 1fr 1fr; }
  .footer-identity { grid-column: 1 / -1; }
  .case-grid article { padding: 30px; }
}
@media(max-width:600px) {
  :root,.page-trabajos { --wrap: calc(100% - 36px); }
  .site-header,.site-header.header-on-light { padding-inline: 20px; height: 68px; }
  .brand-logo { width: 175px; }
  .hero { min-height: 0; padding-bottom: 0; display: block; }
  .hero-bg { background-position: 65% center; background-image: linear-gradient(90deg,#000e,#0008),url('../images/psd/hero.webp'); }
  .hero-content { width: calc(100% - 40px); padding: 65px 0 45px; }
  .hero h1 { font-size: clamp(2.02725rem,7.497vw,2.8305rem); margin: 22px 0 28px; }
  .hero .lead { font-size: 13.005px; }
  .hero .hero-actions { margin-top: 32px; gap: 20px; }
  .hero .btn { min-width: 0; width: 100%; }
  .hero-proof { margin-top: 45px; max-width: none; font-size: 9.18px; }
  .ai-card { position: relative; right: auto; bottom: auto; margin: 0 20px 0 auto; transform: translateY(24px); width: min(290px,calc(100% - 60px)); padding: 30px; }
  .ai-card small { margin-bottom: 15px; }
  .intro { padding: 85px 0 40px; gap: 20px; }
  .services { margin-bottom: 65px; }
  .service { min-height: 300px; padding: 26px; }
  .service-icon { height: 80px; }
  .service-icon img { width: 58px; }
  
  
  .ai-section,.cases { padding: 65px 0; }
  .contact { padding: 55px 0 40px; }
  .ai-grid { gap: 40px; }
  .ai-illustration__label>span { font-size: 32.13px; }
  .ai-illustration__label strong { font-size: 11.475px; }
  .ai-label { font-size: 9.18px; }
  .work,.tech,.integral,.content-section { padding-block: 65px; }
  .section-head { margin-bottom: 35px; }
  .project:first-child img,.project img { height: 100%; }
  .case-grid { margin-top: 30px; }
  .case-grid article { padding: 30px 10px; }
  .case-grid article+article { border-left: 0; border-top: 1px solid #ffffff1a; }
  .tech-intro img { width: 95px; margin-right: 15px; }
  .tech-list { gap: 8px; }
  .tech-list span { font-size: 10.71px; padding: 12px 15px; }
  .integral { gap: 25px; }
  .integral li { gap: 12px; }
  .contact form,.standalone-form { padding: 25px 20px; }
  .contact label,.standalone-form label { font-size: 12.24px; }
  .contact .check,.standalone-form .check { font-size: 10.71px; flex-wrap: wrap; }
  .contact .btn,.standalone-form .btn { padding: 20px; gap: 20px; }
  .footer-grid>div:not(.brand) { font-size: 13.77px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 30px 20px; }
  .footer-grid>.brand,.footer-grid>p { grid-column: 1 / -1; }
  .footer-brand .brand-logo { width: min(100%,360px); }
  .page-hero,.page-trabajos .page-hero { padding: 65px 0; }
  .page-hero h1 { font-size: clamp(2.02725rem,7.65vw,2.6775rem); overflow-wrap: anywhere; }
  .page-hero .hero-actions { align-items: flex-start; flex-direction: column; }
  .two-cols,.hosting-intro,.contact-page,.local-content { gap: 35px; }
  .detail-grid article,.values article,.feature-grid article { padding: 25px; }
  .price-card { padding: 32px; }
  .inner-cta,.page-trabajos .inner-cta { padding: 65px 0; }
  .legal-page { padding-top: 60px; }
}
