/* ===== Bayan form system =====
   Floating labels, grouped fieldsets, custom upload dropzone,
   inline validation states. Works on dark and light grounds.
   ============================================================ */

.rfq-form{
  position:relative;
  background:linear-gradient(170deg,rgba(18,41,61,.82),rgba(11,27,43,.9));
  border:1px solid var(--line);
  border-radius:6px;
  padding:clamp(24px,3vw,36px);
  box-shadow:0 30px 70px -34px rgba(0,0,0,.6);
  overflow:hidden;
}
/* energised top edge */
.rfq-form::before{
  content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  opacity:.8;
}

/* ---------- fieldset grouping ---------- */
.form-group{border:none;padding:0;margin:0 0 26px}
.form-group:last-of-type{margin-bottom:18px}
.form-legend{
  display:flex;align-items:center;gap:10px;
  font-family:var(--font-h);font-weight:600;
  font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);
  margin-bottom:18px;padding:0;
}
.form-legend::after{
  content:"";flex:1;height:1px;
  background:linear-gradient(90deg,rgba(42,151,120,.35),transparent);
}

/* ---------- field rows ---------- */
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ---------- floating label field ---------- */
.field{position:relative;margin-bottom:14px}
.field input,
.field textarea{
  width:100%;
  background:rgba(11,27,43,.75);
  border:1px solid var(--line);
  border-radius:4px;
  color:var(--ink);
  font-family:var(--font-b);
  font-size:.95rem;
  padding:22px 14px 9px;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
  appearance:none;
}
.field textarea{min-height:96px;resize:vertical;padding-top:26px;line-height:1.55}
.field label{
  position:absolute;left:14px;top:15px;
  font-family:var(--font-b);
  font-size:.92rem;color:var(--muted);
  pointer-events:none;
  transform-origin:left top;
  transition:transform .18s ease,color .18s ease,opacity .18s ease;
}
/* raised state */
.field input:focus + label,
.field input:not(:placeholder-shown) + label,
.field textarea:focus + label,
.field textarea:not(:placeholder-shown) + label{
  transform:translateY(-9px) scale(.76);
  color:var(--accent);
}
.field input:focus,
.field textarea:focus{
  outline:none;
  border-color:var(--accent);
  background:rgba(11,27,43,.95);
  box-shadow:0 0 0 3px rgba(42,151,120,.16);
}
/* required marker */
.field.is-required label::after{content:" *";color:var(--accent);opacity:.8}

/* validation */
.field input:not(:placeholder-shown):invalid{border-color:#e0796b}
.field input:not(:placeholder-shown):invalid + label{color:#e0796b}
.field-error{display:block;margin-top:6px;font-size:.76rem;color:#e0796b;opacity:0;transition:opacity .18s}
.field input:not(:placeholder-shown):invalid ~ .field-error{opacity:1}

/* ---------- upload dropzone ---------- */
.dropzone{
  position:relative;
  display:flex;align-items:center;gap:14px;
  border:1px dashed rgba(140,166,184,.4);
  border-radius:4px;
  padding:16px;
  background:rgba(11,27,43,.5);
  cursor:pointer;
  transition:border-color .2s ease,background .2s ease;
  margin-bottom:16px;
}
.dropzone:hover,.dropzone.is-drag{border-color:var(--accent);background:rgba(42,151,120,.07)}
.dropzone input[type=file]{
  position:absolute;inset:0;width:100%;height:100%;
  opacity:0;cursor:pointer;
}
.dz-icon{
  flex:0 0 auto;width:38px;height:38px;
  display:grid;place-items:center;
  border:1px solid var(--line);border-radius:4px;
  background:rgba(30,58,82,.5);
  color:var(--accent);
}
.dz-icon svg{width:18px;height:18px}
.dz-text{min-width:0}
.dz-title{
  display:block;font-family:var(--font-h);font-weight:600;
  font-size:.86rem;color:var(--ink);margin-bottom:2px;
}
.dz-hint{display:block;font-size:.74rem;color:var(--muted)}
.dropzone.has-file{border-style:solid;border-color:var(--accent);background:rgba(42,151,120,.08)}
.dropzone.has-file .dz-title{color:var(--accent)}

/* ---------- submit + status ---------- */
.form-actions{margin-top:6px}
.form-msg{margin:14px 0 0;font-size:.88rem;min-height:1.2em}
.form-msg.ok{color:var(--accent)}
.form-msg.err{color:#e0796b}
.form-note{margin-top:14px;font-size:.74rem;color:var(--muted);line-height:1.6}

/* honeypot stays hidden */
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}

/* ---------- light-ground variant ---------- */
.v2band.paper .rfq-form,
.v2band.paper2 .rfq-form{
  background:linear-gradient(170deg,#ffffff,#f7fafc);
  border:1px solid var(--line-l);
  box-shadow:0 24px 54px -30px rgba(15,34,52,.35);
}
.v2band.paper .rfq-form input,
.v2band.paper .rfq-form textarea,
.v2band.paper2 .rfq-form input,
.v2band.paper2 .rfq-form textarea{
  background:var(--paper2);
  border-color:var(--line-l);
  color:var(--ink-d);
}
.v2band.paper .rfq-form input:focus,
.v2band.paper .rfq-form textarea:focus{background:#fff;border-color:var(--accent)}
.v2band.paper .rfq-form label,
.v2band.paper2 .rfq-form label{color:var(--muted-d)}
.v2band.paper .dropzone,
.v2band.paper2 .dropzone{background:var(--paper2);border-color:#c9d8e2}
.v2band.paper .dz-icon{background:#fff;border-color:var(--line-l)}
.v2band.paper .dz-title{color:var(--ink-d)}

/* ---------- responsive ---------- */
@media(max-width:760px){
  .field-row{grid-template-columns:1fr;gap:0}
}

@media(prefers-reduced-motion:reduce){
  .field input,.field textarea,.field label,.dropzone{transition:none}
}
