/* =============================================
   Valoración Vivienda Form
   All colors use CSS custom properties injected by PHP:
   --vv-primary, --vv-accent, --vv-bg (hex)
   --vv-primary-rgb, --vv-accent-rgb (R,G,B triplets for rgba)
   --vv-primary-dark (darker shade for gradients)
   --vv-accent-dark (darker shade for badge text)
   ============================================= */
.vv-form-wrapper{
  --vv-card:#ffffff;
  --vv-text:#1a1a1a;
  --vv-muted:#6b7280;
  --vv-border:#e5e7eb;
  --vv-error:#dc2626;
  --vv-success:#10b981;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  max-width:920px;margin:0 auto;padding:20px;color:var(--vv-text);
  position:relative;
}
.vv-form-wrapper *{box-sizing:border-box}
.vv-form-wrapper::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 20% 0%,rgba(var(--vv-accent-rgb),.08),transparent 50%),
             radial-gradient(circle at 80% 100%,rgba(var(--vv-primary-rgb),.05),transparent 50%);
  pointer-events:none;z-index:0;
}
.vv-form-card{
  position:relative;z-index:1;
  background:var(--vv-card);
  border-radius:24px;
  padding:48px 40px;
  box-shadow:0 30px 80px -20px rgba(var(--vv-primary-rgb),.15),0 10px 30px -10px rgba(var(--vv-primary-rgb),.08);
  border:1px solid rgba(var(--vv-accent-rgb),.15);
}
.vv-form-header{text-align:center;margin-bottom:36px}
.vv-badge{
  display:inline-flex;align-items:center;gap:8px;
  background:linear-gradient(135deg,rgba(var(--vv-accent-rgb),.12),rgba(var(--vv-accent-rgb),.05));
  color:var(--vv-accent-dark);font-size:12px;font-weight:600;
  padding:8px 16px;border-radius:100px;
  border:1px solid rgba(var(--vv-accent-rgb),.25);
  letter-spacing:.5px;text-transform:uppercase;
}
.vv-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--vv-accent);box-shadow:0 0 0 3px rgba(var(--vv-accent-rgb),.2);animation:vv-pulse 2s infinite}
@keyframes vv-pulse{0%,100%{opacity:1}50%{opacity:.5}}
.vv-title{
  font-size:clamp(26px,4vw,38px);font-weight:700;margin:18px 0 10px;
  color:var(--vv-primary);letter-spacing:-.02em;line-height:1.15;
}
.vv-subtitle{color:var(--vv-muted);font-size:16px;margin:0;line-height:1.5}

