ani-web 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +220 -0
  3. package/client/dist/assets/AnimeInfo-B88ZA3gl.js +1 -0
  4. package/client/dist/assets/AnimeInfo-R63luGTP.css +1 -0
  5. package/client/dist/assets/AnimeInfoPage-xGVarrXG.js +2 -0
  6. package/client/dist/assets/Button-Fq9KaUOg.css +1 -0
  7. package/client/dist/assets/Button-lkEUHIDS.js +1 -0
  8. package/client/dist/assets/ErrorMessage-BVWNgHMx.css +1 -0
  9. package/client/dist/assets/ErrorMessage-BXKDLzn8.js +1 -0
  10. package/client/dist/assets/Home-O1FbN8t_.js +1 -0
  11. package/client/dist/assets/Home-r0eYbWNc.css +1 -0
  12. package/client/dist/assets/Insights-CF4K-oO5.css +1 -0
  13. package/client/dist/assets/Insights-opcB-aTo.js +1 -0
  14. package/client/dist/assets/MAL-BGM33N5c.js +1 -0
  15. package/client/dist/assets/MAL-DeQNXXPx.css +1 -0
  16. package/client/dist/assets/Player-BarbgKjI.css +1 -0
  17. package/client/dist/assets/Player-CSyGax33.js +9 -0
  18. package/client/dist/assets/PlayerSettings-BaCVQyw6.js +1 -0
  19. package/client/dist/assets/PlayerSettings-l6aLKrHh.css +1 -0
  20. package/client/dist/assets/QueueRail-Cxn5U8kE.js +1 -0
  21. package/client/dist/assets/QueueRail-DOM_pWkE.css +1 -0
  22. package/client/dist/assets/RemoveConfirmationModal-BBiogSdf.css +1 -0
  23. package/client/dist/assets/RemoveConfirmationModal-DatCZQKq.js +1 -0
  24. package/client/dist/assets/Search-BzO-aRP7.css +1 -0
  25. package/client/dist/assets/Search-DJxo3BYH.js +1 -0
  26. package/client/dist/assets/SearchableSelect-BkCrf6E8.css +1 -0
  27. package/client/dist/assets/SearchableSelect-BzYsMz8B.js +1 -0
  28. package/client/dist/assets/Settings-Bv9fX-x3.css +1 -0
  29. package/client/dist/assets/Settings-C5adinOe.js +1 -0
  30. package/client/dist/assets/SynopsisText-C3AK-aRc.js +1 -0
  31. package/client/dist/assets/SynopsisText-DsI3mW5v.css +1 -0
  32. package/client/dist/assets/ToggleSwitch-BIlQxIjg.css +1 -0
  33. package/client/dist/assets/ToggleSwitch-CrXim14A.js +1 -0
  34. package/client/dist/assets/Watchlist-CXw0vbNx.js +1 -0
  35. package/client/dist/assets/Watchlist-a2RHQogs.css +1 -0
  36. package/client/dist/assets/hls.light-DcbkToIY.js +27 -0
  37. package/client/dist/assets/index-BzX_xmnf.css +1 -0
  38. package/client/dist/assets/index-Ciivz6fh.js +178 -0
  39. package/client/dist/assets/useAnimeInfoData-Dqthchpa.js +1 -0
  40. package/client/dist/assets/useIsMobile-BviODivc.js +1 -0
  41. package/client/dist/assets/vendor-Bc4EraM_.js +3 -0
  42. package/client/dist/favicon.ico +0 -0
  43. package/client/dist/index.html +35 -0
  44. package/client/dist/logo.png +0 -0
  45. package/client/dist/placeholder.svg +4 -0
  46. package/client/dist/robots.txt +3 -0
  47. package/client/package.json +58 -0
  48. package/orchestrator.js +323 -0
  49. package/package.json +88 -0
  50. package/server/.env +1 -0
  51. package/server/dist/config.js +89 -0
  52. package/server/dist/constants.json +1359 -0
  53. package/server/dist/controllers/auth.controller.js +215 -0
  54. package/server/dist/controllers/data.controller.js +232 -0
  55. package/server/dist/controllers/insights.controller.js +200 -0
  56. package/server/dist/controllers/proxy.controller.js +353 -0
  57. package/server/dist/controllers/settings.controller.js +159 -0
  58. package/server/dist/controllers/watchlist.controller.js +749 -0
  59. package/server/dist/db.js +152 -0
  60. package/server/dist/discord-rpc.js +279 -0
  61. package/server/dist/github-sync.js +342 -0
  62. package/server/dist/google.js +310 -0
  63. package/server/dist/logger.js +21 -0
  64. package/server/dist/providers/123anime.provider.js +226 -0
  65. package/server/dist/providers/allanime.provider.js +736 -0
  66. package/server/dist/providers/animepahe.provider.js +457 -0
  67. package/server/dist/providers/animeya.provider.js +787 -0
  68. package/server/dist/providers/megaplay.provider.js +264 -0
  69. package/server/dist/providers/provider.interface.js +2 -0
  70. package/server/dist/rclone.js +126 -0
  71. package/server/dist/repositories/insights.repository.js +42 -0
  72. package/server/dist/repositories/notifications.repository.js +30 -0
  73. package/server/dist/repositories/queue.repository.js +38 -0
  74. package/server/dist/repositories/settings.repository.js +14 -0
  75. package/server/dist/repositories/shows-meta.repository.js +41 -0
  76. package/server/dist/repositories/watched-episodes.repository.js +67 -0
  77. package/server/dist/repositories/watchlist.repository.js +80 -0
  78. package/server/dist/routes/auth.routes.js +26 -0
  79. package/server/dist/routes/data.routes.js +42 -0
  80. package/server/dist/routes/insights.routes.js +12 -0
  81. package/server/dist/routes/proxy.routes.js +14 -0
  82. package/server/dist/routes/settings.routes.js +27 -0
  83. package/server/dist/routes/watchlist.routes.js +46 -0
  84. package/server/dist/server.js +229 -0
  85. package/server/dist/sync-config.js +28 -0
  86. package/server/dist/sync.js +427 -0
  87. package/server/dist/utils/db-utils.js +15 -0
  88. package/server/dist/utils/env.utils.js +79 -0
  89. package/server/dist/utils/machine-id.js +46 -0
  90. package/server/dist/utils/request-context.js +5 -0
  91. package/server/package.json +19 -0
