﻿ .btn,.admin-btn,.preset-card,.preset-btn,.filter-chip,button:not(.no-ripple),a.btn{isolation:isolate;position:relative;overflow:hidden}.ripple-effect{pointer-events:none;z-index:1;background:#ffffff8c;border-radius:50%;animation:.6s linear rippleAnim;position:absolute;transform:scale(0)}.btn-ghost .ripple-effect,.btn-outline .ripple-effect,.filter-chip .ripple-effect,.admin-btn-ghost .ripple-effect{background:#2196f340}@keyframes rippleAnim{to{opacity:0;transform:scale(4)}}:focus{outline:none}:focus-visible{outline:2px solid var(--primary-500);outline-offset:3px;border-radius:4px}.form-control:focus-visible,.admin-input:focus-visible,.contact-form .form-control:focus-visible{border-color:var(--primary-500);outline:none;box-shadow:0 0 0 4px #2196f326}.link-underline{text-decoration:none;position:relative}.link-underline:after{content:"";transform-origin:0;background:currentColor;width:100%;height:2px;transition:transform .4s cubic-bezier(.65,0,.35,1);position:absolute;bottom:-2px;right:0;transform:scaleX(0)}.link-underline:hover:after{transform-origin:100%;transform:scaleX(1)}.icon-hover{justify-content:center;align-items:center;transition:transform .3s cubic-bezier(.34,1.56,.64,1);display:inline-flex}.icon-hover:hover{transform:scale(1.15)rotate(-5deg)}.icon-rotate-hover{transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.icon-rotate-hover:hover{transform:rotate(90deg)}.card-lift{will-change:transform;transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s cubic-bezier(.16,1,.3,1)}.card-lift:hover{transform:translateY(-6px);box-shadow:0 20px 40px #1f26871f}.glow-primary{transition:box-shadow .3s}.glow-primary:hover{box-shadow:0 0 0 4px #2196f31f,0 12px 30px #2196f333}.shake{animation:.4s cubic-bezier(.36,.07,.19,.97) shakeAnim}@keyframes shakeAnim{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.check-success{justify-content:center;align-items:center;animation:.6s cubic-bezier(.34,1.56,.64,1) checkSuccess;display:inline-flex}.check-success svg{stroke-dasharray:30;stroke-dashoffset:30px;animation:.5s .1s forwards checkDraw}@keyframes checkSuccess{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes checkDraw{to{stroke-dashoffset:0}}.hover-overlay{position:relative;overflow:hidden}.hover-overlay:after{content:"";opacity:0;pointer-events:none;background:linear-gradient(#0000 40%,#0009);transition:opacity .3s;position:absolute;inset:0}.hover-overlay:hover:after{opacity:1}.skeleton{background:linear-gradient(90deg,var(--gray-100)0%,var(--gray-200)50%,var(--gray-100)100%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.4s ease-in-out infinite skeletonShimmer;position:relative;overflow:hidden}@keyframes skeletonShimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-text{border-radius:4px;height:14px;margin-bottom:8px}.skeleton-title{border-radius:6px;width:60%;height:24px;margin-bottom:12px}.skeleton-avatar{border-radius:50%;width:48px;height:48px}.skeleton-card{border-radius:var(--radius-lg);border:1px solid var(--gray-200);background:#fff;padding:20px}.progress-bar-anim{background:var(--gray-200);border-radius:var(--radius-full);height:8px;position:relative;overflow:hidden}.progress-bar-anim__fill{background:linear-gradient(90deg,var(--primary-500),var(--primary-400));border-radius:var(--radius-full);height:100%;transition:width .4s cubic-bezier(.65,0,.35,1);position:relative;overflow:hidden}.progress-bar-anim__fill:after{content:"";background:linear-gradient(90deg,#0000,#fff6,#0000);animation:1.5s infinite progressShine;position:absolute;inset:0}@keyframes progressShine{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-indeterminate{background:var(--gray-200);height:3px;position:relative;overflow:hidden}.progress-indeterminate:before{content:"";background:linear-gradient(90deg,transparent,var(--primary-500),transparent);width:30%;height:100%;animation:1.5s infinite progressIndeterminate;position:absolute;top:0;left:0}@keyframes progressIndeterminate{0%{left:-30%}to{left:100%}}[data-tooltip]{cursor:help;position:relative}[data-tooltip]:before{content:attr(data-tooltip);background:var(--gray-900);color:#fff;border-radius:var(--radius-sm);white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s var(--ease-out);z-index:10000;padding:8px 14px;font-family:KalamehFaNum,Tahoma,sans-serif;font-size:12px;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 8px 20px #00000026}[data-tooltip]:after{content:"";border:6px solid #0000;border-top-color:var(--gray-900);opacity:0;pointer-events:none;transition:all .2s var(--ease-out);z-index:10000;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)translateY(4px)}[data-tooltip]:hover:before,[data-tooltip]:hover:after{opacity:1;transform:translate(-50%)translateY(0)}.badge-pulse{position:relative}.badge-pulse:after{content:"";border-radius:inherit;pointer-events:none;border:2px solid;animation:2s ease-out infinite badgePulse;position:absolute;inset:-4px}@keyframes badgePulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.4)}}.float-anim{animation:4s ease-in-out infinite floatAnim}@keyframes floatAnim{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.noise-overlay{position:relative}.noise-overlay:after{content:"";opacity:.03;pointer-events:none;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");position:absolute;inset:0}