@tailwind base;@tailwind components;@tailwind utilities;:root{--header-base-height: 4.5rem;--sat: env(safe-area-inset-top, 0px);--sar: env(safe-area-inset-right, 0px);--sab: env(safe-area-inset-bottom, 0px);--sal: env(safe-area-inset-left, 0px)}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f8fafc;background-image:radial-gradient(at 0% 0%,rgba(99,102,241,.03) 0px,transparent 50%),radial-gradient(at 100% 0%,rgba(168,85,247,.03) 0px,transparent 50%);color:#0f172a;overflow-x:hidden;-webkit-user-select:none;user-select:none;padding-bottom:var(--sab)}input,textarea,.selectable-text,.prose{-webkit-user-select:text;user-select:text}#root{min-height:100vh;display:flex;flex-direction:column}.pt-safe{padding-top:var(--sat)}.pb-safe{padding-bottom:var(--sab)}.pl-safe{padding-left:var(--sal)}.pr-safe{padding-right:var(--sar)}.pt-safe-offset{padding-top:calc(1rem + var(--sat))}.pb-safe-offset{padding-bottom:calc(1rem + var(--sab))}.glass-panel{background:#ffffffbf;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.5);box-shadow:0 4px 6px -1px #00000005,0 2px 4px -1px #00000005}.glass-nav{background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.3)}.shadow-soft{box-shadow:0 10px 40px -10px #0000000d}.shadow-glow{box-shadow:0 0 20px #6366f126}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.animate-fade-in-up{animation:fadeInUp .6s cubic-bezier(.16,1,.3,1) forwards}.animate-bounce-in{animation:bounceIn .6s cubic-bezier(.175,.885,.32,1.275) forwards}.animate-shake{animation:shake .5s cubic-bezier(.36,.07,.19,.97) both}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-6px)}to{transform:translateY(0)}}.animate-float-custom{animation:float 4s ease-in-out infinite}@keyframes bounceIn{0%{opacity:0;transform:scale(.9)}50%{opacity:1;transform:scale(1.02)}to{opacity:1;transform:scale(1)}}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}