@@ -0,0 +1 @@
1
+ import{m as ke,f as Re,s as xe,b as De,d as i,A as Ge,T as N,y as $e,c as de,u as e}from"./vendor-Bc4EraM_.js";import{u as ze,e as Ee,s as Ue,t as ue,v as he,z as Me,i as qe,w as Ye,x as He,y as Qe,A as Je,b as Ve,c as Ke,F as ve,a as me,B as Ze}from"./index-Ciivz6fh.js";import{S as Xe,E as et,a as tt}from"./ErrorMessage-BXKDLzn8.js";import{R as at}from"./RemoveConfirmationModal-DatCZQKq.js";import{B as Z}from"./Button-lkEUHIDS.js";import{S as ge}from"./SearchableSelect-BzYsMz8B.js";import"./useAnimeInfoData-Dqthchpa.js";import"./useIsMobile-BviODivc.js";const nt="_header_htvoj_1",st="_fadeIn_htvoj_1",lt="_title_htvoj_6",rt="_subtitle_htvoj_14",ot="_controls_htvoj_21",it="_slideUpIn_htvoj_1",ct="_filters_htvoj_40",dt="_filterBtn_htvoj_46",ut="_active_htvoj_64",ht="_sortSelect_htvoj_71",vt="_filterContainer_htvoj_100",mt="_searchBarWrapper_htvoj_114",gt="_inputIconWrapper_htvoj_120",pt="_searchIcon_htvoj_125",_t="_searchInput_htvoj_134",ft="_searchActions_htvoj_154",Lt="_searchBtn_htvoj_159",bt="_filterToggleBtn_htvoj_164",St="_advancedFilters_htvoj_192",At="_show_htvoj_199",yt="_filterDivider_htvoj_205",Ct="_filterGrid_htvoj_211",Nt="_filterItem_htvoj_218",jt="_genreSection_htvoj_259",Bt="_genreLabel_htvoj_265",Tt="_genreContainer_htvoj_275",It="_genreButton_htvoj_281",Wt="_include_htvoj_298",wt="_exclude_htvoj_304",Ft="_filterActions_htvoj_311",Pt="_grid_htvoj_319",Ot="_itemWrapper_htvoj_390",kt="_cardActions_htvoj_397",Rt="_statusSelect_htvoj_403",xt="_removeBtn_htvoj_411",Dt="_resultsHeader_htvoj_422",Gt="_resultsTitle_htvoj_432",$t="_itemCount_htvoj_442",zt="_pagination_htvoj_448",Et="_pageBtn_htvoj_458",Ut="_pageInfo_htvoj_487",Mt="_bottomPagination_htvoj_498",qt="_emptyState_htvoj_568",a={header:nt,fadeIn:st,title:lt,subtitle:rt,controls:ot,slideUpIn:it,filters:ct,filterBtn:dt,active:ut,sortSelect:ht,filterContainer:vt,searchBarWrapper:mt,inputIconWrapper:gt,searchIcon:pt,searchInput:_t,searchActions:ft,searchBtn:Lt,filterToggleBtn:bt,advancedFilters:St,show:At,filterDivider:yt,filterGrid:Ct,filterItem:Nt,genreSection:jt,genreLabel:Bt,genreContainer:Tt,genreButton:It,include:Wt,exclude:wt,filterActions:Ft,grid:Pt,itemWrapper:Ot,cardActions:kt,statusSelect:Rt,removeBtn:xt,resultsHeader:Dt,resultsTitle:Gt,itemCount:$t,pagination:zt,pageBtn:Et,pageInfo:Ut,bottomPagination:Mt,emptyState:qt},_e=["All","Continue Watching","Watching","Completed","On-Hold","Dropped","Planned"],Yt=_e.slice(2),Ht=[{value:"ALL",label:"All Types"},{value:"TV",label:"TV Series"},{value:"Movie",label:"Movie"},{value:"OVA",label:"OVA"},{value:"ONA",label:"ONA"}],Qt=[{value:"ALL",label:"All Seasons"},{value:"Winter",label:"Winter"},{value:"Spring",label:"Spring"},{value:"Summer",label:"Summer"},{value:"Fall",label:"Fall"}],Jt=[{value:"ALL",label:"All Countries"},{value:"JP",label:"Japan"},{value:"CN",label:"China"}],Vt=[{value:"ALL",label:"All Languages"},{value:"sub",label:"Subbed"},{value:"dub",label:"Dubbed"}],pe=c=>{const g={};return c.get("genres")?.split(",").filter(Boolean).forEach(s=>{g[s]="include"}),c.get("excludeGenres")?.split(",").filter(Boolean).forEach(s=>{g[s]="exclude"}),g},la=()=>{const{filter:c="All"}=ke(),g=Re(),[s,X]=xe(),ee=De(),[r,j]=i(parseInt(s.get("page")||"1")),[u,B]=i(s.get("sortBy")||"last_added"),[T,I]=i(s.get("query")||""),[W,w]=i(s.get("type")||"ALL"),[F,P]=i(s.get("season")||"ALL"),[O,k]=i(s.get("year")||"ALL"),[R,x]=i(s.get("country")||"ALL"),[D,G]=i(s.get("translation")||"ALL"),[$,z]=i(s.get("studios")||"ALL"),[E,U]=i(s.get("tags")||"ALL"),[M,q]=i(()=>pe(s)),[f,fe]=i(()=>["type","season","year","country","translation","studios","tags","genres"].some(t=>s.has(t))),{lowEndMode:Le}=ze(),{titlePreference:L}=Ee(),{data:Y}=Ue(),te=Y?.genres||[],be=Y?.studios||[],Se=Y?.tags||[],H=Ge(null),[h,b]=i(null),o=c==="Continue Watching",S=N(()=>{const t=new URLSearchParams(s);return t.delete("page"),t.set("titlePreference",L),t.toString()},[s,L]),{data:A,isLoading:Ae,error:ye}=ue(S,r,14),{data:y,isLoading:Ce,error:Ne}=he(c,S,r,14),{data:je}=ue(S,r+1,14),{data:Be}=he(c,S,r+1,14),Q=N(()=>(o?A?.data:y?.data)||[],[o,A,y]),J=N(()=>(o?A?.total:y?.total)||0,[o,A,y]),v=o?Ae:Ce,ae=o?ye:Ne,ne=o?je:Be;$e(()=>{I(s.get("query")||""),B(s.get("sortBy")||"last_added"),w(s.get("type")||"ALL"),P(s.get("season")||"ALL"),k(s.get("year")||"ALL"),x(s.get("country")||"ALL"),G(s.get("translation")||"ALL"),z(s.get("studios")||"ALL"),U(s.get("tags")||"ALL"),q(pe(s)),j(parseInt(s.get("page")||"1"))},[s]);const Te=de({mutationFn:async({id:t,status:n})=>{await fetch("/api/watchlist/status",{method:"POST",body:JSON.stringify({id:t,status:n}),headers:{"Content-Type":"application/json"}})},onSuccess:()=>{ee.invalidateQueries({queryKey:["watchlist"]}),Me.success("Status updated")}}),Ie=de({mutationFn:async t=>{await fetch("/api/continue-watching/remove",{method:"POST",body:JSON.stringify({showId:t}),headers:{"Content-Type":"application/json"}})},onSuccess:()=>ee.invalidateQueries({queryKey:["allContinueWatching"]})}),V=qe(),{data:se}=Ye("skipRemoveConfirmation"),We=He(),le=N(()=>{const t=n=>n[L]||n.name||"";return[...Q].sort((n,l)=>u==="name_asc"?t(n).localeCompare(t(l)):u==="name_desc"?t(l).localeCompare(t(n)):0)},[Q,u,L]),K=new Date().getFullYear(),we=[{value:"ALL",label:"All Years"},...Array.from({length:K-1980+1},(t,n)=>({value:String(K-n),label:String(K-n)}))],re=[{value:"ALL",label:"All Studios"},...be.map(t=>({value:t,label:t}))],oe=[{value:"ALL",label:"All Tags"},...Se.map(t=>({value:t,label:t}))],p=(t=u,n=1)=>{const l=new URLSearchParams;T.trim()&&l.set("query",T.trim()),t!=="last_added"&&l.set("sortBy",t),W!=="ALL"&&l.set("type",W),F!=="ALL"&&l.set("season",F),O!=="ALL"&&l.set("year",O),R!=="ALL"&&l.set("country",R),D!=="ALL"&&l.set("translation",D),$!=="ALL"&&l.set("studios",$),E!=="ALL"&&l.set("tags",E);const _=Object.entries(M).filter(([,d])=>d==="include").map(([d])=>d),m=Object.entries(M).filter(([,d])=>d==="exclude").map(([d])=>d);_.length>0&&l.set("genres",_.join(",")),m.length>0&&l.set("excludeGenres",m.join(",")),n>1&&l.set("page",n.toString()),X(l),n!==r&&j(n)},C=t=>{if(p(u,t),H.current){const n=H.current.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:n,behavior:"smooth"})}},Fe=()=>{I(""),B("last_added"),w("ALL"),P("ALL"),k("ALL"),x("ALL"),G("ALL"),z("ALL"),U("ALL"),q({}),X(new URLSearchParams),j(1)},Pe=t=>{q(n=>{const l=n[t],_=l==="include"?"exclude":l==="exclude"?void 0:"include",m={...n};return _?m[t]=_:delete m[t],m})},ie=(t,n)=>{if(o){b({id:t,name:n});return}String(se)==="true"||String(se)==="1"?V.mutate(t):b({id:t,name:n})},Oe=t=>{h&&(o?(Ie.mutate(h.id),t.removeFromWatchlist&&V.mutate(h.id)):V.mutate(h.id),t.rememberPreference&&We.mutate({key:"skipRemoveConfirmation",value:!0}),b(null))},ce=Q.length>=14&&ne&&ne.data.length>0;return e("div",{className:"page-container",children:[e("header",{className:a.header,children:[e("h2",{className:a.title,children:"My Watchlist"}),e("p",{className:a.subtitle,children:"Track and manage your anime collection"})]}),e("div",{className:a.controls,children:[e("div",{className:a.filters,children:_e.map(t=>e("button",{className:`${a.filterBtn} ${c===t?a.active:""}`,onClick:()=>{g({pathname:`/watchlist/${t}`,search:s.toString()})},children:t},t))}),e("div",{children:e("select",{className:a.sortSelect,value:u,onChange:t=>{const n=t.currentTarget.value;B(n),p(n,r)},children:[e("option",{value:"last_added",children:"Recently Added"}),e("option",{value:"name_asc",children:"Name (A-Z)"}),e("option",{value:"name_desc",children:"Name (Z-A)"})]})})]}),e("div",{className:a.filterContainer,children:[e("div",{className:a.searchBarWrapper,children:[e("div",{className:a.inputIconWrapper,children:[e(Qe,{className:a.searchIcon}),e("input",{className:a.searchInput,placeholder:"Search your watchlist by title...",value:T,onInput:t=>I(t.currentTarget.value),onKeyDown:t=>t.key==="Enter"&&p()})]}),e("div",{className:a.searchActions,children:[e(Z,{onClick:()=>p(),className:a.searchBtn,children:"Search"}),e("button",{className:`${a.filterToggleBtn} ${f?a.active:""}`,onClick:()=>fe(!f),children:[e(Je,{size:14}),e("span",{children:"Filters"}),f?e(Ve,{size:12}):e(Ke,{size:12})]})]})]}),e("div",{className:`${a.advancedFilters} ${f?a.show:""}`,children:[e("div",{className:a.filterDivider}),e("div",{className:a.filterGrid,children:[e("div",{className:a.filterItem,children:[e("label",{children:"Type"}),e("select",{value:W,onChange:t=>w(t.currentTarget.value),children:Ht.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:a.filterItem,children:[e("label",{children:"Season"}),e("select",{value:F,onChange:t=>P(t.currentTarget.value),children:Qt.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:a.filterItem,children:[e("label",{children:"Year"}),e("select",{value:O,onChange:t=>k(t.currentTarget.value),children:we.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:a.filterItem,children:[e("label",{children:"Country"}),e("select",{value:R,onChange:t=>x(t.currentTarget.value),children:Jt.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),e("div",{className:a.filterItem,children:[e("label",{children:"Language"}),e("select",{value:D,onChange:t=>G(t.currentTarget.value),children:Vt.map(t=>e("option",{value:t.value,children:t.label},t.value))})]}),re.length>1&&e("div",{className:a.filterItem,children:[e("label",{children:"Studio"}),e(ge,{options:re,value:$,onChange:z,placeholder:"All Studios"})]}),oe.length>1&&e("div",{className:a.filterItem,children:[e("label",{children:"Tag"}),e(ge,{options:oe,value:E,onChange:U,placeholder:"All Tags"})]})]}),te.length>0&&e("div",{className:a.genreSection,children:[e("label",{className:a.genreLabel,children:"Genres"}),e("div",{className:a.genreContainer,children:te.map(t=>e("button",{className:`${a.genreButton} ${a[M[t]||""]}`,onClick:()=>Pe(t),children:t},t))})]}),e("div",{className:a.filterActions,children:[e(Z,{variant:"secondary",onClick:Fe,children:"Reset All"}),e(Z,{onClick:()=>p(),className:a.applyBtn,children:"Apply Filters"})]})]})]}),e("div",{className:a.resultsHeader,ref:H,children:[e("h3",{className:a.resultsTitle,children:[o?"Continue Watching":c,e("span",{className:a.itemCount,children:["(",J," items)"]})]}),J>0&&e("div",{className:a.pagination,children:[e("button",{className:a.pageBtn,onClick:()=>C(r-1),disabled:r===1||v,children:e(ve,{size:14})}),e("span",{className:a.pageInfo,children:["Page ",e("strong",{children:r})]}),e("button",{className:a.pageBtn,onClick:()=>C(r+1),disabled:!ce||v,children:e(me,{size:14})})]})]}),v?e(Xe,{}):ae?e(et,{message:ae.message}):e("div",{className:`${a.grid} ${Le?a.lowEnd:""}`,children:le.map(t=>e("div",{className:a.itemWrapper,children:[e(tt,{anime:t,continueWatching:o,onRemove:()=>ie(t.id,t.name),layout:"vertical"}),!o&&e("div",{className:a.cardActions,children:[e("select",{className:a.statusSelect,value:t.status,onChange:n=>Te.mutate({id:t.id,status:n.currentTarget.value}),children:Yt.map(n=>e("option",{value:n,children:n},n))}),e("button",{className:a.removeBtn,onClick:()=>ie(t.id,t.name),title:"Remove from Watchlist",children:e(Ze,{size:12})})]})]},t._id))}),!v&&le.length===0&&e("div",{className:a.emptyState,children:e("p",{children:"No anime found in this list."})}),J>0&&e("div",{className:a.bottomPagination,children:e("div",{className:a.pagination,children:[e("button",{className:a.pageBtn,onClick:()=>C(r-1),disabled:r===1||v,children:[e(ve,{size:14}),e("span",{children:"Previous"})]}),e("span",{className:a.pageInfo,children:["Page ",e("strong",{children:r})]}),e("button",{className:a.pageBtn,onClick:()=>C(r+1),disabled:!ce||v,children:[e("span",{children:"Next"}),e(me,{size:14})]})]})}),e(at,{isOpen:!!h,onClose:()=>b(null),onConfirm:Oe,animeName:h?.name||"",scenario:o?"continueWatching":"watchlist"})]})};export{la as default};
@@ -0,0 +1 @@
1
+ ._header_htvoj_1{margin-bottom:var(--space-8);animation:_fadeIn_htvoj_1 .8s var(--ease-smooth)}._title_htvoj_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._subtitle_htvoj_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0;font-weight:500}._controls_htvoj_21{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-6);margin-bottom:var(--space-10);background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:var(--space-4) var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);animation:_slideUpIn_htvoj_1 .8s var(--ease-smooth);width:100%;box-sizing:border-box}._filters_htvoj_40{display:flex;flex-wrap:wrap;gap:var(--space-2)}._filterBtn_htvoj_46{background:#ffffff0d;color:var(--text-secondary);border:1px solid var(--border-primary);padding:.6rem 1.2rem;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;transition:all var(--transition-base);cursor:pointer}._filterBtn_htvoj_46:hover{background:#ffffff1a;color:var(--text-primary);border-color:var(--text-tertiary)}._filterBtn_htvoj_46._active_htvoj_64{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 4px 15px var(--accent-glow)}._sortSelect_htvoj_71{width:180px;height:44px;padding:0 var(--space-4);background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._sortSelect_htvoj_71:hover{background-color:var(--bg-elevated);border-color:var(--border-secondary)}._sortSelect_htvoj_71:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._filterContainer_htvoj_100{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-6);border-radius:var(--radius-xl);margin-bottom:var(--space-10);box-shadow:var(--glass-shadow);animation:_slideUpIn_htvoj_1 .8s var(--ease-smooth);width:100%;box-sizing:border-box}._searchBarWrapper_htvoj_114{display:flex;gap:var(--space-4);align-items:center}._inputIconWrapper_htvoj_120{flex:1;position:relative}._searchIcon_htvoj_125{position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none}._searchInput_htvoj_134{width:100%;height:52px;padding:0 var(--space-4) 0 3.2rem;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);color:var(--text-primary);font-size:var(--font-size-base);font-family:inherit;transition:all var(--transition-fast)}._searchInput_htvoj_134:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated);box-shadow:0 0 0 4px var(--accent-glow)}._searchActions_htvoj_154{display:flex;gap:var(--space-3)}._searchBtn_htvoj_159{height:52px;padding:0 var(--space-8)!important}._filterToggleBtn_htvoj_164{display:flex;align-items:center;gap:var(--space-2);height:52px;padding:0 var(--space-4);background:#ffffff0d;border:1px solid var(--border-secondary);border-radius:var(--radius-lg);color:var(--text-primary);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}._filterToggleBtn_htvoj_164:hover{background:#ffffff1a;border-color:var(--text-secondary)}._filterToggleBtn_htvoj_164._active_htvoj_64{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 15px var(--accent-glow)}._advancedFilters_htvoj_192{max-height:0;overflow:hidden;transition:all .4s cubic-bezier(.4,0,.2,1);opacity:0}._advancedFilters_htvoj_192._show_htvoj_199{max-height:1200px;opacity:1;margin-top:var(--space-6)}._filterDivider_htvoj_205{height:1px;background:var(--border-primary);margin-bottom:var(--space-6)}._filterGrid_htvoj_211{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-6);margin-bottom:var(--space-8)}._filterItem_htvoj_218{display:flex;flex-direction:column;gap:var(--space-2)}._filterItem_htvoj_218 label{font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}._filterItem_htvoj_218 select{height:44px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);font-family:inherit;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._filterItem_htvoj_218 select:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._filterItem_htvoj_218 select:focus{outline:none;border-color:var(--accent)}._genreSection_htvoj_259{border-top:1px solid var(--border-primary);padding-top:var(--space-6);margin-bottom:var(--space-8)}._genreLabel_htvoj_265{display:block;font-size:.7rem;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-4)}._genreContainer_htvoj_275{display:flex;flex-wrap:wrap;gap:var(--space-2)}._genreButton_htvoj_281{background:#ffffff0d;border:1px solid var(--border-primary);color:var(--text-secondary);padding:.5rem 1rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}._genreButton_htvoj_281:hover{border-color:var(--accent);color:var(--text-primary)}._genreButton_htvoj_281._include_htvoj_298{background:#10b9811a;border-color:#10b981;color:#10b981}._genreButton_htvoj_281._exclude_htvoj_304{background:#ef44441a;border-color:#ef4444;color:#ef4444;text-decoration:line-through}._filterActions_htvoj_311{display:flex;justify-content:flex-end;gap:var(--space-4);border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._grid_htvoj_319{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-6);animation:_fadeIn_htvoj_1 .5s var(--ease-smooth);width:100%}@media(max-width:1400px){._grid_htvoj_319{grid-template-columns:repeat(6,1fr)}}@media(max-width:1200px){._grid_htvoj_319{grid-template-columns:repeat(5,1fr)}}@media(max-width:1024px){._grid_htvoj_319{grid-template-columns:repeat(4,1fr)}}@media(max-width:768px){._grid_htvoj_319{grid-template-columns:repeat(3,1fr);gap:var(--space-2);min-width:0;width:100%;align-items:start}._controls_htvoj_21,._filterContainer_htvoj_100{padding:var(--space-4);width:100%;box-sizing:border-box}._searchBarWrapper_htvoj_114{flex-direction:column;align-items:stretch}._searchActions_htvoj_154{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}._searchBtn_htvoj_159{padding:0!important}._filterGrid_htvoj_211{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){._grid_htvoj_319{grid-template-columns:repeat(2,1fr)!important;gap:12px!important;min-width:0;width:100%;overflow:hidden}._itemWrapper_htvoj_390{width:100%;min-width:0;overflow:hidden;height:auto}._cardActions_htvoj_397{gap:8px;margin-top:8px;width:100%}._statusSelect_htvoj_403{height:36px;font-size:11px;padding:0 8px;background-position:right .6rem center;flex-grow:1}._removeBtn_htvoj_411{width:36px;height:36px;flex-shrink:0}._filterGrid_htvoj_211{grid-template-columns:1fr}}._resultsHeader_htvoj_422{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap;width:100%}._resultsTitle_htvoj_432{font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);margin:0;display:flex;align-items:center;gap:var(--space-2)}._itemCount_htvoj_442{font-size:var(--font-size-sm);color:var(--text-tertiary);font-weight:500}._pagination_htvoj_448{display:flex;align-items:center;gap:var(--space-3);background:var(--bg-secondary);padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--border-secondary)}._pageBtn_htvoj_458{background:none;border:none;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:6px;border-radius:var(--radius-full);transition:all var(--transition-fast);gap:var(--space-2)}._pageBtn_htvoj_458:hover:not(:disabled){background:var(--bg-tertiary);color:var(--accent)}._pageBtn_htvoj_458:disabled{opacity:.3;cursor:not-allowed}._pageBtn_htvoj_458 span{font-size:var(--font-size-xs);font-weight:600}._pageInfo_htvoj_487{font-size:var(--font-size-sm);color:var(--text-secondary);min-width:80px;text-align:center}._pageInfo_htvoj_487 strong{color:var(--text-primary)}._bottomPagination_htvoj_498{display:flex;justify-content:center;margin-top:var(--space-10);padding-top:var(--space-6);border-top:1px solid var(--border-primary);width:100%}._itemWrapper_htvoj_390{display:flex;flex-direction:column;height:100%;transition:transform var(--transition-base)}._itemWrapper_htvoj_390:hover{transform:translateY(-4px)}._cardActions_htvoj_397{margin-top:var(--space-3);display:flex;gap:var(--space-2)}._statusSelect_htvoj_403{flex-grow:1;height:40px;padding:0 var(--space-3);background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;transition:all var(--transition-fast)}._statusSelect_htvoj_403:hover{background-color:var(--bg-elevated);border-color:var(--accent)}._removeBtn_htvoj_411{background:#ef44441a;color:#ef4444;border:1px solid rgba(239,68,68,.2);width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all var(--transition-base);cursor:pointer}._removeBtn_htvoj_411:hover{background:#ef4444;color:#fff;border-color:#ef4444;box-shadow:0 0 15px #ef444466}._emptyState_htvoj_568{text-align:center;padding:var(--space-16) var(--space-4);color:var(--text-tertiary);background:var(--glass-bg);border:1px dashed var(--border-primary);border-radius:var(--radius-xl);font-size:var(--font-size-base);font-weight:500;animation:_fadeIn_htvoj_1 .5s var(--ease-smooth);width:100%}@keyframes _fadeIn_htvoj_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_htvoj_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}