/* Calculator and FAQ assistant. */
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- Calculadora ---------- */
.estimate{
  padding:clamp(3rem,7vw,6rem) 0;background:var(--bg);
  --q-navy:#0d2c40;--q-teal:#0f7b88;--q-teal-ink:#0e6d77;--q-soft:#e0eff2;--q-card:#f2f6f7;
  --q-line:#dbe2e4;--q-ink:#0d2a36;--q-mute:#566b73
}
.q-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,350px);gap:1.4rem;align-items:start;background:#fff;border:1px solid var(--line);border-radius:var(--radius-l);padding:clamp(.75rem,1.8vw,1.25rem);box-shadow:var(--shadow-soft)}
.q-form{display:grid;gap:.8rem;min-width:0}

.q-step{background:var(--q-card);border:1px solid var(--q-line);border-radius:12px;padding:1.05rem 1.05rem 1.1rem;min-width:0}
.q-step-title{display:flex;align-items:flex-start;gap:.7rem;margin:0 0 .95rem;font:600 .97rem/1.3 var(--sans);letter-spacing:-.01em;color:var(--q-ink)}
.q-num{display:grid;place-items:center;flex:none;width:1.45rem;height:1.45rem;margin-top:-.1rem;border-radius:50%;background:var(--q-soft);color:var(--q-teal-ink);font:600 .7rem/1 var(--sans)}
.q-help{margin:-.25rem 0 .85rem;font-size:.82rem;line-height:1.5;color:var(--q-mute)}