.vv-progress-wrap{margin:36px 0 40px}
.vv-progress-bar{height:4px;background:var(--vv-border);border-radius:100px;overflow:hidden;margin-bottom:20px;}
.vv-progress-fill{
  height:100%;background:linear-gradient(90deg,var(--vv-primary),var(--vv-accent));
  width:20%;transition:width .5s cubic-bezier(.4,0,.2,1);border-radius:100px;
  box-shadow:0 0 12px rgba(var(--vv-accent-rgb),.5);
}
.vv-steps-indicator{display:flex;justify-content:space-between;align-items:flex-start}
.vv-step-dot{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;position:relative}
.vv-step-dot span{
  width:36px;height:36px;border-radius:50%;
  background:var(--vv-card);border:2px solid var(--vv-border);
  display:flex;align-items:center;justify-content:center;
  font-weight:600;font-size:14px;color:var(--vv-muted);
  transition:all .3s;z-index:1;
}
.vv-step-dot label{font-size:12px;color:var(--vv-muted);font-weight:500;transition:color .3s}
.vv-step-dot.active span{background:var(--vv-primary);border-color:var(--vv-primary);color:#fff;box-shadow:0 0 0 4px rgba(var(--vv-primary-rgb),.1);}
.vv-step-dot.active label{color:var(--vv-primary);font-weight:600}
.vv-step-dot.completed span{background:var(--vv-accent);border-color:var(--vv-accent);color:#fff;}
.vv-step-dot.completed span::after{content:"\2713";font-size:14px}
.vv-step-dot.completed span > *{display:none}

.vv-step{display:none;animation:vv-fade .4s ease-out}
.vv-step.active{display:block}
@keyframes vv-fade{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.vv-step-title{font-size:24px;font-weight:700;color:var(--vv-primary);margin:0 0 8px;letter-spacing:-.01em}
.vv-step-desc{color:var(--vv-muted);margin:0 0 28px;font-size:15px}

.vv-options-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}
.vv-option-card{cursor:pointer;position:relative}
.vv-option-card input{position:absolute;opacity:0;pointer-events:none}
.vv-option-inner{
  background:var(--vv-bg);border:2px solid var(--vv-border);
  border-radius:16px;padding:24px 16px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:12px;
  transition:all .25s;color:var(--vv-text);
}
.vv-option-inner svg{width:38px;height:38px;color:var(--vv-primary);transition:transform .3s}
.vv-option-inner span{font-weight:600;font-size:14px}
.vv-option-card:hover .vv-option-inner{border-color:var(--vv-accent);transform:translateY(-3px);box-shadow:0 12px 24px -8px rgba(var(--vv-primary-rgb),.12)}
.vv-option-card:hover .vv-option-inner svg{transform:scale(1.1)}
.vv-option-card input:checked + .vv-option-inner{
  background:linear-gradient(135deg,var(--vv-primary),var(--vv-primary-dark));
  border-color:var(--vv-accent);color:#fff;
  box-shadow:0 12px 30px -8px rgba(var(--vv-primary-rgb),.4);
}
.vv-option-card input:checked + .vv-option-inner svg{color:var(--vv-accent)}

.vv-fields{display:flex;flex-direction:column;gap:18px}
.vv-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.vv-field{display:flex;flex-direction:column;gap:8px}
.vv-field-full{margin-top:18px}
.vv-field label{font-size:13px;font-weight:600;color:var(--vv-primary);letter-spacing:.02em}
.vv-field input,.vv-field select,.vv-field textarea{
  background:var(--vv-bg);border:2px solid var(--vv-border);
  border-radius:12px;padding:14px 16px;font-size:15px;font-family:inherit;
  color:var(--vv-text);transition:all .2s;width:100%;outline:none;
}
.vv-field input:focus,.vv-field select:focus,.vv-field textarea:focus{
  border-color:var(--vv-accent);background:#fff;
  box-shadow:0 0 0 4px rgba(var(--vv-accent-rgb),.12);
}
.vv-field textarea{resize:vertical;min-height:80px}

.vv-chips{display:flex;flex-wrap:wrap;gap:10px}
.vv-chip{cursor:pointer;position:relative}
.vv-chip input{position:absolute;opacity:0;pointer-events:none}
.vv-chip span{
  display:inline-block;padding:10px 18px;
  background:var(--vv-bg);border:2px solid var(--vv-border);
  border-radius:100px;font-size:14px;font-weight:500;
  transition:all .2s;color:var(--vv-text);
}
.vv-chip:hover span{border-color:var(--vv-accent)}
.vv-chip input:checked + span{background:var(--vv-primary);border-color:var(--vv-primary);color:#fff;}

.vv-state-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px}
.vv-state-card{cursor:pointer;position:relative}
.vv-state-card input{position:absolute;opacity:0;pointer-events:none}
.vv-state-inner{
  background:var(--vv-bg);border:2px solid var(--vv-border);
  border-radius:16px;padding:22px 16px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:6px;
  transition:all .25s;
}
.vv-state-icon{font-size:32px;margin-bottom:4px}
.vv-state-inner strong{font-size:15px;color:var(--vv-primary);font-weight:700}
.vv-state-inner small{font-size:12px;color:var(--vv-muted);line-height:1.4}
.vv-state-card:hover .vv-state-inner{border-color:var(--vv-accent);transform:translateY(-2px)}
.vv-state-card input:checked + .vv-state-inner{
  background:linear-gradient(135deg,var(--vv-primary),var(--vv-primary-dark));
  border-color:var(--vv-accent);
}
.vv-state-card input:checked + .vv-state-inner strong{color:#fff}
.vv-state-card input:checked + .vv-state-inner small{color:rgba(255,255,255,.7)}

.vv-consent{display:flex;gap:12px;align-items:flex-start;cursor:pointer;font-size:13px;color:var(--vv-muted);line-height:1.5;margin-top:8px}
.vv-consent input{margin-top:3px;accent-color:var(--vv-accent);width:18px;height:18px;flex-shrink:0}
.vv-consent a{color:var(--vv-primary);text-decoration:underline}

.vv-nav{display:flex;justify-content:space-between;align-items:center;margin-top:36px;gap:12px}
.vv-btn{
  border:none;cursor:pointer;font-family:inherit;font-weight:600;font-size:15px;
  padding:14px 28px;border-radius:12px;display:inline-flex;align-items:center;gap:8px;
  transition:all .2s;letter-spacing:.01em;
}
.vv-btn svg{width:18px;height:18px}
.vv-btn-prev{background:transparent;color:var(--vv-muted);padding-left:0}
.vv-btn-prev:hover{color:var(--vv-primary)}
.vv-btn-prev.hidden{visibility:hidden}
.vv-btn-next,.vv-btn-submit{
  background:linear-gradient(135deg,var(--vv-primary),var(--vv-primary-dark));
  color:#fff;margin-left:auto;
  box-shadow:0 8px 20px -6px rgba(var(--vv-primary-rgb),.4);
}
.vv-btn-next:hover,.vv-btn-submit:hover{transform:translateY(-2px);box-shadow:0 12px 28px -6px rgba(var(--vv-primary-rgb),.5);}
.vv-btn-submit{display:none;position:relative}
.vv-btn-submit.show{display:inline-flex}
.vv-btn-next.hidden{display:none}
.vv-btn-loader{
  width:18px;height:18px;border:2px solid rgba(255,255,255,.3);
  border-top-color:#fff;border-radius:50%;display:none;animation:vv-spin .8s linear infinite;
}
.vv-btn-submit.loading .vv-btn-text{visibility:hidden}
.vv-btn-submit.loading .vv-btn-loader{display:block;position:absolute;left:50%;top:50%;margin:-9px 0 0 -9px}
@keyframes vv-spin{to{transform:rotate(360deg)}}

.vv-error{color:var(--vv-error);font-size:13px;margin-top:10px;min-height:18px}

.vv-success-step{text-align:center;padding:40px 20px}
.vv-success-icon{width:80px;height:80px;margin:0 auto 24px}
.vv-success-icon svg{width:100%;height:100%}
.vv-success-icon circle{stroke:var(--vv-success);stroke-width:2;stroke-dasharray:166;stroke-dashoffset:166;animation:vv-stroke .6s cubic-bezier(.65,0,.45,1) forwards}
.vv-success-icon path{stroke:var(--vv-success);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:vv-stroke .3s cubic-bezier(.65,0,.45,1) .6s forwards}
@keyframes vv-stroke{to{stroke-dashoffset:0}}

.vv-trust{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;margin-top:36px;padding-top:28px;border-top:1px solid var(--vv-border);}
.vv-trust-item{display:flex;align-items:center;gap:8px;color:var(--vv-muted);font-size:13px;font-weight:500}
.vv-trust-item svg{width:18px;height:18px;color:var(--vv-accent)}

@media (max-width:640px){
  .vv-form-card{padding:32px 20px;border-radius:20px}
  .vv-row{grid-template-columns:1fr}
  .vv-step-dot label{display:none}
  .vv-trust{gap:18px}
  .vv-options-grid{grid-template-columns:repeat(2,1fr)}
  .vv-btn{padding:12px 20px;font-size:14px}
}
