/* v5b: one quantity control, finish as a note, inline validation, Sending state, copy polish. Tokens only. */
.finish-line{display:flex;align-items:center;gap:8px;margin:8px 0 0;font:var(--mm-sys-type-caption);color:var(--mm-sys-color-on-surface-variant)}
.finish-line .swatch{width:14px;height:14px;box-shadow:inset 0 0 0 1px rgb(43 33 16 / .5)}
.qty-ctl{margin:0}
.qty-row{display:grid;grid-template-columns:minmax(132px,1fr) auto;gap:10px;align-items:center}
.qty-row .stepper{min-width:0}
.qty-quick{flex-wrap:nowrap;gap:6px}
.qty-quick .chip span{justify-content:center;min-width:44px;padding:0 10px}
.qty-quick .chip span::before{display:none!important}
.qty-quick .chip b{font-weight:700}
@media (max-width:380px){.qty-row{grid-template-columns:1fr}}
.deadline-field{margin-top:var(--mm-sys-space-2)}
.deadline-field input{width:100%}
/* inline errors: text + icon, never color alone */
.err::before{content:"!";display:inline-grid;place-items:center;width:16px;height:16px;margin-right:6px;border-radius:50%;background:var(--mm-sys-color-error);color:#1a0703;font:700 11px/1 var(--mm-ref-font-body,Inter,sans-serif);vertical-align:-3px}
.err:empty{display:none!important}
.field.invalid input{box-shadow:0 0 0 1px var(--mm-sys-color-error)}
/* sending state */
button[type=submit].is-sending{cursor:progress}
button[type=submit].is-sending .arr{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;font-size:0;animation:mmspin .8s linear infinite}
@keyframes mmspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){button[type=submit].is-sending .arr{animation:none}}
/* spec grid: equal rhythm */
.spec-grid b{line-height:1.05}
.spec-grid li{justify-content:flex-start}
.spec-grid b{text-wrap:balance}
@media (max-width:599px){.spec-grid b{font-size:1.22rem}}
