/* free-tools premium polish (fx) v1 — 공통 클래스 위에 얹는 미세 인터랙션 */
@media (prefers-reduced-motion:no-preference){
  .card{animation:fxrise .55s cubic-bezier(.2,.8,.3,1) both}
  .out b,.out strong{display:inline-block;animation:fxnum .6s cubic-bezier(.2,1.35,.45,1) both}
}
@keyframes fxrise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes fxnum{0%{opacity:0;transform:scale(.62)}55%{transform:scale(1.12)}100%{opacity:1;transform:scale(1)}}
input,textarea,select{transition:border-color .16s ease,box-shadow .2s ease}
input:focus,textarea:focus,select:focus{box-shadow:0 0 0 4px rgba(37,99,235,.13)}
.btn{transition:transform .12s ease,background .16s ease,box-shadow .22s ease,filter .2s ease}
.btn.p{background:linear-gradient(135deg,#3b74ff,#2563eb);box-shadow:0 4px 14px rgba(37,99,235,.30);border-color:transparent}
.btn.p:hover{filter:brightness(1.06);box-shadow:0 7px 22px rgba(37,99,235,.38)}
.btn:active{transform:scale(.97)}
.fx-ripple{position:relative;overflow:hidden}
.fx-rp{position:absolute;border-radius:50%;background:rgba(255,255,255,.55);transform:scale(0);animation:fxrp .6s ease-out forwards;pointer-events:none}
@keyframes fxrp{to{transform:scale(2.6);opacity:0}}
