/* KS Theme form primitives, shared by ks/lead-form and the contact pop-up (registered as
   "ks-form"): field, form-error, field-pair, consent, honeypot trap, the thank-you tick, and the
   form animations' keyframes. Token-driven; ported from the K&S prototype. */

@keyframes stepFwd{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:none}}
@keyframes stepBack{from{opacity:0;transform:translateX(-22px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.5);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes draw{to{stroke-dashoffset:0}}

/* == field == */
.field{margin-bottom:var(--space-s)}
.field--flush{margin:0}
.field__label{display:block;font-size:var(--text-s);font-weight:700;margin-bottom:var(--space-2xs)}
.field__hint{font-weight:500;color:var(--text-muted)}
.field__control{width:100%;font:var(--text-m) var(--font-body);padding:var(--space-s) var(--space-s);border:1px solid var(--border-strong);border-radius:var(--radius-s);background:var(--white);color:var(--text-body);transition:border-color .2s,box-shadow .2s}
.field__control--multiline{min-height:78px;resize:vertical}
.field__control--short{min-height:76px}
.field__control:focus{outline:none;border-color:var(--neutral);box-shadow:var(--shadow-4)}
.field--invalid .field__control{border-color:var(--danger)}
.field__error{color:var(--danger);font-size:var(--text-s);margin:var(--space-2xs) 0 0;display:none}
.field--invalid .field__error{display:block;animation:rise .25s var(--ease-out)}

/* == form-error == */
.form-error{color:var(--danger);font-size:var(--text-s);margin:var(--space-2xs) 0 0;display:none}
.form-error--show{display:block;animation:rise .25s var(--ease-out)}

/* == field-pair == */
.field-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-xs)}
.field-pair--roomy{gap:var(--space-s)}
@media (max-width:720px){
  .field-pair{grid-template-columns:minmax(0,1fr)}
}

/* == consent == */
.consent{display:flex;gap:var(--space-xs);font-size:var(--text-xs);color:var(--text-muted);line-height:1.5;margin:var(--space-2xs) 0 var(--space-3xs);cursor:pointer}
.consent__input{margin-top:var(--space-4xs);width:16px;height:16px;flex:none;accent-color:var(--primary-l-1)}

/* == trap == */
.trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* == tick == */
.tick{width:62px;height:62px;border-radius:50%;background:var(--success-l-4);color:var(--success);display:grid;place-items:center;margin:0 auto var(--space-m)}
.tick--pop{animation:pop .5s cubic-bezier(.2,1.4,.4,1) both}
.tick--pop .tick__icon{stroke-dasharray:30;stroke-dashoffset:30;animation:draw .5s var(--ease-out) .3s forwards}
