/* The contact page's three-step quote form (templates/pages/contact.html):
   fields, choice chips, progress steps and the review before sending. */
.bw-hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.bw-field-error { color:#d63638; font-size:14px; margin:6px 0 0; }
.wpcf7-response-output[data-state="ok"]   { border:2px solid #46b450; color:#2a7d2e;
    padding:12px 16px; margin-top:18px; display:block; border-radius:4px; }
.wpcf7-response-output[data-state="err"]  { border:2px solid #d63638; color:#b32d2e;
    padding:12px 16px; margin-top:18px; display:block; border-radius:4px; }
#bw-contact-form.is-sending .wpcf7-spinner { visibility:visible; }
#bw-contact-form.is-sending .te-theme-btn { opacity:.7; pointer-events:none; }
.bw-form-intro { color:#778196; font-size:16px; margin:-10px 0 28px !important; }
.bw-req { color:#317EFE; }
.bw-form-step { font-size:18px; font-weight:700; color:#14203A; margin:8px 0 18px;
    padding-bottom:10px; border-bottom:1px solid #E1E1E1; }
.te-comment-respond label.bw-label { font-size:15px; font-weight:600; color:#14203A; margin-bottom:8px; }
.te-comment-respond select.bw-select { -webkit-appearance:none; appearance:none; cursor:pointer;
    padding-right:48px; background-color:#fff;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23317EFE' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:right 20px center; }
.te-comment-respond input:not([type=radio]):not([type=checkbox]),
.te-comment-respond textarea { background-color:#fff; }
.te-comment-respond textarea { margin-bottom:20px; }
.bw-choice-group { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:24px; }
.te-comment-respond label.bw-chip { margin:0; font-size:16px; font-weight:500; cursor:pointer; }
.te-comment-respond .bw-chip input,
.te-comment-respond .bw-consent input { position:absolute; opacity:0; width:1px; height:1px; }
.bw-chip span { display:inline-block; padding:12px 24px; border:1px solid #E1E1E1; border-radius:40px;
    background:#fff; color:#14203A; transition:all .2s ease; }
.bw-chip input:checked + span { background:#317EFE; border-color:#317EFE; color:#fff; }
.bw-chip input:focus-visible + span,
.bw-consent input:focus-visible + span::before { outline:2px solid #317EFE; outline-offset:2px; }
.te-comment-respond label.bw-consent { position:relative; display:flex; gap:12px; align-items:flex-start;
    font-size:15px; font-weight:400; color:#778196; margin-bottom:6px; cursor:pointer; }
.bw-consent > span { position:relative; padding-left:34px; }
.bw-consent > span::before { content:""; position:absolute; left:0; top:1px; width:22px; height:22px;
    border:1px solid #C9CED8; border-radius:6px; background:#fff; }
.bw-consent input:checked + span::before { background:#317EFE; border-color:#317EFE;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath d='M1 5l3.5 3.5L11 1' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:center; }
.bw-consent a { color:#317EFE; text-decoration:underline; }
.bw-submit-row { position:relative; margin-top:24px; }
.bw-invalid { border-color:#d63638 !important; }
/* ---- step-by-step form ---- */
.bw-step { border:0; margin:0; padding:0; min-width:0; }
#bw-contact-form.bw-wizard .bw-step { display:none; }
#bw-contact-form.bw-wizard .bw-step.is-active { display:block; animation:bwStepIn .35s ease; }
@keyframes bwStepIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
#bw-contact-form:not(.bw-wizard) .bw-progress,
#bw-contact-form:not(.bw-wizard) .bw-next,
#bw-contact-form:not(.bw-wizard) .bw-back { display:none; }
.bw-form-step:focus { outline:none; }

.bw-progress { list-style:none; display:flex; gap:10px; padding:0; margin:0 0 30px; }
.bw-progress li { flex:1; position:relative; }
.bw-progress li button { width:100%; display:flex; align-items:center; gap:10px; background:none; border:0;
    padding:0 0 12px; text-align:left; cursor:default; border-bottom:3px solid #E1E1E1; transition:border-color .25s; }
.bw-progress-num { flex:0 0 32px; height:32px; border-radius:50%; display:inline-flex; align-items:center;
    justify-content:center; font-weight:700; font-size:14px; background:#fff; color:#778196;
    border:1px solid #E1E1E1; transition:all .25s; }
.bw-progress-label { font-size:15px; font-weight:600; color:#778196; }
.bw-progress li.is-current button { border-color:#317EFE; }
.bw-progress li.is-current .bw-progress-num { background:#317EFE; border-color:#317EFE; color:#fff; }
.bw-progress li.is-current .bw-progress-label { color:#14203A; }
.bw-progress li.is-done button { border-color:#9DC1FF; cursor:pointer; }
.bw-progress li.is-done .bw-progress-num { background:#E8F0FF; border-color:#9DC1FF; color:#317EFE; }
.bw-progress li.is-done button:hover .bw-progress-label { color:#317EFE; }

.bw-step-nav { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:10px; }
.bw-step-nav .bw-next, .bw-step-nav [type=submit] { margin-left:auto; }
.bw-step-nav .te-theme-btn i { margin-left:8px; }
.bw-back { background:none; border:0; padding:12px 4px; font-size:16px; font-weight:600; color:#14203A; cursor:pointer; }
.bw-back i { margin-right:6px; }
.bw-back:hover { color:#317EFE; }

.bw-review { background:#fff; border:1px solid #E1E1E1; border-radius:16px; padding:6px 22px; margin-bottom:26px; }
.bw-review-block + .bw-review-block { border-top:1px dashed #E1E1E1; }
.bw-review-block { padding:16px 0; }
.bw-review-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; color:#14203A; }
.bw-edit { background:none; border:0; color:#317EFE; font-weight:600; font-size:15px; cursor:pointer; padding:4px 0; }
.bw-edit:hover { text-decoration:underline; }
.bw-review dl { display:grid; grid-template-columns:180px 1fr; gap:10px 16px; margin:0; font-size:15px; line-height:1.5; }
.bw-review dt { color:#778196; font-weight:500; }
.bw-review dd { margin:0; color:#14203A; white-space:pre-line; word-break:break-word; }
.bw-review .bw-empty { color:#778196; font-style:italic; }
.te-comment-respond p.bw-reply-label { font-size:15px; font-weight:600; color:#14203A; line-height:1.4; margin-bottom:12px; }

/* ---- project brief (optional PDF) ----
   Without JavaScript the plain file input shows. With it, the input is laid
   invisibly over a drop box, so clicking or dropping a file on the box uses it. */
.bw-optional { font-weight:400; color:#778196; }
.bw-upload { display:block; position:relative; }
.te-comment-respond .bw-upload input[type=file] { height:auto; padding:16px 20px; cursor:pointer; }
.bw-upload-box { display:none; }
#bw-contact-form.bw-wizard .bw-upload input[type=file] { position:absolute; inset:0; z-index:1;
    width:100%; height:100%; padding:0; opacity:0; }
.bw-wizard .bw-upload-box { display:flex; align-items:center; gap:16px; padding:18px 22px;
    border:1.5px dashed #C9CED8; border-radius:20px; background:#fff;
    transition:border-color .2s ease, background-color .2s ease; }
.bw-upload-box i { flex:0 0 auto; font-size:26px; color:#317EFE; }
.bw-upload-copy { display:flex; flex-direction:column; min-width:0; }
.bw-upload-title { font-size:16px; font-weight:600; color:#14203A;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bw-upload-meta { font-size:14px; color:#778196; }
.bw-upload:hover .bw-upload-box,
.bw-upload.is-dragover .bw-upload-box { border-color:#317EFE; background:#F4F8FF; }
.bw-upload.has-file .bw-upload-box { border-style:solid; border-color:#9DC1FF; background:#F4F8FF; }
.bw-upload input:focus-visible + .bw-upload-box { outline:2px solid #317EFE; outline-offset:2px; }
.bw-upload input.bw-invalid + .bw-upload-box { border-color:#d63638; }
.bw-upload-clear { background:none; border:0; padding:8px 0 0; font-size:14px; font-weight:600; color:#d63638; cursor:pointer; }
.bw-upload-clear i { margin-right:6px; }
.bw-upload-clear[hidden] { display:none; }
.te-comment-respond p.bw-hint { color:#778196; font-size:14px; line-height:1.5; margin-top:8px; }
.bw-turnstile { margin-top:16px; }

/* ---- the popup after Send: sent, or not sent and why ----
   margin:auto centres it on screen; the theme's "* { margin:0 }" would otherwise
   pin it to the top-left corner. */
.bw-result { width:min(440px, calc(100vw - 32px)); max-width:none; margin:auto; padding:0; border:0;
    border-radius:24px; overflow:hidden; background:#fff; color:#14203A;
    box-shadow:0 30px 70px rgba(20, 32, 58, .28); }
/* "Message sent" closes itself; this bar runs down while it waits. */
.bw-result-timer { height:4px; background:#E8F0FF; }
.bw-result-timer span { display:block; height:100%; background:#317EFE; transform-origin:left center; }
.bw-result:not(.is-timed) .bw-result-timer { display:none; }
.bw-result.is-timed .bw-result-timer span { animation:bwResultTimer var(--bw-result-ms, 5000ms) linear forwards; }
@keyframes bwResultTimer { from { transform:scaleX(1); } to { transform:scaleX(0); } }
.bw-result[open] { animation:bwResultIn .25s ease; }
@keyframes bwResultIn { from { opacity:0; transform:translateY(12px) scale(.98); } to { opacity:1; transform:none; } }
.bw-result::backdrop { background:rgba(20, 32, 58, .55); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.bw-result-box { padding:40px 32px 32px; text-align:center; }
.bw-result-icon { width:72px; height:72px; margin:0 auto 20px; border-radius:50%;
    display:flex; align-items:center; justify-content:center; font-size:30px; }
.bw-result.is-ok .bw-result-icon { background:#E7F6EC; color:#2a7d2e; }
.bw-result.is-err .bw-result-icon { background:#FDECEC; color:#d63638; }
.bw-result.is-ok .bw-result-icon .fa-xmark,
.bw-result.is-err .bw-result-icon .fa-check { display:none; }
.bw-result-title { font-size:26px; line-height:1.25; margin:0 0 10px; color:#14203A; }
.bw-result p.bw-result-text { font-size:16px; line-height:1.6; color:#778196; margin:0 0 26px; }
.bw-result-actions { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:12px; }
.bw-result.is-ok .bw-result-email { display:none; }
@media (max-width: 575px) {
  .bw-result-box { padding:32px 20px 24px; }
  .bw-result-title { font-size:22px; }
}
@media (max-width: 575px) {
  .te-comment-respond { padding:28px 20px; } .bw-chip span { padding:10px 18px; }
  .bw-progress-label { display:none; }
  .bw-progress li.is-current .bw-progress-label { display:inline; }
  .bw-review dl { grid-template-columns:1fr; gap:2px; } .bw-review dd { margin-bottom:8px; }
}