.q-options{display:grid;gap:.6rem}
.q-options--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.q-options--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.q-option{position:relative;display:block;min-width:0;cursor:pointer}
.q-option input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.q-option-body{display:block;height:100%;padding:.68rem .8rem .72rem;background:#fff;border:1px solid var(--q-line);border-radius:9px;transition:border-color .2s,background-color .2s}
.q-option-body strong{display:block;font:500 .9rem/1.35 var(--sans);color:var(--q-ink)}
.q-option-body small{display:block;margin-top:.22rem;font-size:.78rem;line-height:1.35;color:var(--q-mute)}
.q-option:hover .q-option-body{border-color:#a9c9ce}
.q-option input:checked+.q-option-body{background:var(--q-soft);border-color:var(--q-teal-ink)}
.q-option input:focus-visible+.q-option-body{outline:2px solid var(--q-teal);outline-offset:2px}

.q-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem}
.q-field{min-width:0}
.q-field--below{margin-top:1rem}
.q-field label{display:block;margin-bottom:.45rem;font:600 .8rem/1.35 var(--sans);color:var(--q-mute)}
.q-field select,.q-field input{width:100%;min-width:0;min-height:42px;padding:.5rem .75rem;font:400 .92rem/1.3 var(--sans);color:var(--q-ink);background:#fff;border:1px solid var(--q-line);border-radius:8px;transition:border-color .2s,box-shadow .2s}
.q-field select{-webkit-appearance:none;appearance:none;padding-right:2.3rem;text-overflow:ellipsis;background:#fff var(--chevron) no-repeat right .7rem center/1rem;cursor:pointer}
.q-field input::placeholder{color:#8a9aa0}
.q-field select:focus,.q-field input:focus{outline:none;border-color:var(--q-teal-ink);box-shadow:0 0 0 3px rgba(15,123,136,.18)}
.q-field input[aria-invalid="true"]{border-color:var(--danger)}
.q-error{margin-top:.35rem;font-size:.76rem;color:var(--danger)}
.q-area-none{min-width:0;margin:0;padding:.65rem .8rem;font-size:.8rem;line-height:1.45;color:var(--q-mute);background:#fff;border:1px dashed var(--q-line);border-radius:8px}

.q-stepper{display:grid;grid-template-columns:2.6rem minmax(0,1fr) 2.6rem;height:42px;background:#fff;border:1px solid var(--q-line);border-radius:8px;overflow:hidden}
.q-stepper:focus-within{border-color:var(--q-teal-ink);box-shadow:0 0 0 3px rgba(15,123,136,.18)}
.q-stepper button{display:grid;place-items:center;background:#e7eff1;color:var(--q-ink);font:600 1.1rem/1 var(--sans);transition:background-color .2s}
.q-stepper button:hover{background:#d8e7ea}
.q-stepper button[aria-disabled="true"]{color:#a3b2b7;cursor:default;background:#eef3f4}
.q-stepper button:focus-visible{outline:2px solid var(--q-teal);outline-offset:-2px;border-radius:0}
.q-field .q-stepper input{height:100%;min-height:0;padding:0 .25rem;border:0;border-radius:0;box-shadow:none;text-align:center;font-weight:500;font-size:.98rem}
.q-suggestion{margin-top:.8rem;font-size:.79rem;line-height:1.5;color:var(--q-mute)}
.q-suggestion:has(#q-suggestion-text:empty){display:none}
.q-link{padding:0;font:inherit;font-weight:600;color:var(--q-teal-ink);text-decoration:underline;text-underline-offset:2px}
.q-link:hover{color:var(--q-ink)}

.q-aside{display:grid;gap:.9rem;min-width:0}
.q-summary{background:var(--q-card);border:1px solid var(--q-line);border-radius:12px;overflow:hidden}
.q-summary-head{padding:1.15rem 1.1rem 1.05rem;background:var(--q-navy);color:#fff}
.q-kicker{font:600 .68rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#93d3d9}
.q-range{margin-top:.4rem;font:700 clamp(1.55rem,2.3vw,1.9rem)/1.15 var(--display);letter-spacing:-.035em;color:#fff;font-variant-numeric:tabular-nums;text-wrap:balance}
.q-range-note{margin-top:.35rem;font-size:.77rem;color:#b9dadd}
.q-summary-body{padding:1rem 1.1rem 1.1rem}
.q-rows>div,.q-contact>div{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.3rem 0;font-size:.84rem;line-height:1.4}
.q-rows dt,.q-contact dt{flex:none;color:var(--q-mute)}
.q-rows dd,.q-contact dd{min-width:0;margin:0;font-weight:600;color:var(--q-ink);text-align:right}
.q-contact dd{overflow-wrap:anywhere}
.q-contact a:hover{color:var(--q-teal-ink);text-decoration:underline}
.q-alert{margin-top:.75rem;padding:.6rem .75rem;font-size:.8rem;line-height:1.45;color:#583b02;background:#fff2d8;border-radius:8px}
.q-actions{display:grid;gap:.55rem;margin-top:.85rem;padding-top:1.05rem;border-top:1px solid var(--q-line)}
.q-btn{display:flex;align-items:center;justify-content:center;min-height:3rem;padding:.7rem 1rem;border-radius:9px;font:600 .94rem/1.2 var(--sans);text-align:center;transition:background-color .2s,border-color .2s,color .2s}
.q-btn--primary{background:var(--q-teal);color:#fff}
.q-btn--primary:hover{background:#0b6873}
.q-btn--secondary{background:transparent;color:var(--q-ink);border:1px solid var(--q-line)}
.q-btn--secondary:hover{border-color:var(--q-teal-ink);color:var(--q-teal-ink)}
.q-status{margin-top:.6rem;font-size:.78rem;line-height:1.45;color:var(--q-teal-ink)}
.q-status:empty{display:none}
.q-status a{font-weight:600;text-decoration:underline}
.q-contact{margin-top:.85rem}
.q-footnote{margin-top:.8rem;font-size:.77rem;line-height:1.55;color:var(--q-mute)}
.q-why{padding:.9rem 1rem;font-size:.81rem;line-height:1.6;color:var(--q-ink);background:var(--q-soft);border:1px solid #cde3e7;border-left:3px solid var(--q-teal);border-radius:10px}
.q-why strong{font-weight:600}

@media (min-width:641px){
  /* etiqueta / campo / error alineados entre columnas aunque una etiqueta ocupe dos líneas */
  .q-grid{row-gap:0}
  .q-grid>.q-field{display:grid;grid-template-rows:subgrid;grid-row:span 3;align-content:start}
  .q-grid>.q-field>label{align-self:end}
  .q-grid>.q-area-none{grid-row:span 2;align-self:end}
}
@media (min-width:961px) and (min-height:840px){.q-aside{position:sticky;top:calc(var(--nav-h) + 16px)}}
@media (max-width:960px){.q-shell{grid-template-columns:1fr}}
@media (max-width:640px){
  .q-shell{padding:.6rem;border-radius:var(--radius-m)}
  .q-step{padding:.95rem .85rem 1rem}
  .q-options--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .q-grid{grid-template-columns:1fr}
}
@media (max-width:360px){.q-options--2{grid-template-columns:1fr}}

/* ---------- Asistente ---------- */
.assistant-launcher{position:fixed;z-index:90;right:24px;bottom:24px;display:flex;align-items:center;gap:.7rem;padding:1rem 1.25rem;border-radius:99px;background:var(--deep);color:white;box-shadow:0 8px 30px #052c3340;font:600 .87rem var(--display)}
.assistant-launcher:hover{background:var(--brand-deep)}
.assistant-panel{position:fixed;z-index:100;right:24px;bottom:24px;width:390px;max-width:calc(100vw - 32px);height:580px;max-height:calc(100dvh - 32px);display:flex;flex-direction:column;background:#f4f9fa;border:1px solid #dae7ea;border-radius:24px;overflow:hidden;box-shadow:0 18px 65px #052c3345}
.assistant-header{display:flex;align-items:center;gap:.75rem;padding:1.2rem 1rem;background:var(--deep);color:#fff}
.assistant-avatar{width:40px;height:40px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--brand);color:var(--night);font:700 .9rem var(--display)}
.assistant-header h2{font-size:.97rem;color:white;letter-spacing:-.02em}
.assistant-header p{font-size:.68rem;margin-top:.35rem;color:var(--on-deep-2)}
.assistant-header button{margin-left:auto;flex:none;width:36px;height:36px;font-size:1.7rem;border-radius:50%;background:#ffffff15;color:white;line-height:1}
.assistant-messages{flex:1;min-height:0;overflow-y:auto;padding:1rem;overscroll-behavior:contain}
.assistant-message{padding:.8rem .9rem;margin:0 1rem .8rem 0;border:1px solid #d7e6e9;border-radius:4px 16px 16px;background:white;color:var(--ink);font-size:.85rem;line-height:1.55;overflow-wrap:anywhere}
.assistant-message--user{margin:0 0 .8rem 1.5rem;background:var(--deep);color:#fff;border-color:var(--deep);border-radius:16px 4px 16px 16px}
.assistant-message a{display:block;color:var(--brand-deep);text-decoration:underline;font-weight:600;margin-top:.5rem}
.assistant-options{display:flex;flex-wrap:wrap;gap:.4rem;padding:.6rem 1rem;border-top:1px solid #d7e6e9}
.assistant-options button{font-size:.73rem;background:white;border:1px solid var(--brand-deep);border-radius:99px;padding:.4rem .65rem;color:var(--deep)}
.assistant-options button:hover{background:var(--bg-2)}
.assistant-form{display:flex;gap:.5rem;padding:.65rem .8rem .3rem;background:#fff}
.assistant-form input{width:100%;min-width:0;font-size:16px;padding:.65rem .85rem;border:1px solid var(--line-strong);border-radius:99px;background:#fff}
.assistant-form button{flex:none;width:44px;height:44px;border-radius:50%;background:var(--deep);color:white;display:grid;place-items:center}
.assistant-note{background:#fff;font-size:.6rem;text-align:center;color:var(--ink-mute);padding:.35rem .8rem .6rem}
.menu-open .assistant-launcher{visibility:hidden}
@media(max-width:540px){.assistant-panel{right:8px;bottom:8px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.assistant-launcher{right:16px;bottom:16px}}
@media(prefers-reduced-motion:reduce){.tower-float,.tower-shadow{animation:none!important}}
