/* ==========================================================================
   Páginas interiores — componentes compartidos
   (Servicios, Soluciones, Portfolio, Precios, Blog, Trabaja, Recursos,
   Contacto)
   ========================================================================== */

/* ===== Cabecera de página ===== */
.p-hero{padding:72px 0 88px}
.p-hero .wrap{display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center}
.p-hero--solo .wrap{grid-template-columns:1fr}
.p-title{
  font-family:var(--font-brand);font-weight:900;
  font-size:clamp(44px,7vw,100px);
  line-height:.92;letter-spacing:-0.035em;
  color:var(--blue);margin:0 0 26px;
}
.p-hero--solo .p-title{max-width:16ch}
.p-hero .lead{max-width:500px}

/* ===== Bloques ===== */
.block{padding:100px 0}
.block--tight{padding-top:0}
.block-blue{background:var(--blue);color:var(--white)}
.block-blue .eyebrow{color:rgba(255,255,255,.6)}
.block-blue .h2{color:var(--white)}
.block-blue .h2 .hl{color:var(--orange)}
.block-blue .lead{color:rgba(255,255,255,.78)}
.block-blue .ph{background:rgba(255,255,255,.08)}
.block-blue .ph::before{
  color:rgba(255,255,255,.5);
  background-image:
    linear-gradient(45deg,transparent 49.6%,rgba(255,255,255,.1) 50%,transparent 50.4%),
    linear-gradient(-45deg,transparent 49.6%,rgba(255,255,255,.1) 50%,transparent 50.4%);
}
.sec-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  flex-wrap:wrap;gap:24px;margin-bottom:56px;
}
.center{text-align:center}
.center .lead{margin-left:auto;margin-right:auto}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.center .btns{justify-content:center}

