#app{width:100%;min-height:100vh}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif;background:#faf8f5;color:#2d2d44;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden}.paper-texture{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}@keyframes ink-spread{0%{opacity:0;transform:scale(.8);filter:blur(10px)}to{opacity:1;transform:scale(1);filter:blur(0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 #e6394666}50%{box-shadow:0 0 0 12px #e6394600}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-ink{animation:ink-spread .6s cubic-bezier(.22,1,.36,1) forwards}.animate-fade-up{animation:fade-up .5s cubic-bezier(.22,1,.36,1) forwards}.animate-float{animation:float 3s ease-in-out infinite}.container{max-width:750px;margin:0 auto;padding:0 20px}.card{background:#fff;border-radius:16px;box-shadow:0 4px 24px #2d2d4414;border:1px solid rgba(45,45,68,.06)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;font-weight:500;border:none;border-radius:9999px;cursor:pointer;transition:all .25s cubic-bezier(.22,1,.36,1)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn.btn-primary{background:linear-gradient(135deg,#e63946,#ff6b6b);color:#fff;box-shadow:0 4px 20px #e639464d}.btn.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 24px #e6394666}.btn.btn-primary:active:not(:disabled){transform:translateY(0)}.btn.btn-jade{background:linear-gradient(135deg,#2a9d8f,#40b8a8);color:#fff;box-shadow:0 4px 20px #2a9d8f4d}.btn.btn-jade:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 24px #2a9d8f66}.btn.btn-outline{background:transparent;color:#2d2d44;border:2px solid rgba(45,45,68,.12)}.btn.btn-outline:hover:not(:disabled){border-color:#4a4a6a;background:#2d2d4408}.btn.btn-ghost{background:transparent;color:#6b6b8a}.btn.btn-ghost:hover:not(:disabled){color:#2d2d44;background:#2d2d440d}.input{width:100%;padding:14px 18px;font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;color:#2d2d44;background:#fff;border:2px solid rgba(45,45,68,.12);border-radius:12px;transition:all .2s ease}.input::placeholder{color:#6b6b8a}.input:focus{outline:none;border-color:#e63946;box-shadow:0 0 0 4px #e639461a}.tag{display:inline-flex;align-items:center;padding:4px 12px;font-size:12px;font-weight:500;border-radius:9999px;background:#e639461a;color:#e63946}.tag.tag-jade{background:#2a9d8f1a;color:#2a9d8f}.tag.tag-ink{background:#2d2d4414;color:#4a4a6a}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.w-full{width:100%}.h-full{height:100%}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.p-4{padding:16px}.p-6{padding:24px}.px-4{padding-left:16px;padding-right:16px}.py-4{padding-top:16px;padding-bottom:16px}.rounded-lg{border-radius:16px}.rounded-full{border-radius:9999px}.shadow-soft{box-shadow:0 4px 24px #2d2d4414}.shadow-medium{box-shadow:0 8px 32px #2d2d441f}.overflow-hidden{overflow:hidden}.relative{position:relative}.absolute{position:absolute}
