/* fx/delight-contact.css: lane 10. Contact page, visual only. Fields pick up an ember glow; the message field warms as you write. */
.ink-contact-form :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]),textarea){
  background-image:linear-gradient(90deg,var(--fx-ember),var(--fx-gold));background-repeat:no-repeat;background-position:0 100%;background-size:0 2px;
  transition:border-color .25s,box-shadow .45s var(--fx-ease-out),background-size .6s var(--fx-ease-out)}
.ink-contact-form select{transition:border-color .25s,box-shadow .45s var(--fx-ease-out)}
.ink-contact-form :is(input,select,textarea):focus:not(.ff-invalid){border-color:var(--fx-ember)!important;
  box-shadow:0 0 0 3px rgba(230,73,37,.26),0 12px 28px -14px rgba(230,73,37,.6)!important}
.ink-contact-form :is(input,textarea):focus:not(.ff-invalid){background-size:100% 2px}
/* --fxdl-warm (0..1) is set as the message grows */
.ink-contact-form textarea:focus:not(.ff-invalid){
  box-shadow:0 0 0 3px rgba(230,73,37,calc(.24 + .18*var(--fxdl-warm,0))),0 14px calc(26px + 26px*var(--fxdl-warm,0)) -14px rgba(230,73,37,calc(.5 + .4*var(--fxdl-warm,0)))!important}

/* .sr-only is not in the compiled tw.css, so "(required)" rendered visibly beside every label. Scoped fix for this page. */
.ink-contact-form .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.ink-contact-submit{position:relative;overflow:hidden;isolation:isolate}
.ink-contact-submit::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(105deg,transparent 30%,rgba(255,236,190,.5) 50%,transparent 70%);transform:translateX(-120%);transition:transform .9s var(--fx-ease-out)}
.ink-contact-submit:not(:disabled):is(:hover,:focus-visible)::after{transform:translateX(120%)}
.ink-contact-submit:focus-visible{outline:3px solid var(--fx-navy);outline-offset:3px}

.fxdl-cspark{position:fixed;left:0;top:0;width:4px;height:4px;border-radius:50%;background:#ffe6a8;box-shadow:0 0 6px 2px #e64925;pointer-events:none;z-index:70}

.fxdl-lit{display:flex;align-items:center;gap:.5rem;margin-top:.45rem;font-size:.8rem;color:#5f5f5f}
.fxdl-lit-dot{width:8px;height:8px;border-radius:50%;background:#a3a3a3;flex:none}
/* a11y 2026-10-01 (WCAG 2.2.2): two breaths (4.8 s) and it rests lit; was infinite with no pause control */
.fxdl-lit.is-open .fxdl-lit-dot{background:var(--fx-ember);box-shadow:0 0 8px 2px rgba(230,73,37,.55);animation:fxdl-ember 2.4s ease-in-out 2}
@keyframes fxdl-ember{50%{box-shadow:0 0 3px 1px rgba(230,73,37,.35)}}
@media (prefers-reduced-motion:reduce){
  .ink-contact-submit::after{transition:none}
  .fxdl-lit.is-open .fxdl-lit-dot{animation:none}
}