/* ===== Servicio en detalle (foto + texto, alternando lados) ===== */
.svc-row{
  display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;
  padding:56px 0;
}
.svc-row + .svc-row{border-top:1px solid var(--line)}
.svc-row:nth-child(even) .ph{order:2}
.svc-row-num{
  font-family:var(--font-brand);font-weight:900;font-style:italic;
  font-size:15px;color:var(--blue);
}
.svc-row-title{
  font-family:var(--font-brand);font-weight:900;
  font-size:clamp(32px,4vw,52px);line-height:1;letter-spacing:-0.02em;
  color:var(--blue);margin:8px 0 18px;
}
.svc-row p{font-size:16.5px;line-height:1.7;color:#444;margin:0 0 22px;max-width:480px}

/* lista con rayita azul */
.ticks{list-style:none;padding:0;margin:0 0 26px;display:grid;gap:10px}
.ticks li{position:relative;padding-left:26px;font-size:15.5px;line-height:1.5}
.ticks li::before{
  content:'';position:absolute;left:0;top:.62em;
  width:14px;height:3px;border-radius:999px;background:var(--blue);
}
.block-blue .ticks li::before{background:var(--orange)}
.for-who{font-size:14px;color:var(--muted);margin:0}
.for-who strong{color:var(--blue)}

/* ===== Pasos numerados ===== */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;counter-reset:step}
.steps--3{grid-template-columns:repeat(3,1fr)}
.step{border-top:3px solid var(--blue);padding-top:20px}
.block-blue .step{border-top-color:rgba(255,255,255,.3)}
.step-num{
  font-family:var(--font-brand);font-weight:900;font-style:italic;
  font-size:13px;color:var(--blue);
}
.block-blue .step-num{color:var(--orange)}
.step h3{
  font-family:var(--font-brand);font-weight:900;font-size:20px;line-height:1.15;
  color:var(--blue);margin:8px 0 10px;
}
.block-blue .step h3{color:var(--white)}
.step p{font-size:15px;line-height:1.65;color:#555;margin:0}
.block-blue .step p{color:rgba(255,255,255,.75)}

/* ===== Tarjetas de herramienta (Soluciones) ===== */
.tool{
  display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center;
}
.tool + .tool{margin-top:110px}
.tool:nth-child(even) .ph{order:2}
.tool-tag{
  display:inline-block;
  font-family:var(--font-brand);font-weight:900;font-size:12px;
  color:var(--white);background:var(--blue);
  padding:6px 12px;border-radius:var(--radius-btn);margin-bottom:18px;
}
.tool p{font-size:16.5px;line-height:1.7;color:#444;margin:18px 0 22px;max-width:480px}

/* ===== Preguntas frecuentes ===== */
.faq{max-width:820px}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{
  list-style:none;cursor:pointer;
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding:22px 0;
  font-family:var(--font-brand);font-weight:900;font-size:18px;color:var(--blue);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:'+';font-size:26px;line-height:1;transition:transform .3s var(--ease-menu);
}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:0 0 22px;font-size:16px;line-height:1.7;color:#444;max-width:680px}

/* ===== Portfolio por cliente ===== */
.clients{display:grid;grid-template-columns:repeat(2,1fr);gap:48px 28px}
.client{display:block;text-decoration:none;color:inherit}
.client .ph{margin-bottom:16px}
.client:hover .ph img{transform:scale(1.04)}
.client:nth-child(4n+2),.client:nth-child(4n+3){/* ritmo editorial */}
.client-meta{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.client-name{
  position:relative;
  font-family:var(--font-brand);font-weight:900;font-size:24px;color:var(--blue);
}
.client-name::after{
  content:'';position:absolute;left:0;right:100%;bottom:-4px;
  height:3px;border-radius:999px;background:var(--blue);
  transition:right .3s var(--ease-menu);
}
.client:hover .client-name::after{right:0}
.client-type{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}

/* ficha de cliente */
.case-facts{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:28px 0;margin-bottom:72px;
}
.case-facts dt{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.case-facts dd{margin:0;font-family:var(--font-brand);font-weight:900;font-size:18px;color:var(--blue)}
.case-text{max-width:680px;margin:0 0 72px}
.case-text p{font-size:17px;line-height:1.75;color:#444;margin:0 0 18px}
.gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:20px}
.g-full{grid-column:1 / -1}
.g-half{grid-column:span 6}
.g-left{grid-column:1 / span 5}
.g-right{grid-column:7 / span 6;margin-top:90px}
.case-next{
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px;
  border-top:1px solid var(--line);padding-top:32px;margin-top:88px;
}

/* ===== Blog ===== */
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:44px 28px}
.post{display:block;text-decoration:none;color:inherit}
.post .ph{margin-bottom:16px}
.post:hover .ph img{transform:scale(1.04)}
.post-meta{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.post-title{
  font-family:var(--font-brand);font-weight:900;font-size:21px;line-height:1.2;
  color:var(--blue);margin:0 0 10px;
}
.post-excerpt{font-size:15px;line-height:1.65;color:#555;margin:0}
.post--featured{grid-column:1 / -1;display:grid;grid-template-columns:1.3fr 1fr;gap:44px;align-items:center}
.post--featured .ph{margin:0}
.post--featured .post-title{font-size:clamp(28px,3.4vw,42px);line-height:1.05}
.soon{
  display:inline-block;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--blue);border:1.5px solid var(--blue);border-radius:var(--radius-btn);
  padding:3px 8px;margin-left:8px;vertical-align:middle;
}

/* artículo */
.article{max-width:720px;margin:0 auto;padding:0 24px 110px}
.article .ph{margin:0 0 48px}
.article h2{
  font-family:var(--font-brand);font-weight:900;font-size:28px;line-height:1.15;
  color:var(--blue);margin:48px 0 16px;
}
.article p,.article li{font-size:17.5px;line-height:1.8;color:#333}
.article p{margin:0 0 20px}
.article blockquote{
  margin:40px 0;padding:0 0 0 22px;border-left:3px solid var(--blue);
  font-family:var(--font-brand);font-weight:900;font-size:22px;line-height:1.3;color:var(--blue);
}

/* ===== Estado vacío (Recursos) ===== */
.empty{
  border:2px dashed rgba(51,79,180,.25);border-radius:8px;
  padding:72px 32px;text-align:center;
}
.empty img{width:64px;height:auto;margin:0 auto 24px}
.empty h2{
  font-family:var(--font-brand);font-weight:900;font-size:clamp(26px,3vw,36px);
  color:var(--blue);margin:0 0 12px;
}
.empty p{font-size:16px;line-height:1.7;color:#555;max-width:480px;margin:0 auto}
.teasers{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.teaser .ph{margin-bottom:14px}
.teaser h3{font-family:var(--font-brand);font-weight:900;font-size:19px;color:var(--blue);margin:0 0 6px}
.teaser p{font-size:14.5px;line-height:1.6;color:#555;margin:0}

/* ===== Contacto ===== */
.contact-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:72px;align-items:start}
.contact-list{list-style:none;padding:0;margin:0;display:grid;gap:26px}
.contact-list dt,.contact-list .k{
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;
}
.contact-list a,.contact-list .v{
  font-family:var(--font-brand);font-weight:900;font-size:clamp(20px,2.2vw,26px);
  color:var(--blue);text-decoration:none;
}
.contact-list a:hover{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:3px}

/* ===== Formularios ===== */
.form{display:grid;gap:22px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.field label,.field .label{
  display:block;margin-bottom:8px;
  font-family:var(--font-brand);font-weight:900;font-size:14px;color:var(--blue);
}
.field .hint{font-family:var(--font-body);font-weight:400;color:var(--muted);font-size:13px}
.field input,.field textarea,.field select{
  width:100%;
  font:inherit;font-size:16px;color:var(--ink);
  background:var(--white);
  border:2px solid #d9dcea;border-radius:var(--radius-btn);
  padding:14px 16px;
  transition:border-color .2s ease;
}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--blue)}
.field input:user-invalid,.field textarea:user-invalid{border-color:#c0392b}
.counter{display:block;text-align:right;font-size:12px;color:var(--muted);margin-top:6px}
.legal{font-size:13px;color:var(--muted);line-height:1.6;margin:0}
.legal a{color:var(--blue)}
.hidden{display:none !important}

/* opciones tipo tarjeta (checkbox / radio) */
.choices{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.choice{position:relative;display:block;cursor:pointer}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice-box{
  display:flex;flex-direction:column;gap:4px;height:100%;
  border:2px solid #d9dcea;border-radius:var(--radius-btn);
  padding:18px 18px 18px 54px;
  position:relative;
  transition:border-color .2s ease,background .2s ease;
}
.choice-box::before{
  content:'';position:absolute;left:18px;top:20px;
  width:20px;height:20px;border:2px solid #b9bfd8;border-radius:4px;
  transition:all .2s ease;
}
.choice input[type=radio] + .choice-box::before{border-radius:50%}
.choice-title{font-family:var(--font-brand);font-weight:900;font-size:16px;color:var(--blue)}
.choice-sub{font-size:13.5px;color:#666;line-height:1.45}
.choice:hover .choice-box{border-color:rgba(51,79,180,.5)}
.choice input:checked + .choice-box{border-color:var(--blue);background:#f2f4fb}
.choice input:checked + .choice-box::before{
  background:var(--blue);border-color:var(--blue);
  box-shadow:inset 0 0 0 3px var(--white);
}
.choice input:focus-visible + .choice-box{outline:3px solid rgba(51,79,180,.35);outline-offset:2px}

/* ===== Cuestionario por pasos (Precios / Trabaja) ===== */
.quiz{max-width:820px}
.quiz-progress{
  display:flex;align-items:center;gap:16px;margin-bottom:44px;
}
.quiz-bar{flex:1;height:3px;border-radius:999px;background:#e3e6f1;overflow:hidden}
.quiz-bar span{display:block;height:100%;width:0;background:var(--blue);border-radius:999px;transition:width .5s var(--ease-menu)}
.quiz-count{font-family:var(--font-brand);font-weight:900;font-style:italic;font-size:13px;color:var(--blue);white-space:nowrap}
fieldset{border:0;padding:0;margin:0;min-width:0}
legend{padding:0}
.quiz-step{display:none}
.quiz-step.is-active{display:block;animation:stepIn .45s var(--ease-menu)}
@keyframes stepIn{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
.quiz-q{
  font-family:var(--font-brand);font-weight:900;
  font-size:clamp(26px,3.4vw,40px);line-height:1.08;letter-spacing:-0.02em;
  color:var(--blue);margin:0 0 10px;
}
.quiz-help{font-size:16px;color:#555;margin:0 0 28px}
.quiz-nav{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:36px}
.quiz-back{
  background:none;border:none;cursor:pointer;padding:8px 0;
  font-family:var(--font-brand);font-weight:900;font-size:14px;color:var(--blue);
}
.quiz-back[hidden]{visibility:hidden;display:block}
.quiz-error{color:#c0392b;font-size:14px;margin:14px 0 0;min-height:1.2em}
button.btn{border:none;cursor:pointer;font-family:var(--font-brand)}
button.btn-line{background:none}

.done{text-align:center;padding:40px 0}
.done img{width:72px;height:auto;margin:0 auto 26px}
.done h2{
  font-family:var(--font-brand);font-weight:900;font-size:clamp(32px,4.6vw,56px);
  line-height:1;color:var(--blue);margin:0 0 16px;
}
.done p{font-size:17px;color:#444;max-width:480px;margin:0 auto 30px;line-height:1.6}

/* ===== Responsive ===== */
@media (max-width:980px){
  .p-hero .wrap,.svc-row,.tool,.contact-grid,.post--featured{grid-template-columns:1fr;gap:40px}
  .svc-row:nth-child(even) .ph,.tool:nth-child(even) .ph{order:0}
  .steps{grid-template-columns:1fr 1fr}
  .posts{grid-template-columns:1fr 1fr}
}
@media (max-width:620px){
  .p-hero{padding:40px 0 64px}
  .block{padding:72px 0}
  .steps,.steps--3,.clients,.posts,.teasers,.choices,.form-row,.case-facts{grid-template-columns:1fr}
  .g-half,.g-left,.g-right{grid-column:1 / -1;margin-top:0}
  .tool + .tool{margin-top:72px}
  .empty{padding:52px 22px}
}

/* ===== Pequeños ajustes ===== */
.center .lead{margin:20px auto 34px}
.crumb{color:inherit;text-decoration:none}
.crumb:hover{text-decoration:underline;text-underline-offset:4px}
.ph[data-gap]{margin-bottom:56px}
.contact-note{margin-top:36px}
.contact-block{padding-bottom:110px}
.p-hero--solo .p-title--sm{font-size:clamp(34px,5vw,64px);max-width:22ch}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.notify{
  display:flex;gap:12px;justify-content:center;flex-wrap:wrap;
  max-width:480px;margin:30px auto 0;
}
.notify .field{flex:1 1 240px}
.notify .quiz-error{flex-basis:100%;margin:0}
.empty .done{padding:20px 0 0}
.btns[data-top]{margin-top:34px}
