/* Liberty Law — Contact */
.lls-contact__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,30rem);gap:clamp(2.5rem,5vw,5rem);align-items:start}
.lls-contact p.lls-contact__lede{margin-top:1.5rem;max-width:42ch;color:var(--lls-body)}

.lls-offices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--lls-gap);margin-top:2.5rem}
.lls-office{background:#fff;border:0;border-radius:16px;box-shadow:0 2px 6px rgba(18,18,20,.05),0 14px 34px rgba(18,18,20,.06);padding:1.75rem}
.lls-office h3{font-size:1.125rem}
.lls-office__tel{display:inline-block;margin-top:.9rem;font-size:1.5rem;line-height:1.15;font-weight:700;color:var(--lls-ink);letter-spacing:-.025em;text-decoration:none}
.lls-office__tel:hover{color:var(--lls-red)}
.lls-office address{font-style:normal;margin-top:.9rem;font-size:.9375rem;line-height:1.65}
.lls-office p.lls-office__hours{margin-top:.6rem;font-size:.8125rem;color:var(--lls-body)}

/* Other ways to reach us — cards in the office-card style, one per row: the email
   address is too long for a half-width card. The first row (the emergency line) is
   dark. Two classes throughout: `.elementor a` (0,1,1) strips box-shadow and
   Hello's a:hover recolours links. */
.lls-reach{list-style:none;margin:var(--lls-gap) 0 0;padding:0;display:grid;gap:.875rem}
.lls-reach li{margin:0;min-width:0}
.lls-reach .lls-reach__item{
  display:flex;align-items:center;gap:1rem;height:100%;
  background:#fff;border-radius:16px;padding:1.25rem 1.5rem;
  box-shadow:0 2px 6px rgba(18,18,20,.05),0 14px 34px rgba(18,18,20,.06);
  color:var(--lls-ink);text-decoration:none;
  transition:box-shadow .25s ease,transform .25s ease;
}
.lls-reach a.lls-reach__item:hover{color:var(--lls-ink);transform:translateY(-2px);box-shadow:0 4px 10px rgba(18,18,20,.06),0 20px 44px rgba(18,18,20,.1)}
.lls-reach a.lls-reach__item:focus-visible{outline:2px solid var(--lls-red);outline-offset:3px}
.lls-reach .lls-reach__icon{flex:none;width:44px;height:44px;border-radius:999px;display:grid;place-items:center;background:#FBEDED;color:var(--lls-red)}
.lls-reach .lls-reach__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.2rem}
.lls-reach .lls-reach__label{font-size:.8125rem;font-weight:600;color:var(--lls-red);line-height:1.4}
.lls-reach .lls-reach__value{font-size:1.0625rem;font-weight:600;line-height:1.3;letter-spacing:-.01em;overflow-wrap:break-word}
.lls-reach .lls-reach__note{font-size:.875rem;line-height:1.55;color:var(--lls-body)}
.lls-reach .lls-reach__go{flex:none;width:36px;height:36px;border-radius:999px;display:grid;place-items:center;border:1px solid var(--lls-line);color:var(--lls-ink);transition:background-color .25s ease,border-color .25s ease,color .25s ease,transform .25s ease}
.lls-reach a.lls-reach__item:hover .lls-reach__go{background:var(--lls-red);border-color:var(--lls-red);color:#fff;transform:translateX(2px)}

.lls-reach .lls-reach__item--urgent{background:var(--lls-dark);color:#fff;padding:1.5rem 1.75rem;gap:1.25rem}
.lls-reach a.lls-reach__item--urgent:hover{color:#fff}
.lls-reach .lls-reach__item--urgent .lls-reach__icon{width:52px;height:52px;background:var(--lls-red);color:#fff}
.lls-reach .lls-reach__item--urgent .lls-reach__label{color:var(--lls-red-on-dark)}
.lls-reach .lls-reach__item--urgent .lls-reach__value{font-size:clamp(1.5rem,2.4vw,1.875rem);font-weight:700;letter-spacing:-.025em;line-height:1.15}
.lls-reach .lls-reach__item--urgent .lls-reach__note{color:rgba(255,255,255,.66)}
.lls-reach .lls-reach__item--urgent .lls-reach__go{width:44px;height:44px;border-color:rgba(255,255,255,.22);color:#fff}

.lls-form{background:#fff;border:0;border-radius:18px;padding:clamp(1.75rem,3vw,2.5rem);box-shadow:0 4px 12px rgba(18,18,20,.06),0 28px 64px rgba(18,18,20,.12)}
.lls-form h3{font-size:1.4375rem}
.lls-form p.lls-form__note{margin-top:.75rem;font-size:.875rem;line-height:1.65}
.lls-field{margin-top:1.375rem}
.lls-field label{display:block;font-size:.8125rem;font-weight:600;color:var(--lls-ink);margin-bottom:.5rem}
.lls-field input,.lls-field select,.lls-field textarea{
  width:100%;font:inherit;font-size:.9375rem;color:var(--lls-ink);background:#fff;
  border:1px solid var(--lls-line);border-radius:10px;padding:.9rem 1rem;
  transition:border-color .25s ease,box-shadow .25s ease;
}
.lls-field textarea{min-height:104px;resize:vertical}
.lls-field input:focus,.lls-field select:focus,.lls-field textarea:focus{outline:0;border-color:var(--lls-red);box-shadow:0 0 0 3px rgba(185,24,24,.14)}
.lls-field [data-err]{display:none;margin-top:.45rem;font-size:.8125rem;font-weight:500;color:var(--lls-red)}
.lls-field.is-bad [data-err]{display:block}
.lls-field.is-bad input,.lls-field.is-bad select,.lls-field.is-bad textarea{border-color:var(--lls-red);background:#FFF7F7}
.lls-form .lls-pill{margin-top:1.75rem;width:100%;justify-content:center}
.lls-form .lls-pill[disabled]{opacity:.6;pointer-events:none}
.lls-form p.lls-form__error{margin-top:1rem;font-size:.875rem;line-height:1.6;font-weight:500;color:var(--lls-red)}
.lls-form p.lls-form__consent{margin-top:1rem;font-size:.75rem;line-height:1.65;color:var(--lls-body)}

/* ---------------------------------------------------------------------------
   Gravity Forms callback form, dressed as the built-in one above. GF's own
   stylesheet is switched off site-wide (rg_gforms_disable_css), so everything
   here is the whole of its styling — including hiding its honeypot.
   --------------------------------------------------------------------------- */
.lls-form--gf .gform_wrapper{margin:0}
.lls-form--gf .gform_heading{display:none}
.lls-form--gf .gform_fields{display:grid;gap:1.375rem;margin-top:1.375rem;list-style:none;padding:0}
/* flex column so the error can sit under its input, as on the built-in form */
.lls-form--gf .gfield{margin:0;min-width:0;border:0;padding:0;display:flex;flex-direction:column}
.lls-form--gf .gfield > .validation_message,.lls-form--gf .gfield > .gfield_validation_message{order:3}
.lls-form--gf .gfield > .gfield_description{order:2}
.lls-form--gf .gfield_label,.lls-form--gf .gform-field-label{display:block;font-size:.8125rem;font-weight:600;color:var(--lls-ink);margin-bottom:.5rem;line-height:1.4}
/* Every field is required bar the last; the asterisk is noise. GF still sets aria-required. */
.lls-form--gf .gfield_required{display:none}
.lls-form--gf .ginput_container input,.lls-form--gf .ginput_container select,.lls-form--gf .ginput_container textarea{
  width:100%;font:inherit;font-size:.9375rem;color:var(--lls-ink);background:#fff;
  border:1px solid var(--lls-line);border-radius:10px;padding:.9rem 1rem;margin:0;
  transition:border-color .25s ease,box-shadow .25s ease;
}
.lls-form--gf .ginput_container select{
  -webkit-appearance:none;appearance:none;padding-right:2.75rem;cursor:pointer;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%23121214' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 1.1rem center;
}
/* GF prints rows="10"; size it like the built-in form instead */
.lls-form--gf .ginput_container textarea{min-height:104px;height:120px;resize:vertical}
.lls-form--gf ::placeholder{color:#8C8C93;opacity:1}
.lls-form--gf .ginput_container input:focus,.lls-form--gf .ginput_container select:focus,.lls-form--gf .ginput_container textarea:focus{outline:0;border-color:var(--lls-red);box-shadow:0 0 0 3px rgba(185,24,24,.14)}
.lls-form--gf .gfield_description{margin-top:.45rem;font-size:.8125rem;color:var(--lls-body)}
.lls-form--gf .gfield_error input,.lls-form--gf .gfield_error select,.lls-form--gf .gfield_error textarea{border-color:var(--lls-red);background-color:#FFF7F7}
.lls-form--gf .validation_message,.lls-form--gf .gfield_validation_message{margin-top:.45rem;font-size:.8125rem;font-weight:500;color:var(--lls-red)}
.lls-form--gf .gform_validation_errors{margin-top:1.25rem;padding:.875rem 1rem;border-radius:10px;background:#FFF7F7;color:var(--lls-red)}
.lls-form--gf .gform_validation_errors h2,.lls-form--gf .gform_submission_error{font-size:.875rem;line-height:1.5;font-weight:600;color:var(--lls-red);margin:0}
.lls-form--gf .gform_validation_errors ol{display:none}
/* hidden fields and the honeypot — without GF's CSS these would show */
.lls-form--gf .gform_validation_container,.lls-form--gf .gfield--type-honeypot,.lls-form--gf .gfield_visibility_hidden,.lls-form--gf .gform_hidden,.lls-form--gf .gfield--type-hidden{display:none!important}
.lls-form--gf .screen-reader-text,.lls-form--gf .hidden_label .gfield_label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.lls-form--gf .gform_footer{margin-top:1.75rem;padding:0;display:flex;flex-direction:column;align-items:stretch;gap:.75rem}
.lls-form--gf .gform_footer .lls-pill{width:100%;justify-content:center;cursor:pointer;font-family:inherit}
.lls-form--gf .gform_ajax_spinner{align-self:center;width:20px;height:20px}
/* once sent, the confirmation replaces the form; drop the heading and notes around it */
.lls-form--gf:has(.gform_confirmation_wrapper) > h3,
.lls-form--gf:has(.gform_confirmation_wrapper) > .lls-form__note,
.lls-form--gf:has(.gform_confirmation_wrapper) > .lls-form__consent{display:none}
.lls-form--gf .gform_confirmation_message h3{margin-top:1.25rem;font-size:1.4375rem}
.lls-form--gf .gform_confirmation_message p:not(.lls-form__tick){margin-top:.85rem;font-size:.9375rem;line-height:1.75}

/* Honeypot: out of sight and out of the tab order, without display:none, which
   some bots read as a signal to skip the field. */
.lls-hp{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

.lls-form--done{text-align:left}
.lls-form--done:focus{outline:0}
.lls-form--done:focus-visible{outline:2px solid var(--lls-red);outline-offset:4px}
.lls-form__tick{width:52px;height:52px;border-radius:999px;background:var(--lls-red);color:#fff;display:grid;place-items:center}
.lls-form--done h3{margin-top:1.25rem}
.lls-form--done p{margin-top:.85rem;font-size:.9375rem;line-height:1.75}

@media (max-width:1180px){.lls-contact__grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.lls-offices{grid-template-columns:minmax(0,1fr)}}
@media (max-width:480px){
  .lls-reach .lls-reach__item,.lls-reach .lls-reach__item--urgent{padding:1.125rem 1.25rem;gap:.75rem}
  .lls-reach .lls-reach__icon{width:40px;height:40px}
  .lls-reach .lls-reach__item--urgent .lls-reach__icon{width:44px;height:44px}
  /* small enough that the email address fits on one line */
  .lls-reach .lls-reach__value{font-size:.9375rem}
  .lls-reach .lls-reach__go{display:none}
}
@media (max-width:380px){.lls-reach .lls-reach__value{font-size:.875rem}}
@media (prefers-reduced-motion:reduce){
  .lls-field input,.lls-field select,.lls-field textarea{transition:none}
  .lls-reach .lls-reach__item,.lls-reach .lls-reach__go{transition:none}
  .lls-reach a.lls-reach__item:hover,.lls-reach a.lls-reach__item:hover .lls-reach__go{transform:none}
}
