:root{--bg: #0b0d12;--bg-soft: #12151c;--card: #171b24;--card-soft: #1d222e;--line: rgba(255, 255, 255, .08);--text-1: #f2f4f8;--text-2: #aab2c0;--text-3: #6b7385;--primary: #4a8dff;--primary-soft: rgba(74, 141, 255, .14);--vip: #f5a623;--free: #22c3a6;--danger: #f26d6d;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--tabbar-h: 54px;--safe-t: max(env(safe-area-inset-top, 0px), var(--qi-safe-top, 0px));--safe-b: max(env(safe-area-inset-bottom, 0px), var(--qi-safe-bottom, 0px));--safe-l: max(env(safe-area-inset-left, 0px), var(--qi-safe-left, 0px));--safe-r: max(env(safe-area-inset-right, 0px), var(--qi-safe-right, 0px));--topbar-safe: var(--safe-t)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text-1);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}#app{min-height:100vh}img{display:block}a{color:inherit;text-decoration:none}button{font-family:inherit}::-webkit-scrollbar{width:0;height:0}.page{min-height:100vh;padding-bottom:calc(var(--tabbar-h) + var(--safe-b) + 24px)}.page.no-tab{padding-bottom:calc(var(--safe-b) + 24px)}.page.no-top{padding-top:var(--safe-t)}.container{padding:0 14px}.topbar{position:sticky;top:0;z-index:20;padding-top:var(--safe-t);display:flex;align-items:center;gap:12px;padding:12px 14px;background:#0b0d12eb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.topbar .title{font-size:17px;font-weight:700;letter-spacing:1px}.topbar .title .dot{color:var(--primary)}.tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + var(--safe-b));padding-bottom:var(--safe-b);display:flex;background:#0d0f15f5;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:50}.tabbar .item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-3);font-size:11px}.tabbar .item .ic{font-size:20px;line-height:1}.tabbar .item.router-link-active{color:var(--primary)}.v-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 10px}.v-card{cursor:pointer}.v-card .poster{position:relative;aspect-ratio:3 / 4;border-radius:var(--r-md);overflow:hidden;background:var(--card-soft)}.v-card .poster img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}.v-card:active .poster img{transform:scale(1.04)}.v-card .badge{position:absolute;left:6px;bottom:6px;max-width:calc(100% - 12px);padding:2px 6px;border-radius:4px;background:#000000b8;color:#fff;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.v-card .score{position:absolute;right:5px;top:5px;color:var(--vip);font-size:12px;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.8)}.v-card .name{margin-top:6px;font-size:13px;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v-card .meta{margin-top:2px;font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.h-scroll{display:flex;gap:10px;overflow-x:auto;padding:0 14px 4px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.h-scroll::-webkit-scrollbar{display:none}.h-row{flex:0 0 auto;scroll-snap-align:start}.h-card{width:110px;cursor:pointer}.h-card .poster{position:relative;width:110px;height:146px;border-radius:var(--r-md);overflow:hidden;background:var(--card-soft)}.h-card .poster img{width:100%;height:100%;object-fit:cover}.h-card .badge{position:absolute;left:5px;bottom:5px;padding:1px 5px;border-radius:4px;background:#000000b3;color:#fff;font-size:10px}.h-card .name{margin-top:5px;font-size:12px;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.section-title{display:flex;align-items:center;justify-content:space-between;margin:18px 14px 10px}.section-title .t{font-size:16px;font-weight:700;display:flex;align-items:center;gap:7px}.section-title .t:before{content:"";width:3px;height:14px;border-radius:2px;background:var(--primary)}.section-title .more{font-size:12px;color:var(--text-3)}.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 14px 6px;-webkit-overflow-scrolling:touch}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;padding:6px 14px;border-radius:100px;background:var(--card);border:1px solid var(--line);color:var(--text-2);font-size:13px;cursor:pointer;transition:all .15s ease}.chip.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:42px;padding:0 18px;border-radius:100px;border:none;font-size:15px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn:active{transform:scale(.97)}.btn.primary{background:var(--primary);color:#fff}.btn.primary:disabled{background:#3a5d9e;color:#ffffff80}.btn.ghost{background:var(--card);border:1px solid var(--line);color:var(--text-1)}.btn.vip{background:linear-gradient(135deg,#f7b733,#fc4a1a);color:#fff}.btn.block{width:100%}.field{display:flex;align-items:center;height:50px;padding:0 16px;margin-bottom:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md)}.field input{flex:1;background:none;border:none;outline:none;color:var(--text-1);font-size:15px}.field input::placeholder{color:var(--text-3)}.field .icon{margin-right:10px;color:var(--text-3)}.empty{padding:60px 20px;text-align:center;color:var(--text-3);font-size:13px}.empty .big{font-size:42px;margin-bottom:12px;opacity:.6}.load-more{padding:14px;text-align:center;color:var(--text-3);font-size:12px}.skeleton{position:relative;overflow:hidden;background:var(--card-soft)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);animation:shimmer 1.2s infinite;transform:translate(-100%)}@keyframes shimmer{to{transform:translate(100%)}}.fade-enter-active,.fade-leave-active{transition:opacity .18s ease}.fade-enter-from,.fade-leave-to{opacity:0}img.onerror-fallback{background:var(--card-soft)}
