/* Farías e Hijo SpA · componentes comunes (formulario, proyectos, utilidades).
   Cada portada define las variables --c-* en :root. */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0}
img,svg{max-width:100%}
[hidden]{display:none!important}
.pend{background:rgba(255,196,0,.18);outline:1px dashed #E0A800;border-radius:4px;padding:0 4px;color:inherit;font-style:normal}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Aparición al hacer scroll */
.rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.rv.visible{opacity:1;transform:none}
.rv.d1{transition-delay:.08s}.rv.d2{transition-delay:.16s}.rv.d3{transition-delay:.24s}.rv.d4{transition-delay:.32s}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}*{animation:none!important}}

/* ---------- Proyectos ---------- */
.py-filtros{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.py-filtros button{font:inherit;font-size:14px;font-weight:600;padding:8px 16px;border-radius:999px;border:1px solid var(--c-line);background:transparent;color:var(--c-txt);cursor:pointer;transition:.2s}
.py-filtros button.activo,.py-filtros button:hover{background:var(--c-acc);border-color:var(--c-acc);color:var(--c-acc-txt,#fff)}
.py-resumen{color:var(--c-muted);font-size:14px;margin:0 0 14px}
.py-resumen b{color:var(--c-txt);font-size:18px}
.py-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}
.py{background:var(--c-card);border:1px solid var(--c-line);border-radius:var(--c-radio,16px);padding:20px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden;transition:transform .25s,box-shadow .25s}
.py:hover{transform:translateY(-4px);box-shadow:0 18px 40px -20px rgba(0,0,0,.45)}
.py::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--c-acc)}
.py-media::before{background:var(--c-acc2,var(--c-acc))}
.py-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.py-chip{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:999px;background:var(--c-chip,rgba(255,106,19,.14));color:var(--c-chip-txt,var(--c-acc))}
.py-media .py-chip{background:var(--c-chip2,rgba(47,140,255,.14));color:var(--c-chip2-txt,#2F8CFF)}
.py-estado{margin-left:auto;font-size:12.5px;color:var(--c-muted);font-weight:600}
.py-ej{font-size:10.5px;font-weight:800;letter-spacing:.08em;padding:3px 7px;border-radius:5px;background:#FFE08A;color:#5A4300}
.py h3{margin:6px 0 0;font-size:19px;line-height:1.25;color:var(--c-txt)}
.py-meta{margin:0;font-size:13.5px;color:var(--c-muted)}
.py-det{margin:0;font-size:14.5px;line-height:1.55;color:var(--c-txt);opacity:.92;flex:1}
.py-av{display:flex;align-items:center;gap:10px;margin-top:6px;font-weight:700;font-size:14px;color:var(--c-txt)}
.py-barra{flex:1;height:8px;border-radius:99px;background:var(--c-line);overflow:hidden}
.py-barra i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--c-acc),var(--c-acc2,var(--c-acc)));transition:width 1.4s cubic-bezier(.2,.7,.2,1)}
.py-vacio{color:var(--c-muted)}

