*{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0f0b10;--bg-card: rgba(25, 18, 30, .85);--bg-input: rgba(30, 22, 36, .7);--bg-bubble-ai: rgba(30, 25, 38, .9);--gradient-primary: linear-gradient(135deg, #E84D89, #A855F7);--gradient-btn: linear-gradient(135deg, #E84D89 0%, #A855F7 100%);--gradient-glow: radial-gradient(ellipse at top, rgba(168,85,247,.15) 0%, transparent 60%);--text-primary: #f0e6f6;--text-secondary: #a89bb8;--text-muted: #6b5e78;--border-color: rgba(168, 85, 247, .15);--glass-bg: rgba(20, 14, 22, .7);--glass-border: rgba(255, 255, 255, .06);--radius-sm: 8px;--radius-md: 14px;--radius-lg: 22px;--radius-full: 9999px;--font-serif: "Noto Serif SC", "Source Han Serif SC", "STSong", "SimSun", serif;--font-sans: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}html,body,#app{width:100%;height:100%;font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);font-size:14px;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:var(--gradient-glow);pointer-events:none;z-index:0}#app{position:relative;z-index:1}h1,h2,h3,.char-name,.novel-text,.opening-title{font-family:var(--font-serif);font-weight:600}a{color:#c084fc;text-decoration:none;transition:color .2s}a:hover{color:#e9a0ff}button{cursor:pointer;border:none;outline:none;font-family:inherit}input,textarea,select{font-family:inherit;outline:none}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{background:#a855f74d;border-radius:4px}::-webkit-scrollbar-track{background:transparent}.nav-glass{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--glass-border)}.btn{padding:10px 20px;border-radius:var(--radius-md);background:var(--gradient-btn);color:#fff;font-size:14px;font-weight:500;transition:all .25s ease;box-shadow:0 2px 12px #a855f733}.btn:hover{transform:translateY(-1px);box-shadow:0 4px 20px #a855f759}.btn:active{transform:translateY(0) scale(.98)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.btn-plain{background:var(--glass-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--text-primary);border:1px solid var(--glass-border);box-shadow:none}.btn-plain:hover{background:#1e1928e6;border-color:#a855f74d}.btn-danger{background:linear-gradient(135deg,#dc2626,#f04444);box-shadow:0 2px 12px #dc262633}.btn-sm{padding:6px 12px;font-size:12px;border-radius:var(--radius-sm)}.input{width:100%;padding:12px 14px;border:1px solid var(--border-color);background:var(--bg-input);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-primary);border-radius:var(--radius-md);font-size:14px;transition:all .25s ease}.input:focus{border-color:#a855f7;box-shadow:0 0 0 3px #a855f71a}.input::placeholder{color:var(--text-muted)}.card{background:var(--bg-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:16px;transition:border-color .25s ease}.card:hover{border-color:#a855f740}.tag{display:inline-block;padding:5px 12px;background:#a855f71f;color:#c89fff;border:1px solid rgba(168,85,247,.2);border-radius:var(--radius-full);font-size:12px;margin-right:6px;margin-bottom:4px;transition:all .2s}.tag:hover{background:#a855f733;border-color:#a855f766}@media (max-width: 640px){.card{padding:12px;border-radius:var(--radius-sm)}.btn{padding:10px 16px;font-size:13px}}@media (min-width: 768px){#app{max-width:480px;margin:0 auto;border-left:1px solid var(--glass-border);border-right:1px solid var(--glass-border);min-height:100vh}}@media (min-width: 1024px){#app:not(.admin-app){max-width:640px}}@media (min-width: 1400px){#app:not(.admin-app){max-width:768px}}body.admin-page #app,#app.admin-app{max-width:100%!important;margin:0!important;border-left:none!important;border-right:none!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .35s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.slide-up{animation:slideUp .4s ease-out}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.typing-cursor:after{content:"|";animation:blink 1s infinite;color:#a855f7;margin-left:2px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.loading-shimmer{background:linear-gradient(90deg,transparent 0%,rgba(168,85,247,.08) 50%,transparent 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}
