:root{--bg: #0d0d1a;--surface: #13132b;--surface2: #1a1a35;--border: rgba(255,255,255,.08);--text: #e2e2f0;--text-muted:#8888aa;--accent: #6c63ff;--accent2: #a78bfa;--danger: #f87171;--success: #34d399;--radius: 12px;--nav-h: 56px;--header-h: 56px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:8px 12px;width:100%;outline:none;transition:border-color .15s}input:focus,select:focus{border-color:var(--accent)}input::placeholder{color:var(--text-muted)}.app{display:flex;flex-direction:column;height:100%;overflow:hidden}.app-header{height:var(--header-h);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:20px;flex-shrink:0;z-index:10}.logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:17px;white-space:nowrap;color:var(--accent2)}.logo img{width:28px;height:28px;border-radius:6px;object-fit:contain}.nav-tabs{display:flex;gap:4px;flex:1}.nav-tab{background:transparent;border:none;color:var(--text-muted);padding:6px 14px;border-radius:8px;font-size:14px;transition:background .15s,color .15s}.nav-tab:hover{background:var(--surface2);color:var(--text)}.nav-tab.active{background:#6c63ff2e;color:var(--accent2)}.content{flex:1;overflow:hidden;display:flex;flex-direction:column}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:var(--nav-h);background:var(--surface);border-top:1px solid var(--border);z-index:100;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav-inner{display:flex;height:var(--nav-h)}.mobile-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:transparent;border:none;color:var(--text-muted);font-size:11px;transition:color .15s;padding:4px 0}.mobile-nav-btn .icon{font-size:20px;line-height:1}.mobile-nav-btn.active{color:var(--accent2)}.btn{border:none;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:500;transition:background .15s,transform .1s;display:inline-flex;align-items:center;gap:6px}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#7c6fff}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent2)}.btn-ghost.active{border-color:var(--accent);color:var(--accent2);background:#6c63ff1a}.btn-ghost:disabled{opacity:.4;cursor:not-allowed}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--accent2);border-radius:50%;animation:spin .7s linear infinite;display:inline-block;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;justify-content:center;padding:40px}.error-msg{background:#f871711a;border:1px solid rgba(248,113,113,.3);color:var(--danger);border-radius:8px;padding:10px 14px;font-size:13px}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:60px 20px;color:var(--text-muted);font-size:14px;text-align:center}.empty-icon{font-size:36px;opacity:.6}.results-area{flex:1;overflow-y:auto;padding:16px}.results-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:14px;font-size:13px;color:var(--text-muted)}.results-count b{color:var(--text)}.pagination{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.pagination .btn-ghost{min-width:34px;height:34px;padding:0 8px;justify-content:center}.search-list{display:flex;flex-direction:column;gap:4px}.search-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:border-color .15s,background .15s;min-height:52px}.search-item:hover{border-color:var(--accent);background:var(--surface2)}.search-item-type{font-size:10px;text-transform:uppercase;color:var(--accent2);background:#6c63ff1f;border-radius:4px;padding:2px 6px;white-space:nowrap}.search-item-names{flex:1;min-width:0}.search-item-matched{font-weight:500;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-item-primary{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.title-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;cursor:pointer;transition:border-color .15s,transform .15s}.title-card:hover{border-color:var(--accent);transform:translateY(-2px)}.card-type{font-size:10px;text-transform:uppercase;color:var(--accent2);margin-bottom:4px}.card-name{font-weight:600;font-size:14px;margin-bottom:8px;line-height:1.4}.card-meta{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}.badge{font-size:11px;padding:2px 7px;border-radius:5px;background:var(--surface2);border:1px solid var(--border);color:var(--text-muted)}.badge.score{color:#fbbf24;border-color:#fbbf2440;background:#fbbf2414}.card-id{font-size:11px;color:var(--text-muted)}.filter-layout{flex:1;display:flex;overflow:hidden}.filter-panel{width:300px;flex-shrink:0;overflow-y:auto;background:var(--surface);border-right:1px solid var(--border);padding:16px;display:flex;flex-direction:column;gap:14px}.filter-panel-title{font-weight:700;font-size:15px;color:var(--accent2)}.filter-section{display:flex;flex-direction:column;gap:6px}.filter-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600}.form-row{display:flex;gap:8px}.form-row>*{flex:1}.toggle-row{display:flex;flex-wrap:wrap;gap:6px}.filter-results{flex:1;overflow:hidden;display:flex;flex-direction:column}.genre-picker{max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface2)}.genre-picker-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border);font-size:13px}.genre-picker-item:last-child{border-bottom:none}.genre-picker-item.any{background:#60a5fa0f}.genre-picker-item.req{background:#34d3990f}.genre-picker-item.exc{background:#f871710f}.genre-btn-row{display:flex;gap:3px;flex-shrink:0}.genre-btn{border-radius:4px;border:1px solid var(--border);padding:2px 6px;font-size:10px;color:var(--text-muted);background:transparent;transition:background .12s,color .12s}.genre-btn.any{background:#60a5fa;color:#fff;border-color:#60a5fa}.genre-btn.req{background:#34d399;color:#fff;border-color:#34d399}.genre-btn.exc{background:var(--danger);color:#fff;border-color:var(--danger)}.genre-pills{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.genre-pill{font-size:11px;padding:2px 8px;border-radius:20px;border:1px solid var(--border)}.genre-pill.any{border-color:#60a5fa;color:#60a5fa;background:#60a5fa1a}.genre-pill.req{border-color:#34d399;color:#34d399;background:#34d3991a}.genre-pill.exc{border-color:var(--danger);color:var(--danger);background:#f871711a}.genre-table{width:100%;border-collapse:collapse;font-size:13px}.genre-table th{text-align:left;color:var(--text-muted);font-size:11px;padding:6px 10px;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.05em}.genre-table td{padding:6px 10px;border-bottom:1px solid rgba(255,255,255,.04)}.genre-table tr:last-child td{border-bottom:none}.genre-section{margin-bottom:24px}.genre-section-title{font-weight:700;margin-bottom:8px;color:var(--accent2)}.music-header{padding:16px;border-bottom:1px solid var(--border);display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.music-header-input{flex:1;min-width:180px}.music-limit-row{display:flex;gap:6px;align-items:center}.music-limit-label{font-size:12px;color:var(--text-muted);white-space:nowrap}.anime-result{margin-bottom:28px}.anime-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.anime-title-name{font-size:17px;font-weight:700}.themes-moe-link{font-size:12px;color:var(--text-muted);text-decoration:none;border:1px solid var(--border);border-radius:5px;padding:2px 8px;transition:border-color .15s,color .15s}.themes-moe-link:hover{border-color:var(--accent);color:var(--accent2)}.theme-group{margin-bottom:16px}.theme-group-label{font-size:11px;font-weight:700;color:var(--accent2);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.theme-cards{display:flex;flex-direction:column;gap:6px}.theme-card{background:var(--surface2);border-radius:8px;padding:10px 14px;display:flex;align-items:center;gap:12px}.theme-play-btn{width:38px;height:38px;border-radius:50%;border:none;cursor:pointer;font-size:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:background .15s}.theme-play-btn.idle{background:#6c63ff33;color:var(--accent2)}.theme-play-btn.playing{background:#f8717133;color:var(--danger)}.theme-info{flex:1;min-width:0}.theme-slug{font-weight:600;font-size:14px}.theme-notes{color:var(--text-muted);font-weight:400;font-size:12px;margin-left:5px}.theme-song{font-size:13px;color:var(--accent2);margin-top:2px}.theme-artists{color:var(--text-muted)}.theme-episodes{font-size:11px;color:var(--text-muted);margin-top:2px}.theme-link{color:var(--text-muted);font-size:12px;text-decoration:none;flex-shrink:0}.theme-link:hover{color:var(--accent2)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#000000bf;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:700px;max-height:90vh;overflow-y:auto;position:relative;padding:24px}.modal-close{position:absolute;top:14px;right:14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text-muted);width:32px;height:32px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:color .15s;z-index:1}.modal-close:hover{color:var(--text)}.modal-header{display:flex;gap:18px;margin-bottom:18px;align-items:flex-start}.modal-poster{flex-shrink:0;width:100px}.modal-poster img{width:100px;border-radius:10px;border:1px solid var(--border);display:block;cursor:zoom-in;object-fit:cover;transition:transform .15s,box-shadow .15s}.modal-poster img:hover{transform:scale(1.03);box-shadow:0 6px 24px #0006}.modal-header-info{flex:1;min-width:0}.modal-title{font-size:18px;font-weight:700;line-height:1.3;margin-bottom:4px;padding-right:36px}.modal-subtitle{font-size:13px;color:var(--text-muted);margin-bottom:12px}.kv-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}.kv-key{color:var(--text-muted);white-space:nowrap}.kv-val{word-break:break-word}.modal-section{margin-bottom:18px}.modal-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:8px;display:flex;align-items:center;gap:6px}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{font-size:12px;padding:3px 9px;border-radius:20px;background:var(--surface2);border:1px solid var(--border)}.chip.genre{border-color:#6c63ff4d;color:var(--accent2)}.chip.tag{border-color:#34d39933;color:#34d399}.chip.primary{border-color:#a78bfa59;color:var(--accent2)}.description-block{font-size:13px;line-height:1.6;color:var(--text-muted);background:var(--surface2);border-radius:8px;padding:10px 12px;margin-bottom:8px}.screenshots-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}.screenshot-btn{position:relative;padding:0;border:1px solid var(--border);border-radius:7px;overflow:hidden;cursor:pointer;background:var(--surface2);aspect-ratio:16/9;transition:border-color .15s,transform .15s}.screenshot-btn:hover{border-color:var(--accent);transform:translateY(-1px)}.screenshot-btn img{width:100%;height:100%;object-fit:cover;display:block}.screenshot-more{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#fff}.gallery-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:#000000f2;display:flex;align-items:center;justify-content:center}.gallery-img{max-width:90vw;max-height:86vh;object-fit:contain;border-radius:8px;box-shadow:0 12px 48px #0009;-webkit-user-select:none;user-select:none}.gallery-close{position:fixed;top:14px;right:18px;z-index:401;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;font-size:18px;width:38px;height:38px;cursor:pointer;display:flex;align-items:center;justify-content:center}.gallery-close:hover{background:#ffffff29}.gallery-nav{position:fixed;top:50%;transform:translateY(-50%);background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:50%;width:48px;height:48px;color:#fff;font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:401;transition:background .15s}.gallery-nav:hover{background:#ffffff2e}.gallery-nav.prev{left:12px}.gallery-nav.next{right:12px}.gallery-counter{position:fixed;bottom:16px;left:50%;transform:translate(-50%);color:#ffffff80;font-size:13px;z-index:401;background:#0006;padding:4px 12px;border-radius:20px}.themes-section-title{display:flex;align-items:center;gap:8px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff3}@media(max-width:640px){.nav-tabs{display:none}.mobile-nav{display:block}.content{padding-bottom:var(--nav-h)}.results-area{padding:12px}.cards-grid{grid-template-columns:1fr}.filter-layout{flex-direction:column}.filter-panel{width:100%;border-right:none;border-bottom:1px solid var(--border);max-height:55vh}.modal-overlay{padding:0;align-items:flex-end}.modal{border-bottom-left-radius:0;border-bottom-right-radius:0;max-height:92vh;border-bottom:none}.modal-poster,.modal-poster img{width:80px}.modal-title{font-size:16px}.screenshots-grid{grid-template-columns:repeat(2,1fr)}.music-header{flex-direction:column;align-items:stretch}.music-header-input{min-width:auto}.theme-card{padding:8px 10px;gap:8px}.gallery-nav{width:40px;height:40px;font-size:18px}.gallery-nav.prev{left:6px}.gallery-nav.next{right:6px}.pagination .btn-ghost{min-width:30px;height:30px}}@media(max-width:380px){.app-header{padding:0 12px;gap:10px}.logo{font-size:15px}.logo img{width:22px;height:22px}}