/* ---------- Formulario ---------- */
.f{display:flex;flex-direction:column;gap:14px;color:var(--c-txt)}
.f fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:14px;min-width:0}
.f-leg{font-weight:800;font-size:15px;letter-spacing:.02em;margin:0 0 2px;padding:0;color:var(--c-txt)}
.f-fila{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:620px){.f-fila{grid-template-columns:1fr}}
.f-c{display:flex;flex-direction:column;gap:6px;min-width:0}
.f-l{font-size:13.5px;font-weight:700;color:var(--c-txt)}
.f-l b{color:var(--c-acc)}.f-l em{font-weight:500;color:var(--c-muted);font-style:normal}
.f input[type=text],.f input[type=email],.f input[type=tel],.f select,.f textarea{font:inherit;font-size:16px;width:100%;padding:12px 14px;border-radius:var(--c-radio-in,10px);border:1.5px solid var(--c-line);background:var(--c-in,#fff);color:var(--c-txt);transition:border-color .2s,box-shadow .2s}
.f textarea{resize:vertical;min-height:120px;line-height:1.5}
.f input:focus,.f select:focus,.f textarea:focus{outline:0;border-color:var(--c-acc);box-shadow:0 0 0 4px var(--c-foco,rgba(255,106,19,.18))}
.f .invalido{border-color:#E5484D!important}
.f-err{color:#E5484D;font-size:13px;font-weight:600;min-height:0}
.f-err:empty{display:none}
.f-ayuda{font-size:12.5px;color:var(--c-muted)}
.f-chips{display:flex;flex-wrap:wrap;gap:8px}
.f-chip input{position:absolute;opacity:0;pointer-events:none}
.f-chip span{display:inline-block;padding:9px 16px;border-radius:999px;border:1.5px solid var(--c-line);font-size:14px;font-weight:600;cursor:pointer;transition:.2s;background:var(--c-in,#fff)}
.f-chip input:checked+span{background:var(--c-acc);border-color:var(--c-acc);color:var(--c-acc-txt,#fff)}
.f-chip input:focus-visible+span{box-shadow:0 0 0 4px var(--c-foco,rgba(255,106,19,.25))}
.f-check{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.45;cursor:pointer}
.f-check input{width:20px;height:20px;margin:1px 0 0;flex:none;accent-color:var(--c-acc)}
.f-check a{color:var(--c-acc);font-weight:700}
.f-trampa{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.f-acciones{display:flex;gap:10px;flex-wrap:wrap}
.f-btn{font:inherit;font-size:16px;font-weight:800;letter-spacing:.01em;padding:14px 26px;border:0;border-radius:var(--c-radio-btn,12px);background:var(--c-btn,var(--c-acc));color:var(--c-acc-txt,#fff);cursor:pointer;flex:1;min-width:180px;transition:transform .15s,filter .2s,box-shadow .2s;box-shadow:0 10px 24px -10px var(--c-acc)}
.f-btn:hover{filter:brightness(1.06);transform:translateY(-1px)}
.f-btn:disabled{opacity:.6;cursor:wait;transform:none}
.f-btn.f-sec{background:transparent;color:var(--c-txt);border:1.5px solid var(--c-line);box-shadow:none;flex:0 0 auto;min-width:0}
.f-msg{margin:0;font-weight:600;font-size:14px}
.f-msg:empty{display:none}
.f-msg.error{color:#E5484D}
.f-nota{margin:0;font-size:12.5px;color:var(--c-muted)}
.f-prog{list-style:none;display:flex;gap:6px;margin:0 0 4px;padding:0;counter-reset:p}
.f-prog li{flex:1;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--c-muted);padding:10px 12px;border-radius:12px;border:1px solid var(--c-line);transition:.25s}
.f-prog li b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--c-line);color:var(--c-txt);font-size:12px;flex:none}
.f-prog li.activo{border-color:var(--c-acc);color:var(--c-txt)}
.f-prog li.activo b,.f-prog li.hecho b{background:var(--c-acc);color:var(--c-acc-txt,#fff)}
@media (max-width:480px){.f-prog li{font-size:0;justify-content:center}.f-prog li b{font-size:12px}}
.f-resumen{font-size:14px;line-height:1.55;padding:12px 14px;border-radius:12px;background:var(--c-in,#fff);border:1px dashed var(--c-line)}
.f-ok{text-align:center;padding:30px 10px;color:var(--c-txt)}
.f-ok-ic{width:64px;height:64px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;font-size:32px;font-weight:900;background:#16A34A;color:#fff;animation:pop .5s cubic-bezier(.2,1.6,.4,1)}
.f-ok h3{margin:0 0 8px;font-size:22px}
.f-ok p{margin:0 auto;max-width:460px;color:var(--c-muted);line-height:1.6}
@keyframes pop{from{transform:scale(.3);opacity:0}}

/* WhatsApp flotante */
.wa-flot{position:fixed;right:18px;bottom:18px;z-index:60;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#25D366;color:#fff;box-shadow:0 12px 28px -8px rgba(0,0,0,.45);transition:transform .2s}
.wa-flot:hover{transform:scale(1.08)}

/* ---------- Modo claro / noche ---------- */
.logo-noche{display:none!important}
[data-tema="noche"] .logo-claro{display:none!important}
[data-tema="noche"] .logo-noche{display:block!important}
.tema-btn{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;cursor:pointer;background:transparent;border:1px solid var(--c-line);color:var(--c-txt);transition:.2s}
.tema-btn:hover{border-color:var(--c-acc);color:var(--c-acc)}
.tema-btn:focus-visible{outline:3px solid var(--c-acc);outline-offset:2px}
.tema-btn .sol{display:none}
[data-tema="noche"] .tema-btn .sol{display:block}
[data-tema="noche"] .tema-btn .luna{display:none}
.hd-der{display:flex;align-items:center;gap:10px}
.hd .tema-btn{order:5}
.hd .hamb{order:6}
