@import"https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700;900&family=Noto+Serif+SC:wght@400;700;900&display=swap";@tailwind base;@tailwind components;@tailwind utilities;body{background-color:#f8fafc;background-image:radial-gradient(at 0% 0%,rgba(16,185,129,.05) 0px,transparent 50%),radial-gradient(at 100% 0%,rgba(59,130,246,.05) 0px,transparent 50%),radial-gradient(at 100% 100%,rgba(16,185,129,.03) 0px,transparent 50%),radial-gradient(at 0% 100%,rgba(59,130,246,.03) 0px,transparent 50%);background-attachment:fixed}@keyframes loading{0%{transform:translate(-100%)}to{transform:translate(300%)}}.animate-loading{animation:loading 2s infinite linear}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.pb-safe{padding-bottom:env(safe-area-inset-bottom,20px)}.pt-safe{padding-top:env(safe-area-inset-top,0)}.card-hover{transition:transform .2s ease,box-shadow .2s ease}.card-hover:hover{transform:translateY(-2px);box-shadow:0 12px 24px -8px #0000001f}.btn-hover{transition:transform .2s ease,box-shadow .2s ease}.btn-hover:hover{transform:translateY(-1px);box-shadow:0 6px 16px -4px #00000026}.btn-hover:active{transform:translateY(0)}.text-gradient{background:linear-gradient(135deg,#10b981,#3b82f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.glass{background:#fffc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.border-gradient{border:2px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#10b981,#3b82f6) border-box}.skeleton{background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0,#f1f5f9 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.8}}.animate-pulse-subtle{animation:pulse-subtle 2s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.animate-float{animation:float 3s ease-in-out infinite}@keyframes scan{0%{background-position:0 0}to{background-position:0 32px}}.animate-\[scan_3s_linear_infinite\]{animation:scan 3s linear infinite}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.8)}}.animate-\[twinkle_3s_ease-in-out_infinite\]{animation:twinkle 3s ease-in-out infinite}@keyframes shoot{0%{transform:translate(0);opacity:1}to{transform:translate(100px);opacity:0}}.animate-\[shoot_4s_ease-in-out_infinite\]{animation:shoot 4s ease-in-out infinite}
