home-atom 1.0.1 → 1.0.2
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.
- package/dist/client/.vite/manifest.json +33 -33
- package/dist/client/_next/static/chunks/{app-top-nav-Dh0jEt8u.js → app-top-nav-Co7RIixU.js} +1 -1
- package/dist/client/_next/static/chunks/{index-hn3AiVww.js → index-BUxxgh38.js} +3 -3
- package/dist/client/_next/static/chunks/{layout-segment-context-DRM8YCgm.js → layout-segment-context-D_cL7vkY.js} +1 -1
- package/dist/client/_next/static/chunks/manage-profiles-modal-CWi3qgd4.js +1 -0
- package/dist/client/_next/static/chunks/netflix-browser-BrXQctI5.js +2 -0
- package/dist/client/_next/static/chunks/playback-activity-66FeikYZ.js +1 -0
- package/dist/client/_next/static/chunks/playback-activity-track-switcher-BzvHiv7c.js +1 -0
- package/dist/client/_next/static/chunks/{step-forward-CV8I5pPb.js → provider-registry-CWHfJn3B.js} +1 -1
- package/dist/client/_next/static/chunks/spotify-app-CJimeMR0.js +1 -0
- package/dist/client/_next/static/chunks/storefront-CCeanBPs.js +1 -0
- package/dist/client/_next/static/css/index.8o3Y-jts.css +1 -0
- package/dist/client/_next/static/css/layout.D2NsWbhP.css +1 -0
- package/dist/client/_next/static/css/layout.D4D5fsiD.css +1 -0
- package/dist/client/_next/static/css/manage-profiles-modal.BOKESpxI.css +1 -0
- package/dist/client/vinext-client-entry-manifest.json +1 -1
- package/dist/server/BUILD_ID +1 -1
- package/dist/server/__vite_rsc_assets_manifest.js +35 -35
- package/dist/server/_next/static/{app-page-cache-DcrtN14Y.js → app-page-cache-CQaSjBaF.js} +1 -1
- package/dist/server/_next/static/{app-page-cache-render-DoCquoNb.js → app-page-cache-render-Dty3aMiv.js} +1 -1
- package/dist/server/_next/static/{app-route-handler-dispatch-Be2YIqVp.js → app-route-handler-dispatch-DCSrhGNV.js} +1 -1
- package/dist/server/_next/static/{cache-headers-BQ-QuzWN.js → cache-headers-lY59goLh.js} +1 -1
- package/dist/server/_next/static/css/index.8o3Y-jts.css +1 -0
- package/dist/server/_next/static/css/layout.D2NsWbhP.css +1 -0
- package/dist/server/_next/static/css/layout.D4D5fsiD.css +1 -0
- package/dist/server/_next/static/database-D79CeUrn.js +161 -0
- package/dist/server/_next/static/{db-BE1J0NNS.js → db-x8J3Vuoa.js} +1 -1
- package/dist/server/_next/static/{downloader-DgnjNL5T.js → downloader-0G-gq1D-.js} +3 -3
- package/dist/server/_next/static/episode-sync-Ct5CeY25.js +1 -0
- package/dist/server/_next/static/{isr-decision-D1zHgPSI.js → isr-decision-BOA4L6nr.js} +1 -1
- package/dist/server/_next/static/netflix-page-Cpp2PgD1.js +1 -0
- package/dist/server/_next/static/{page-Cs-erYTy.js → page-BvzzZVuW.js} +1 -1
- package/dist/server/_next/static/{page-DlBGATQp.js → page-C27wjUYW.js} +1 -1
- package/dist/server/_next/static/{page-DlRXyzSQ.js → page-Rnpx_OjW.js} +1 -1
- package/dist/server/_next/static/{providers-B3YELr_F.js → providers-DwLUa_U_.js} +13 -13
- package/dist/server/_next/static/{providers-CMBIwNGs.js → providers-_uOQh6hB.js} +1 -1
- package/dist/server/_next/static/{request-profile-B1yGQ0l6.js → request-profile-ClcH0i0T.js} +1 -1
- package/dist/server/_next/static/route-4xkmbpc4.js +1 -0
- package/dist/server/_next/static/{route-CeVsDcbj2.js → route-B0L_rsrg2.js} +1 -1
- package/dist/server/_next/static/{route-xtz48fti.js → route-B6q-wR2F.js} +1 -1
- package/dist/server/_next/static/{route-DXTJyFWD.js → route-B6zrlXB5.js} +1 -1
- package/dist/server/_next/static/{route-CNNiXZoM2.js → route-B99Pvusz2.js} +1 -1
- package/dist/server/_next/static/route-B9YeBtG6.js +1 -0
- package/dist/server/_next/static/route-BHbJ9hFI2.js +1 -0
- package/dist/server/_next/static/{route-mzLdjDCs2.js → route-BR3Y_0V42.js} +1 -1
- package/dist/server/_next/static/{route-Cim7D4XQ.js → route-BaGo5TEW.js} +1 -1
- package/dist/server/_next/static/{route-DslPFTAK.js → route-BczKcyvV.js} +1 -1
- package/dist/server/_next/static/{route-B0WNLJZp.js → route-BiSvZr_s.js} +1 -1
- package/dist/server/_next/static/{route-Dbs39TkC.js → route-Bj7s6WXI.js} +1 -1
- package/dist/server/_next/static/{route-vD15s2A8.js → route-CGH08Y8C.js} +1 -1
- package/dist/server/_next/static/{route-CkH7Cg-p.js → route-CJmc17Dq.js} +1 -1
- package/dist/server/_next/static/{route-C74RA7va.js → route-CLvr0Ue3.js} +1 -1
- package/dist/server/_next/static/route-CUaIuP8a.js +1 -0
- package/dist/server/_next/static/{route-BPcAdbz_.js → route-CcrNbScT.js} +1 -1
- package/dist/server/_next/static/route-CiOFTfyw2.js +1 -0
- package/dist/server/_next/static/route-Cn7l9eYT.js +1 -0
- package/dist/server/_next/static/route-CnKXQb5r2.js +1 -0
- package/dist/server/_next/static/{route-CVPPmUto.js → route-D93PQ3NI2.js} +1 -1
- package/dist/server/_next/static/{route-D_G2SOlz.js → route-D9ZD1_5T.js} +1 -1
- package/dist/server/_next/static/{route-DAyF4BHS.js → route-DWPhX9kT2.js} +1 -1
- package/dist/server/_next/static/route-DihT2xS82.js +1 -0
- package/dist/server/_next/static/route-Dn-sYYEs.js +1 -0
- package/dist/server/_next/static/route-DpzLCx1V.js +1 -0
- package/dist/server/_next/static/route-Dswz7MvP2.js +1 -0
- package/dist/server/_next/static/route-Dwk0kt8B.js +1 -0
- package/dist/server/_next/static/route-DxLQx9eD.js +1 -0
- package/dist/server/_next/static/{route-zazqen-A2.js → route-FwNLcs2r2.js} +1 -1
- package/dist/server/_next/static/route-GmbSJZjk2.js +1 -0
- package/dist/server/_next/static/route-iUxcDN2r.js +1 -0
- package/dist/server/_next/static/{route-UWQN8uYr.js → route-j61HPczh.js} +1 -1
- package/dist/server/_next/static/{route-CHJzaQu2.js → route-qJ1EJhxJ.js} +1 -1
- package/dist/server/_next/static/{route-BWk9YK7r.js → route-sNW0pw7C.js} +1 -1
- package/dist/server/_next/static/{seed-cache-oCd9Lfdw.js → seed-cache-DsYPqBld.js} +1 -1
- package/dist/server/_next/static/{server-CS40XqUP.js → server-DwVU6UyP.js} +1 -1
- package/dist/server/_next/static/storage-fxaUbjG1.js +322 -0
- package/dist/server/_next/static/streamer-DUAWx_Tm.js +2 -0
- package/dist/server/_next/static/{subtitles-DYBlMnha.js → subtitles-4c0GFlaW.js} +1 -1
- package/dist/server/_next/static/{title-progress-CQBrSxvN.js → title-progress-BTypVYBz.js} +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/prerendered-routes/404.html +2 -2
- package/dist/server/prerendered-routes/index.html +2 -2
- package/dist/server/prerendered-routes/index.rsc +2 -2
- package/dist/server/ssr/__vite_rsc_assets_manifest.js +35 -35
- package/dist/server/ssr/_next/static/css/refresh-cw.BOKESpxI.css +1 -0
- package/dist/server/ssr/_next/static/minimize-gPI5ytrc.js +1 -0
- package/dist/server/ssr/_next/static/netflix-browser-CXJEizJ6.js +2 -0
- package/dist/server/ssr/_next/static/{pin-BQre-tQY.js → pin-DiZl7z2n.js} +1 -1
- package/dist/server/ssr/_next/static/playback-activity-AIsC-eO5.js +1 -0
- package/dist/server/ssr/_next/static/refresh-cw-DNvHlOAy.js +1 -0
- package/dist/server/ssr/_next/static/spotify-app-xyDH0rho.js +1 -0
- package/dist/server/ssr/_next/static/storefront-DMeL08z3.js +1 -0
- package/dist/server/ssr/index.js +1 -1
- package/dist/server/ssr/vinext-client-assets.js +1 -1
- package/dist/server/ssr/vinext-server.json +1 -1
- package/dist/server/vinext-client-assets.js +1 -1
- package/dist/server/vinext-prerender-paths.json +1 -1
- package/dist/server/vinext-prerender.json +16 -1
- package/dist/server/vinext-server.json +1 -1
- package/package.json +4 -2
- package/dist/client/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js +0 -1
- package/dist/client/_next/static/chunks/netflix-browser-L_Vb9wXK.js +0 -2
- package/dist/client/_next/static/chunks/playback-activity-Dug3BRYr.js +0 -1
- package/dist/client/_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js +0 -1
- package/dist/client/_next/static/chunks/spotify-app-f93K4FG_.js +0 -1
- package/dist/client/_next/static/chunks/storefront-C_nmcuvH.js +0 -1
- package/dist/client/_next/static/css/index.BGXy8e6j.css +0 -1
- package/dist/client/_next/static/css/layout.AKSLtSR6.css +0 -1
- package/dist/client/_next/static/css/layout.D8T68cCD.css +0 -1
- package/dist/client/_next/static/css/manage-profiles-modal.BAVyxRRR.css +0 -1
- package/dist/server/_next/static/css/index.BGXy8e6j.css +0 -1
- package/dist/server/_next/static/css/layout.AKSLtSR6.css +0 -1
- package/dist/server/_next/static/css/layout.D8T68cCD.css +0 -1
- package/dist/server/_next/static/database-BNnYfHmT.js +0 -114
- package/dist/server/_next/static/netflix-page-BRbORN1F.js +0 -1
- package/dist/server/_next/static/route-96DdgJBs.js +0 -1
- package/dist/server/_next/static/route-BBmE0xf12.js +0 -1
- package/dist/server/_next/static/route-BdG5ojMj2.js +0 -1
- package/dist/server/_next/static/route-BovNctFc.js +0 -1
- package/dist/server/_next/static/route-C2LuSjoh.js +0 -1
- package/dist/server/_next/static/route-CCUsQ7AG.js +0 -1
- package/dist/server/_next/static/route-CN6VdJwN.js +0 -1
- package/dist/server/_next/static/route-CjUCKwSj2.js +0 -1
- package/dist/server/_next/static/route-Cn40NftM.js +0 -1
- package/dist/server/_next/static/route-DWAMZHLa.js +0 -1
- package/dist/server/_next/static/route-DiT9UYUd.js +0 -1
- package/dist/server/_next/static/route-jMq6H_yh.js +0 -1
- package/dist/server/_next/static/storage-D1zF0J_t.js +0 -288
- package/dist/server/_next/static/streamer-B1PRR-dj.js +0 -2
- package/dist/server/ssr/_next/static/css/refresh-cw.BAVyxRRR.css +0 -1
- package/dist/server/ssr/_next/static/minimize-C9JLgte-.js +0 -1
- package/dist/server/ssr/_next/static/netflix-browser-CMAehdwi.js +0 -2
- package/dist/server/ssr/_next/static/playback-activity-D5TYX2Ae.js +0 -1
- package/dist/server/ssr/_next/static/refresh-cw-CWdWHjqY.js +0 -1
- package/dist/server/ssr/_next/static/spotify-app-CE-RaTjZ.js +0 -1
- package/dist/server/ssr/_next/static/storefront-C5NNzPMa.js +0 -1
- /package/dist/client/_next/static/{e1ce9af7-d770-43d6-845a-511443f19971 → 7c810a6d-59fd-41d6-b465-cf61efaea04f}/_buildManifest.js +0 -0
- /package/dist/client/_next/static/{e1ce9af7-d770-43d6-845a-511443f19971 → 7c810a6d-59fd-41d6-b465-cf61efaea04f}/_ssgManifest.js +0 -0
- /package/dist/server/_next/static/{layout-Ds3pFa6r.js → layout-D1iejeee.js} +0 -0
- /package/dist/server/_next/static/{layout-ClEWbCcj.js → layout-DpOw0OgX.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--netflix-red:#e50914;--netflix-red-dark:#b20710;--background:#141414;--background-deep:#050505;--surface:#181818;--surface-raised:#2f2f2f;--text:#fff;--text-muted:#b3b3b3;--text-dim:#777;--page-padding:clamp(1rem, 4vw, 3.75rem);--header-height:4.25rem;--app-top-nav-height:2.25rem;--ease-out:cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box}html{background:var(--background);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scroll-behavior:smooth}body{background:var(--background);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}button:focus-visible{outline-offset:3px;outline:2px solid #fff}a:focus-visible{outline-offset:3px;outline:2px solid #fff}input:focus-visible{outline-offset:3px;outline:2px solid #fff}[role=button]:focus-visible{outline-offset:3px;outline:2px solid #fff}.site-shell{background:radial-gradient(circle at 80% 35%, #590b1014, transparent 24rem), var(--background);min-height:100vh;overflow:clip}.app-top-nav-offset{padding-top:var(--app-top-nav-height)}.top-nav{z-index:80;top:var(--app-top-nav-height);height:calc(var(--header-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--page-padding) 0;background:linear-gradient(#000000db 0%,#00000073 52%,#0000 100%);justify-content:space-between;align-items:center;gap:2rem;transition:background-color .22s,box-shadow .22s;display:flex;position:fixed;left:0;right:0}.top-nav--solid{background:#141414f7;box-shadow:0 .5rem 1.75rem #0000002e}.top-nav--search{box-shadow:none;background:#0c0c0c;gap:1.5rem;padding-inline:clamp(1rem,1.65vw,1.75rem)}.top-nav--search .nav-start{gap:clamp(1.5rem,2.4vw,2.6rem)}.top-nav--search .nav-end{flex:1}.top-nav--search .nav-end>.nav-popover-wrap{display:none}.nav-start,.nav-end{align-items:center;min-width:0;display:flex}.nav-start{gap:clamp(1.5rem,2.7vw,3rem)}.nav-end{justify-content:flex-end;gap:clamp(.75rem,1.25vw,1.4rem)}.netflix-wordmark{color:var(--netflix-red);letter-spacing:-.085em;text-shadow:0 0 1px #ffffff26;transform-origin:0;font-size:clamp(1.5rem,2.25vw,2rem);font-weight:950;line-height:1;transform:scaleX(.92)}.primary-nav{align-items:center;gap:clamp(.85rem,1.35vw,1.35rem);display:flex}.primary-nav a{color:#e5e5e5;white-space:nowrap;font-size:clamp(.75rem,.9vw,.9rem);font-weight:400;transition:color .18s}.primary-nav a:hover{color:var(--text-muted)}.primary-nav a.active{color:#fff;font-weight:650}.icon-button{cursor:pointer;background:0 0;border:0;place-items:center;width:2.75rem;height:2.75rem;padding:0;display:grid}.icon-button svg{stroke-width:2px;width:1.35rem;height:1.35rem}.mobile-menu-button{display:none}.kids-link{font-size:.85rem}.search-box{width:2.75rem;height:2.35rem;transition:width .26s var(--ease-out), border-color .18s ease, background .18s ease;background:0 0;border:1px solid #0000;justify-content:flex-start;align-items:center;display:flex;overflow:hidden}.search-box--open{background:#000000d1;border-color:#ffffffd1;width:min(17rem,28vw)}.search-box .search-trigger{flex:0 0 2.75rem}.search-box input{color:#fff;background:0 0;border:0;outline:0;width:100%;min-width:0;height:100%;padding:0 .7rem 0 .15rem;font-size:.82rem}.search-box input::placeholder{color:#a7a7a7}.search-clear{color:#989898;cursor:pointer;background:#3b3b3b;border:0;border-radius:50%;flex:0 0 1.45rem;place-items:center;width:1.45rem;height:1.45rem;margin-right:.65rem;padding:0;display:grid}.search-clear:hover{color:#d0d0d0;background:#505050}.search-clear svg{stroke-width:3px;width:.92rem;height:.92rem}.top-nav--search .search-box--open{background:#181818;border-color:#5c5c5c;border-radius:999px;width:min(25rem,32vw);height:3.5rem;margin-left:auto}.top-nav--search .search-box .search-trigger{flex-basis:3rem}.top-nav--search .search-box input{padding:0 .45rem 0 0;font-size:1rem}.nav-popover-wrap,.download-button,.notification-button{position:relative}.download-badge{background:var(--netflix-red);color:#fff;border:1.5px solid #141414;border-radius:999px;place-items:center;min-width:1.05rem;height:1.05rem;padding:0 .22rem;font-size:.58rem;font-weight:800;line-height:1;display:grid;position:absolute;top:.05rem;right:0}.notification-dot{background:var(--netflix-red);border:1.5px solid #141414;border-radius:50%;width:.45rem;height:.45rem;position:absolute;top:.25rem;right:.25rem}.profile-trigger{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:.6rem;min-width:2.75rem;min-height:2.75rem;padding:0;display:flex}.profile-trigger>svg{fill:#fff;width:.75rem;height:.75rem;transition:transform .18s}.profile-trigger>svg.rotate{transform:rotate(180deg)}.profile-avatar{background:linear-gradient(155deg,#ffffff47,#0000 35%),#1565c0;border-radius:.25rem;width:2rem;height:2rem;display:block;position:relative;overflow:hidden;box-shadow:inset 0 -.3rem #00000026}.profile-avatar span:first-child,.profile-avatar span:nth-child(2){background:#fff;border-radius:50%;width:.28rem;height:.36rem;position:absolute;top:.7rem}.profile-avatar span:first-child{left:.46rem}.profile-avatar span:nth-child(2){right:.46rem}.profile-avatar span:last-child{border-bottom:.16rem solid #fff;border-radius:0 0 50% 50%;height:.35rem;position:absolute;bottom:.38rem;left:.45rem;right:.45rem}.nav-popover{width:15rem;animation:popover-in .16s var(--ease-out);background:#000000f0;border:1px solid #ffffff24;position:absolute;top:calc(100% + 1.05rem);right:-.1rem;box-shadow:0 1rem 2.5rem #00000073}.popover-caret{background:#000000f0;border-top:1px solid #fff3;border-left:1px solid #fff3;width:.85rem;height:.85rem;position:absolute;top:-.48rem;right:1rem;transform:rotate(45deg)}.profile-popover{width:14rem;padding:.65rem 0}.profile-popover a,.profile-popover button{width:100%;min-height:2.5rem;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.75rem;padding:.35rem .8rem;font-size:.82rem;display:flex}.profile-popover a:hover,.profile-popover button:hover{text-decoration:underline}.profile-popover a>svg,.profile-popover button>svg{color:#b3b3b3;width:1.4rem}.profile-popover .profile-active-check{color:#46d369;width:1rem;margin-left:auto}.profile-signout{border-top:1px solid #fff3;justify-content:center;margin-top:.45rem}.mini-avatar{border-radius:.2rem;flex:none;place-items:center;width:2rem;height:2rem;font-weight:800;display:grid}.profile-option[aria-current=true]{background:#ffffff14}.mini-avatar--blue{background:#1565c0}.mini-avatar--red{background:#f05b47}.notification-popover{width:min(25rem,88vw);right:-.5rem}.sources-popover{border-radius:.35rem;width:min(24rem,92vw);padding:.8rem;right:-2.8rem}.access-popover{border-radius:.35rem;width:min(26rem,100vw - 2rem);padding:.8rem;right:-2.8rem}.access-popover .popover-caret{right:3.75rem}.access-heading{align-items:center;gap:.75rem;padding:.35rem .35rem .85rem;display:flex}.access-heading>span{color:#ff3943;background:#e509142b;border-radius:50%;flex:none;place-items:center;width:2.5rem;height:2.5rem;display:grid}.access-heading>span svg{width:1.2rem}.access-heading>div{flex-direction:column;flex:1;min-width:0;display:flex}.access-heading b{font-size:.95rem}.access-heading small{color:var(--text-muted);font-size:.7rem}.access-tabs{background:#171717;border:1px solid #363636;border-radius:.3rem;grid-template-columns:1fr 1.35fr;gap:.2rem;padding:.2rem;display:grid}.access-tabs button{color:#aaa;cursor:pointer;background:0 0;border:0;border-radius:.2rem;min-height:2.35rem;padding:.45rem .65rem;font-size:.76rem;font-weight:700}.access-tabs button:hover{color:#fff}.access-tabs button[aria-selected=true]{color:#fff;box-shadow:inset 0 -2px 0 var(--netflix-red);background:#333}.access-tab-panel{min-height:18.8rem;padding-top:.8rem}.access-url-row{grid-template-columns:minmax(0,1fr) auto;gap:.45rem;display:grid}.access-url-row>a{color:#ddd;background:#1c1c1c;border:1px solid #444;border-radius:.25rem;align-items:center;gap:.45rem;min-width:0;min-height:2.5rem;padding:.55rem .65rem;font-size:.72rem;display:flex}.access-url-row>a:hover{color:#fff;border-color:#777}.access-url-row>a span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.access-url-row>a svg{flex:none;width:.9rem}.access-url-row>button{color:#111;cursor:pointer;background:#fff;border:0;border-radius:.25rem;justify-content:center;align-items:center;gap:.38rem;min-width:5.25rem;padding:.55rem .7rem;font-size:.72rem;font-weight:800;display:flex}.access-url-row>button:hover{background:#dcdcdc}.access-url-row>button svg{width:.95rem}.access-qr{background:#fff;border-radius:.35rem;place-items:center;width:max-content;margin:.8rem auto 0;display:grid;overflow:hidden}.access-qr svg{width:min(11.5rem,50vw);height:auto;display:block}.access-tab-panel>p{color:var(--text-muted);text-align:center;margin:.55rem 0 0;font-size:.7rem}.access-loading,.access-unavailable{min-height:17.5rem;color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.45rem;padding:1.5rem;font-size:.78rem;display:flex}.access-loading svg,.access-unavailable>svg{color:#777;width:1.75rem;margin-bottom:.25rem}.access-unavailable b{color:#eee;font-size:.85rem}.access-unavailable small{max-width:17rem;color:var(--text-muted);font-size:.72rem;line-height:1.45}.downloads-popover{border-radius:.35rem;width:min(25rem,100vw - 2rem);max-height:min(35rem,76vh);right:-2.8rem;overflow:hidden}.downloads-heading{background:#171717;align-items:center;gap:.75rem;padding:1rem;display:flex}.downloads-heading>span{color:#ff3943;background:#e509142b;border-radius:50%;flex:none;place-items:center;width:2.5rem;height:2.5rem;display:grid}.downloads-heading>span svg{width:1.2rem}.downloads-heading>div,.download-copy{flex-direction:column;flex:1;min-width:0;display:flex}.downloads-heading b{font-size:.95rem}.downloads-heading small{color:var(--text-muted);font-size:.72rem}.download-list{overscroll-behavior:contain;max-height:min(28rem,76vh - 4.5rem);overflow-y:auto}.download-item{background:#141414fa;border-top:1px solid #303030;grid-template-columns:6.25rem minmax(0,1fr);align-items:center;gap:.75rem;min-height:5.25rem;padding:.8rem;display:grid}.download-thumb{aspect-ratio:16/9;cursor:pointer;background-color:#292929;background-position:50%;background-size:cover;border:0;border-radius:.2rem;width:100%;padding:0;display:block;position:relative;overflow:hidden}.download-thumb:before{content:"";opacity:0;background:#0000006b;transition:opacity .16s;position:absolute;inset:0}.download-thumb-play{color:#fff;opacity:0;border:2px solid #ffffffeb;border-radius:50%;place-items:center;width:2rem;height:2rem;transition:opacity .16s,transform .16s;display:grid;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)scale(.82)}.download-thumb-play svg{width:.9rem;height:.9rem}.download-thumb:hover:before,.download-thumb:hover .download-thumb-play{opacity:1}.download-thumb:focus-visible:before{opacity:1}.download-thumb:focus-visible .download-thumb-play{opacity:1}:is(.download-thumb:hover .download-thumb-play,.download-thumb:focus-visible .download-thumb-play){transform:translate(-50%,-50%)scale(1)}.download-copy>div:first-child{justify-content:space-between;align-items:center;gap:.5rem;min-width:0;display:flex}.download-copy b,.download-copy small,.download-copy em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.download-copy b{font-size:.82rem}.download-copy small,.download-copy em{color:#b3b3b3;font-size:.7rem;line-height:1.35}.download-copy em{color:#ff777d;margin-top:.3rem;font-style:normal}.download-status-icon{color:#ddd;border-radius:50%;flex:none;place-items:center;width:1.25rem;height:1.25rem;display:grid}.download-status-icon svg{width:.95rem}.download-item--ready .download-status-icon{color:#08180d;background:#46d369}.download-item--failed .download-status-icon{color:#fff;background:#e50914}.download-progress{background:#4a4a4a;border-radius:999px;height:.22rem;margin-top:.5rem;overflow:hidden}.download-progress span{border-radius:inherit;background:var(--netflix-red);height:100%;transition:width .24s;display:block}.download-item--ready .download-progress span{background:#46d369}.download-item--failed .download-progress span{background:#ff5f66}.downloads-empty{color:#ddd;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;min-height:12rem;padding:2rem;display:flex}.downloads-empty>svg{color:#777;width:2rem;margin-bottom:.35rem}.downloads-empty b{font-size:.86rem}.downloads-empty small{color:var(--text-muted);font-size:.72rem}.sources-heading,.provider-list article,.download-state{align-items:center;display:flex}.sources-heading{gap:.75rem;padding:.35rem .35rem .85rem}.sources-heading>span,.add-movie-icon{color:#ff3943;background:#e509142b;border-radius:50%;place-items:center;width:2.5rem;height:2.5rem;display:grid}.sources-heading svg,.add-movie-icon svg{width:1.2rem}.sources-heading div,.provider-copy{flex-direction:column;flex:1;min-width:0;display:flex}.sources-heading b{font-size:.95rem}.sources-heading small,.provider-copy small{color:var(--text-muted);font-size:.7rem}.provider-list{border-top:1px solid #303030}.provider-list article{border-bottom:1px solid #303030;gap:.65rem;min-height:4.65rem;padding:.65rem .35rem}.provider-mark{background:linear-gradient(145deg,#e50914,#76070d);border-radius:.3rem;flex:none;place-items:center;width:2rem;height:2rem;font-weight:850;display:grid}.provider-copy b{font-size:.82rem}.provider-copy a{color:#ddd;text-overflow:ellipsis;white-space:nowrap;width:max-content;max-width:100%;font-size:.73rem;overflow:hidden}.provider-copy a:hover{text-decoration:underline}.provider-copy small{text-overflow:ellipsis;white-space:nowrap;margin-top:.12rem;overflow:hidden}.provider-sync{color:#fff;cursor:pointer;background:#252525;border:1px solid #525252;border-radius:50%;flex:none;place-items:center;width:2.2rem;height:2.2rem;padding:0;display:grid}.provider-sync:hover:not(:disabled){background:#333;border-color:#fff}.provider-sync:disabled{color:#999;cursor:wait}.provider-sync svg{width:1rem}.source-message{color:#b8b8b8;margin:.7rem .35rem 0;font-size:.72rem;line-height:1.4}.add-movie-button{color:#111;cursor:pointer;background:#fff;border:0;border-radius:.25rem;justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:.75rem;padding:.72rem .8rem;font-weight:750;display:flex}.add-movie-button:hover{background:#dcdcdc}.add-movie-button svg{width:1rem}.spin{animation:.9s linear infinite source-spin}.notification-popover article{text-align:left;background:#141414f5;border:0;border-bottom:1px solid #ffffff1f;grid-template-columns:6.5rem 1fr;gap:.75rem;width:100%;min-height:6rem;padding:.75rem;display:grid}.notification-popover article:hover{background:#252525}.notification-popover article>span:last-child{flex-direction:column;justify-content:center;min-width:0;display:flex}.notification-popover b{font-size:.85rem}.notification-popover small,.notification-popover em{color:var(--text-muted);font-size:.76rem;font-style:normal;line-height:1.4}.notification-popover em{color:var(--text-dim);margin-top:.35rem}.notification-thumb{background-position:50%;background-size:cover;border-radius:.2rem;width:100%;display:block}.notification-thumb--one{background-image:linear-gradient(140deg,#0000,#000000b8),url(https://images.unsplash.com/photo-1485846234645-a62644f84728?auto=format&fit=crop&w=500&q=75)}.notification-thumb--two{background-image:linear-gradient(140deg,#0000,#000000b8),url(https://images.unsplash.com/photo-1489599849927-2ee91cede3ba?auto=format&fit=crop&w=500&q=75)}.hero{--hero-image:none;--hero-accent:#b20710;isolation:isolate;background:#090909;height:clamp(39rem,82vh,54rem);min-height:39rem;position:relative;overflow:hidden}.hero-backdrop{z-index:-3;background-image:var(--hero-image);background-position:62% 22%;background-size:cover;animation:18s ease-in-out infinite alternate hero-breathe;position:absolute;inset:0;transform:scale(1.015)}.hero--paused .hero-backdrop{animation-play-state:paused}.hero-vignette{z-index:-2;background:linear-gradient(90deg, #000000e8 0%, #000000b8 25%, #0000002e 56%, transparent 72%), linear-gradient(0deg, var(--background) 0%, #141414e0 5%, transparent 35%), linear-gradient(180deg, #00000073, transparent 20%);position:absolute;inset:0}.hero:after{z-index:-1;background:var(--hero-accent);content:"";filter:blur(10rem);opacity:.09;border-radius:50%;width:42rem;height:42rem;position:absolute;bottom:-19rem;right:-16rem}.hero-content{z-index:2;top:clamp(8.5rem,18vh,12rem);left:var(--page-padding);width:min(38rem,43vw);position:absolute}.netflix-series{color:#ffffffe0;letter-spacing:.34em;align-items:center;gap:.5rem;margin:0 0 .8rem;font-size:.86rem;font-weight:750;display:flex}.netflix-series span{color:var(--netflix-red);letter-spacing:-.1em;font-size:1.8rem;font-weight:950}.hero-content h1{letter-spacing:-.06em;text-wrap:balance;text-shadow:0 .15rem 1.2rem #0000006b;max-width:9ch;margin:0 0 1rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(3rem,6vw,6rem);font-style:italic;font-weight:800;line-height:.86}.hero-title-logo{object-fit:contain;object-position:left bottom;filter:drop-shadow(0 .15rem .9rem #00000057);width:min(33rem,90%);max-height:11.5rem;margin:0 0 1rem;display:block}.hero-rank{align-items:center;gap:.75rem;margin:1.2rem 0 .8rem;font-size:clamp(1rem,1.35vw,1.35rem);font-weight:750;display:flex}.hero-rank span{background:var(--netflix-red);letter-spacing:-.05em;text-align:center;border-radius:.15rem;place-items:center;width:2.25rem;height:2.25rem;font-size:.68rem;font-weight:900;line-height:.7;display:grid}.hero-description{color:#fffffff0;text-shadow:0 .1rem .6rem #000000b3;-webkit-line-clamp:3;-webkit-box-orient:vertical;max-width:36rem;margin:0 0 1.55rem;font-size:clamp(.95rem,1.32vw,1.25rem);font-weight:420;line-height:1.42;display:-webkit-box;overflow:hidden}.hero-actions,.modal-actions{align-items:center;gap:.75rem;display:flex}.button{cursor:pointer;border:0;border-radius:.3rem;justify-content:center;align-items:center;gap:.65rem;min-width:7.25rem;min-height:3rem;padding:.6rem 1.6rem;font-size:clamp(.92rem,1.15vw,1.08rem);font-weight:750;transition:background .16s,transform .16s;display:inline-flex}.button:active{transform:scale(.97)}.button svg{stroke-width:2.7px;width:1.65rem;height:1.65rem}.button--primary{color:#000;background:#fff}.button--primary:hover{background:#ffffffc7}.button--secondary{color:#fff;background:#6d6d6ec7}.button--secondary:hover{background:#6d6d6e8c}.hero-side-controls{z-index:3;align-items:center;gap:.9rem;display:flex;position:absolute;bottom:clamp(10rem,20vh,14rem);right:0}.round-button{cursor:pointer;background:#18181857;border:1.5px solid #ffffffc7;border-radius:50%;place-items:center;width:2.75rem;height:2.75rem;padding:0;transition:background .16s,border-color .16s,transform .16s;display:grid}.round-button:hover{background:#ffffff24;border-color:#fff;transform:scale(1.06)}.round-button.is-active,.card-controls button.is-active{color:#46d369;border-color:#46d369}.round-button svg{width:1.25rem;height:1.25rem}.maturity-badge{background:#3333339e;border-left:.2rem solid #fff;min-width:7rem;padding:.55rem 2.8rem .55rem .95rem;font-size:1rem}.hero-scroll-cue{z-index:4;color:#ffffff9e;animation:2s ease-in-out infinite scroll-cue;position:absolute;bottom:7rem;left:50%}.catalog{z-index:10;margin-top:clamp(-9rem,-11vw,-6rem);padding-bottom:1rem;scroll-margin-top:5rem;position:relative}.my-list-anchor{scroll-margin-top:5rem}.my-list-empty{min-height:10rem;margin:0 var(--page-padding) 3.5rem;background:linear-gradient(115deg,#ffffff0f,#0000 55%),#191919;border:1px solid #ffffff1f;border-radius:.35rem;grid-template-columns:auto 1fr;align-items:center;gap:1.2rem;padding:1.5rem;display:none}.my-list-anchor:target .my-list-empty{display:grid}.my-list-empty>span{border:1.5px solid #777;border-radius:50%;place-items:center;width:3rem;height:3rem;display:grid}.my-list-empty h2{margin:0 0 .3rem;font-size:clamp(1rem,1.45vw,1.35rem)}.my-list-empty p{color:var(--text-muted);margin:0;font-size:.88rem}.title-row{margin-bottom:clamp(-4rem,-3.6vw,-2.5rem);scroll-margin-top:6rem;position:relative}.row-heading{z-index:6;height:2rem;padding:0 var(--page-padding);align-items:center;gap:.7rem;display:flex;position:relative}.row-heading h2{letter-spacing:-.025em;margin:0;font-size:clamp(1.05rem,1.55vw,1.55rem);font-weight:720}.explore-link{color:#54b9c5;opacity:0;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:.15rem;max-width:0;padding:0;font-size:.75rem;font-weight:700;transition:max-width .24s,opacity .2s;display:flex;overflow:hidden}.title-row:hover .explore-link{opacity:1;max-width:7rem}.explore-link:focus-visible{opacity:1;max-width:7rem}.explore-link svg{width:1rem}.rail-shell{z-index:5;position:relative}.title-rail{padding:2.3rem var(--page-padding) 8rem;overscroll-behavior-inline:contain;grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 2.5rem) / 6);scroll-padding-inline:var(--page-padding);scroll-snap-type:x proximity;scrollbar-width:none;grid-auto-flow:column;gap:.5rem;display:grid;overflow-x:auto}.title-rail:has(.card-episode-strip){padding-bottom:11rem}.title-rail::-webkit-scrollbar{display:none}.title-card{z-index:1;aspect-ratio:16/9;scroll-snap-align:start;transform-origin:50%;min-width:0;transition:transform .22s var(--ease-out), z-index 0s .22s;cursor:pointer;position:relative}.title-card:first-child{transform-origin:0}.title-card:last-child{transform-origin:100%}.card-visual{background:linear-gradient(125deg,#262626,#101010);border-radius:.25rem;width:100%;height:100%;position:relative;overflow:hidden;box-shadow:0 .15rem .35rem #00000047}.card-visual img{object-fit:cover;width:100%;height:100%;transition:transform 1.2s var(--ease-out);display:block}.card-image-shade{opacity:.3;background:linear-gradient(#0000 60%,#0000009e);transition:opacity .2s;position:absolute;inset:0}.card-title-fallback{opacity:0;text-overflow:ellipsis;text-shadow:0 .1rem .35rem #000;white-space:nowrap;font-size:clamp(.65rem,.82vw,.82rem);font-weight:750;transition:opacity .18s;position:absolute;bottom:.55rem;left:.6rem;right:.6rem;overflow:hidden}.card-visual img:not([src]),.card-visual img[src=""]{opacity:0}.card-visual:has(img[src=""]) .card-title-fallback{opacity:1}.card-n{color:var(--netflix-red);letter-spacing:-.08em;text-shadow:0 1px .3rem #000c;font-size:1.05rem;font-weight:950;line-height:.8;position:absolute;top:.35rem;left:.45rem}.card-n small{color:#fff;letter-spacing:.19em;margin:.16rem 0 0 -.05rem;font-size:.27rem;display:block}.new-season{background:var(--netflix-red);text-transform:uppercase;border-radius:.12rem;padding:.15rem .35rem;font-size:.54rem;font-weight:800;position:absolute;bottom:.4rem;right:.45rem}.progress-track{z-index:4;background:#808080b8;height:.22rem;position:absolute;bottom:.42rem;left:10%;right:10%}.progress-track span{background:var(--netflix-red);height:100%;display:block}.resume-checkpoint{z-index:4;color:#fff;letter-spacing:.02em;text-align:right;text-overflow:ellipsis;text-shadow:0 .08rem .3rem #000;white-space:nowrap;font-size:clamp(.48rem,.65vw,.66rem);font-weight:750;position:absolute;bottom:.78rem;left:10%;right:10%;overflow:hidden}.card-details{z-index:0;background:var(--surface);opacity:0;pointer-events:none;min-height:6.7rem;transition:opacity .15s ease, transform .18s var(--ease-out);border-radius:0 0 .25rem .25rem;padding:.65rem;position:absolute;top:calc(100% - .2rem);left:0;right:0;transform:translateY(-.5rem);box-shadow:0 .65rem 1.3rem #000000a6}.card-controls{align-items:center;gap:.35rem;display:flex}.card-controls button{cursor:pointer;background:#242424;border:1.5px solid #8f8f8f;border-radius:50%;place-items:center;width:1.8rem;height:1.8rem;padding:0;display:grid}.card-controls button:hover{border-color:#fff}.card-controls button:first-child{color:#000;background:#fff;border-color:#fff}.card-controls svg{stroke-width:2.4px;width:.9rem;height:.9rem}.card-controls .card-more-button{margin-left:auto}.card-meta{white-space:nowrap;align-items:center;gap:.45rem;margin-top:.55rem;font-size:clamp(.55rem,.68vw,.7rem);display:flex}.card-meta strong,.modal-meta strong{color:#46d369}.mini-maturity{border:1px solid #7b7b7b;padding:.08rem .25rem}.quality-badge{color:#ddd;border:1px solid #777;border-radius:.12rem;padding:.04rem .2rem;font-size:.58rem}.card-details p{text-overflow:ellipsis;white-space:nowrap;margin:.5rem 0 0;font-size:clamp(.52rem,.63vw,.65rem);overflow:hidden}.title-card:has(.card-episode-strip) .card-details{min-height:9.4rem}.card-episode-strip{overscroll-behavior-inline:contain;scrollbar-width:none;grid-auto-columns:calc(33.3333% - .186667rem);grid-auto-flow:column;gap:.28rem;height:2.45rem;margin-top:.55rem;display:grid;overflow-x:auto}.card-episode-strip::-webkit-scrollbar{display:none}.card-episode-strip button{cursor:pointer;background:#333;border:0;border-radius:.15rem;min-width:0;padding:0;position:relative;overflow:hidden}.card-episode-strip button:hover{outline:1px solid #fff}.card-episode-strip img{object-fit:cover;width:100%;height:100%;display:block}.card-episode-strip button>span{color:#fff;background:#000000d1;border-radius:999px;place-items:center;min-width:.85rem;height:.85rem;padding:0 .15rem;font-size:.5rem;font-weight:800;display:grid;position:absolute;bottom:.12rem;right:.18rem}.rail-control{z-index:25;width:var(--page-padding);opacity:0;cursor:pointer;background:#14141499;border:0;place-items:center;min-width:2.5rem;padding:0;transition:opacity .18s,background .18s;display:grid;position:absolute;top:2.3rem;bottom:8rem}.rail-control:hover{background:#141414d1}.rail-control svg{stroke-width:2.3px;width:clamp(1.5rem,2.5vw,2.6rem);height:clamp(1.5rem,2.5vw,2.6rem);transition:transform .18s}.rail-control:hover svg{transform:scale(1.24)}.rail-control--left{left:0}.rail-control--right{right:0}.rail-shell:hover .rail-control{opacity:1}.rail-control:focus-visible{opacity:1}.title-card--ranked{aspect-ratio:auto;grid-template-columns:42% 58%;display:grid}.title-card--ranked .rank-number{z-index:0;color:#080808;letter-spacing:-.09em;text-align:right;-webkit-text-stroke:clamp(1px, .12vw, 2px) #777;align-self:stretch;font-family:Impact,Haettenschweiler,Arial Narrow Bold,sans-serif;font-size:clamp(6rem,10vw,11rem);font-weight:950;line-height:.83;transform:translate(.08em)}.title-card--ranked .card-visual{z-index:1;aspect-ratio:2/3;align-self:center;height:auto}.title-card--ranked .card-details{left:38%}.title-row--ranked .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 2rem) / 5)}.title-row--originals .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 2.5rem) / 6.25)}.title-card--portrait{aspect-ratio:2/3}.title-card--portrait .card-visual{box-shadow:0 .25rem .8rem #00000080}@media (hover:hover) and (pointer:fine) and (min-width:701px){.rail-shell:has(.title-card:hover,.title-card:focus-within,.title-card:focus-visible){z-index:30}:is(.title-card:hover,.title-card:focus-within,.title-card:focus-visible){z-index:20;transition-delay:.28s,0s;transform:scale(1.2)}:is(.title-card:hover .card-details,.title-card:focus-within .card-details,.title-card:focus-visible .card-details){z-index:2;opacity:1;pointer-events:auto;transition-delay:.28s;transform:translateY(0)}:is(.title-card:hover .card-visual,.title-card:focus-within .card-visual,.title-card:focus-visible .card-visual){border-radius:.25rem .25rem 0 0}:is(.title-card:hover .card-visual img,.title-card:focus-within .card-visual img,.title-card:focus-visible .card-visual img){transform:scale(1.035)}.title-card:hover .card-image-shade,.title-card:focus-within .card-image-shade{opacity:.55}}.netflix-search-page{width:100%;min-height:100svh;padding:calc(var(--header-height) + var(--app-top-nav-height) + 2.25rem) clamp(1rem, 1.65vw, 1.75rem) 3rem;background:#121212;margin:0;animation:.22s search-in;overflow-x:hidden}.netflix-search-notice{color:#f2b8b5;background:#89181c47;border-radius:.35rem;margin:-1.2rem 0 .85rem;padding:.6rem .8rem;font-size:.82rem}.netflix-search-grid{grid-template-columns:repeat(auto-fill,minmax(min(17rem,100%),1fr));gap:1.25rem .5rem;display:grid}.netflix-search-card{cursor:pointer;text-align:left;min-width:0;transition:transform .18s var(--ease-out);background:0 0;border:0;gap:.55rem;padding:0;display:grid}.netflix-search-card:hover{z-index:2;transform:scale(1.025)}.netflix-search-card:disabled{cursor:wait;opacity:.72}.netflix-search-card:disabled:hover{transform:none}.netflix-search-artwork{aspect-ratio:16/9;background:#252525;border-radius:.65rem;display:block;position:relative;overflow:hidden}.netflix-search-artwork img{object-fit:cover;width:100%;height:100%;display:block}.netflix-search-title{color:#f5f5f5;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;min-height:2.4em;padding-inline:.1rem;font-size:.92rem;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.netflix-search-loader{z-index:2;color:#fff;background:#000000b8;border-radius:50%;width:2rem;height:2rem;margin:-1rem 0 0 -1rem;padding:.35rem;position:absolute;top:50%;left:50%}.empty-search{min-height:55vh;color:var(--text-muted);text-align:center;place-content:center;display:grid}.empty-search svg{color:#555;width:3.5rem;height:3.5rem;margin:0 auto 1rem}.empty-search h2{color:#fff;margin:0 0 .6rem}.empty-search p{margin:0}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem);background:#000000c2;place-items:start center;padding:2.5rem 1rem;animation:.18s modal-backdrop-in;display:grid;position:fixed;inset:0;overflow-y:auto}.details-modal{background:var(--surface);width:min(53rem,94vw);animation:modal-in .22s var(--ease-out);border-radius:.45rem;position:relative;overflow:hidden;box-shadow:0 1.5rem 5rem #000000bf}.modal-close{z-index:5;cursor:pointer;background:#181818;border:0;border-radius:50%;place-items:center;width:2.25rem;height:2.25rem;padding:0;display:grid;position:absolute;top:1rem;right:1rem}.modal-close svg{width:1.35rem}.modal-hero{--modal-image:none;background-image:linear-gradient(0deg, var(--surface) 0%, transparent 42%), linear-gradient(90deg, #0000009e, transparent 58%), var(--modal-image);background-position:50%;background-size:cover;height:min(31rem,56vw);min-height:20rem;position:relative}.modal-hero-content{position:absolute;bottom:2.25rem;left:3.2rem;right:3.2rem}.modal-hero-content h2{letter-spacing:-.06em;text-shadow:0 .15rem .8rem #000;max-width:11ch;margin:0 0 1.2rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.4rem,5vw,4.5rem);font-style:italic;line-height:.95}.modal-actions .button{min-height:2.75rem}.modal-actions .round-button{background:#2a2a2abf}.modal-body{grid-template-columns:minmax(0,1.65fr) minmax(12rem,.85fr);gap:2.5rem;padding:.6rem 3.2rem 2.5rem;display:grid}.modal-meta{flex-wrap:wrap;align-items:center;gap:.65rem;margin-bottom:.75rem;font-size:.92rem;display:flex}.modal-maturity{border:1px solid #777;margin-bottom:.7rem;padding:.15rem .45rem;font-size:.78rem;display:inline-block}.modal-synopsis{margin:0;font-size:1rem;line-height:1.55}.modal-facts{color:var(--text-muted);margin:0;font-size:.82rem;line-height:1.55}.modal-facts div{margin-bottom:.75rem}.modal-facts dt,.modal-facts dd{margin:0;display:inline}.modal-facts dt{color:#777}.modal-facts dd{color:#ddd}.episode-panel{border-top:1px solid #333;padding:1.5rem 3.2rem 3rem}.episode-panel-header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.episode-panel h3{margin:0;font-size:1.5rem}.episode-panel-header span{font-weight:700}.episode-card-list{display:grid}.episode-card{text-align:left;cursor:pointer;background:#2a2a2a;border:0;border-bottom:1px solid #404040;border-radius:0;grid-template-columns:2rem 9rem 1fr;align-items:center;gap:1rem;width:100%;padding:1rem;display:grid}.episode-card:first-child{border-radius:.25rem .25rem 0 0}.episode-card:last-child{border-radius:0 0 .25rem .25rem}.episode-card:hover{background:#363636}.episode-number{color:var(--text-muted);text-align:center;font-size:1.4rem}.episode-image{aspect-ratio:16/9;background-position:50%;background-size:cover;border-radius:.2rem;place-items:center;display:grid}.episode-image svg{opacity:0;background:#00000073;border:1px solid #fff;border-radius:50%;width:2rem;height:2rem;padding:.45rem;transition:opacity .16s}.episode-card:hover .episode-image svg{opacity:1}.episode-copy{grid-template-columns:1fr auto;gap:.35rem 1rem;display:grid}.episode-copy small{color:#ddd}.episode-copy em{color:var(--text-muted);grid-column:1/-1;font-size:.78rem;font-style:normal}.add-movie-backdrop{z-index:140}.manage-profiles-backdrop{z-index:150}.manage-profiles-modal{background:radial-gradient(circle at 90% 0,#e5091429,#0000 18rem),#181818;border:1px solid #3f3f3f;border-radius:.65rem;width:min(45rem,100vw - 2rem);padding:2.5rem;position:relative;box-shadow:0 1.5rem 5rem #000000b8}.manage-profiles-modal>header{align-items:center;gap:.9rem;margin-bottom:1.5rem;display:flex}.manage-profiles-icon{background:var(--netflix-red);border-radius:.45rem;flex:none;place-items:center;width:2.8rem;height:2.8rem;display:grid}.manage-profiles-icon svg{width:1.35rem}.manage-profiles-modal h2{margin:0 0 .25rem;font-size:1.75rem}.manage-profiles-modal header p{color:#aaa;margin:0;font-size:.82rem}.profile-manager-list{border:1px solid #3b3b3b;border-radius:.4rem;display:grid;overflow:hidden}.profile-manager-row{background:#232323;border-bottom:1px solid #383838;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.75rem;min-height:4.8rem;padding:.8rem;display:grid}.profile-manager-row:last-child{border-bottom:0}.manager-avatar{border-radius:.35rem;flex:none;place-items:center;width:3rem;height:3rem;font-size:1.2rem;font-weight:850;display:grid;box-shadow:inset 0 -.35rem #00000021}.profile-manager-name{flex-direction:column;gap:.18rem;min-width:0;display:flex}.profile-manager-name b{text-overflow:ellipsis;overflow:hidden}.profile-manager-name small{color:#999;font-size:.7rem}.manager-icon-button{cursor:pointer;background:0 0;border:1px solid #565656;border-radius:50%;place-items:center;width:2.35rem;height:2.35rem;padding:0;display:grid}.manager-icon-button:hover{background:#343434;border-color:#fff}.manager-icon-button svg{width:1rem}.manager-icon-button--danger{color:#ff8d92}.manager-icon-button:disabled{opacity:.3;cursor:not-allowed}.profile-editor{background:#292929;border-bottom:1px solid #383838;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:1rem;padding:1rem;display:grid}.profile-editor-fields{gap:.4rem;min-width:0;display:grid}.profile-editor-fields>label,.add-profile-form label{font-size:.72rem;font-weight:750}.profile-editor input[type=text],.profile-editor-fields>input,.add-profile-form>div>input{color:#fff;background:#181818;border:1px solid #686868;border-radius:.25rem;outline:0;width:100%;height:2.6rem;padding:0 .75rem}.profile-editor input:focus,.add-profile-form input:focus{border-color:#fff}.profile-editor-actions{align-self:center;gap:.45rem;display:flex}.manager-button{color:#fff;cursor:pointer;background:#303030;border:1px solid #5a5a5a;border-radius:.25rem;justify-content:center;align-items:center;gap:.4rem;min-height:2.45rem;padding:.45rem .8rem;font-size:.75rem;font-weight:750;display:inline-flex}.manager-button svg{width:1rem}.manager-button--primary{border-color:var(--netflix-red);background:var(--netflix-red)}.manager-button--quiet{background:0 0}.manager-button--danger{background:#8f2026;border-color:#8f2026}.manager-button:disabled{opacity:.55;cursor:wait}.profile-color-picker{border:0;min-width:0;margin:.25rem 0 0;padding:0}.profile-color-picker legend{color:#aaa;margin-bottom:.35rem;font-size:.67rem}.profile-color-picker>div{flex-wrap:wrap;gap:.42rem;display:flex}.profile-color-picker label{cursor:pointer;display:block}.profile-color-picker input{opacity:0;width:1px;height:1px;position:absolute}.profile-color-picker span{border:2px solid #0000;border-radius:50%;width:1.45rem;height:1.45rem;display:block;box-shadow:0 0 0 1px #5c5c5c}.profile-color-picker input:checked+span{border-color:#fff;box-shadow:0 0 0 2px #fff}.profile-delete-confirm{background:#75272b2b;border:1px solid #75272b;border-radius:.35rem;grid-template-columns:1fr auto auto;align-items:center;gap:.55rem;margin-top:.8rem;padding:.8rem;display:grid}.profile-delete-confirm>span{flex-direction:column;gap:.2rem;display:flex}.profile-delete-confirm small{color:#aaa;font-size:.7rem}.add-profile-form{grid-template-columns:minmax(10rem,1fr) 1fr auto;align-items:end;gap:1rem;margin-top:1.25rem;display:grid}.add-profile-form>div:first-child{gap:.4rem;display:grid}.add-movie-modal{background:radial-gradient(circle at 85% 0,#e509142e,#0000 14rem),#181818;border:1px solid #3f3f3f;border-radius:.65rem;width:min(34rem,100vw - 2rem);padding:2.6rem;position:relative;box-shadow:0 1.5rem 5rem #000000b8}.add-movie-modal h2{margin:1rem 0 .35rem;font-size:1.7rem}.add-movie-modal>p{color:#b7b7b7;margin:0 0 1.6rem;font-size:.88rem;line-height:1.6}.add-movie-modal form,.add-movie-modal label{flex-direction:column;display:flex}.add-movie-modal label{margin-bottom:.45rem;font-size:.78rem;font-weight:700}.add-movie-modal input{color:#fff;background:#282828;border:1px solid #696969;border-radius:.25rem;outline:0;width:100%;height:3rem;padding:0 .85rem}.add-movie-modal input:focus{border-color:#fff}.add-movie-modal form>small{color:#858585;margin-top:.45rem;font-size:.7rem}.add-movie-modal .offline-option{cursor:pointer;background:#ffffff09;border:1px solid #454545;border-radius:.3rem;grid-template-columns:auto 1fr;align-items:center;gap:.75rem;margin:1.1rem 0 0;padding:.8rem;display:grid}.add-movie-modal .offline-option input{width:1.05rem;height:1.05rem;accent-color:var(--netflix-red);margin:0}.offline-option span{flex-direction:column;gap:.18rem;min-width:0;display:flex}.offline-option b{font-size:.78rem}.offline-option small{color:#999;font-size:.68rem;font-weight:400}.form-error{color:#ff777d;margin:.8rem 0 0;font-size:.78rem}.add-movie-actions{justify-content:flex-end;gap:.65rem;margin-top:1.5rem;display:flex}.add-movie-actions .button{min-width:8.5rem}.add-movie-actions .button:disabled,.modal-actions .button:disabled{opacity:.58;cursor:wait}.download-state{background:#222;border:1px solid #3e3e3e;border-radius:.3rem;gap:.65rem;margin-bottom:1rem;padding:.75rem}.download-state>svg{color:#f2c94c;width:1.25rem}.download-state--ready>svg{color:#46d369}.download-state--failed>svg{color:#ff5f66}.download-state span{flex-direction:column;min-width:0;display:flex}.download-state b{font-size:.8rem}.download-state small{color:#aaa;font-size:.7rem}.player{--player-image:none;z-index:120;color:#fff;isolation:isolate;background:#000;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;position:fixed;inset:0;overflow:hidden}.player--idle,.player--idle *{cursor:none!important}.player-topbar,.player-bottom,.player-noise,.big-play{transition:opacity .4s}.player--idle .player-topbar,.player--idle .player-bottom,.player--idle .player-noise,.player--idle .big-play{opacity:0;pointer-events:none}.player--local:before{display:none}.player-video{z-index:1;object-fit:contain;cursor:pointer;background:#000;width:100%;height:100%;position:absolute;inset:0}.player-stream-status{z-index:8;color:#fff;text-align:center;background:#141414e6;border-radius:.3rem;align-items:center;gap:.7rem;max-width:min(30rem,100vw - 3rem);padding:.85rem 1.1rem;font-size:.9rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 .75rem 2rem #0000007a}.player-stream-status svg{flex:none;width:1.2rem}.player-stream-status--error{color:#ffd3d5;border:1px solid #ff5f669e}.player-cinematic-bars{display:none}.player--local .player-noise{pointer-events:none}.player:before{z-index:0;background-image:linear-gradient(90deg, #0003, transparent 35%), var(--player-image);content:"";filter:saturate(.92)contrast(1.03);background-position:50%;background-size:cover;transition:filter .22s;animation:18s ease-in-out infinite alternate player-pan;position:absolute;inset:-2%}.player--paused:before{filter:saturate(.6)brightness(.72);animation-play-state:paused}.player-noise{z-index:2;pointer-events:none;background:linear-gradient(#00000047 0,#0000 18% 66%,#000000d1 100%),radial-gradient(circle at 50% 48%,#0000 58%,#00000029);position:absolute;inset:0}.player-topbar{z-index:8;top:max(.45rem, env(safe-area-inset-top));pointer-events:none;justify-content:space-between;align-items:center;height:3.5rem;display:flex;position:absolute;left:1.45rem;right:1.45rem}.player-icon-button{color:#fff;cursor:pointer;filter:drop-shadow(0 .08rem .16rem #000c);pointer-events:auto;background:0 0;border:0;place-items:center;width:3.5rem;height:3.5rem;padding:0;display:grid}.player-icon-button svg{stroke-width:2.2px;width:2.8rem;height:2.8rem}.player-report svg{width:2.8rem;height:2.8rem}.player-subtitles{z-index:5;width:max-content;max-width:min(100% - 4rem,70rem);color:var(--player-subtitle-color,#fff);font-family:var(--player-subtitle-font-family,inherit);font-size:clamp(1.125rem, var(--player-subtitle-font-size,2rem), 4rem);text-align:center;text-shadow:-2px -2px 1px #000,2px -2px 1px #000,-2px 2px 1px #000,2px 2px 1px #000,0 0 .35rem #000;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;outline:none;flex-direction:column;align-items:center;padding:.45rem 1rem;font-weight:750;line-height:1.3;display:flex;position:absolute;transform:translate(-50%,-50%)}.player-subtitles:focus-visible{outline-offset:.2rem;border-radius:.25rem;outline:.15rem solid #ffffffe6}.player-subtitles--dragging{cursor:grabbing}.player-subtitles span{background:var(--player-subtitle-bg,transparent);border-radius:.15rem;max-width:48ch;padding:.05em .25em;display:block}.player-episodes{z-index:7;background:#262626;border-radius:.2rem 0 0 .2rem;width:min(39.6vw,47.5rem);min-width:34rem;position:absolute;top:clamp(6.4rem,12.3vh,7.4rem);bottom:5.75rem;right:0;overflow:hidden}.player-episodes h2{color:#fff;letter-spacing:-.02em;align-items:center;height:4.4rem;margin:0;padding:0 1.4rem;font-size:clamp(1.5rem,1.65vw,2rem);font-weight:600;display:flex}.player-episode-list{scrollbar-color:#414141 transparent;scrollbar-width:thin;height:calc(100% - 4.4rem);overflow-y:auto}.player-episode-list::-webkit-scrollbar{width:.4rem}.player-episode-list::-webkit-scrollbar-track{background:0 0}.player-episode-list::-webkit-scrollbar-thumb{background:#414141;border-radius:999px}.player-episode{color:#fff;text-align:left;cursor:pointer;background:0 0;border:.18rem solid #0000;width:calc(100% - .65rem);min-height:5.3rem;padding:0;display:block}.player-episode:hover{background:#303030}.player-episode--active{background:#131313;border-color:#fff;min-height:15rem}.player-episode--active:hover{background:#131313}.player-episode-heading{grid-template-columns:1.7rem minmax(0,1fr) minmax(5rem,8.25rem);align-items:center;column-gap:.35rem;height:5rem;padding:0 1.6rem 0 2.6rem;font-size:clamp(1rem,1.08vw,1.3rem);display:grid}.player-episode--active .player-episode-heading{height:4.15rem}.player-episode-heading>span{font-weight:500}.player-episode-heading strong{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.player-episode-heading>i{background:gray;width:100%;height:.12rem;display:block}.player-episode-details{grid-template-columns:minmax(12.5rem,15.6rem) minmax(0,1fr);align-items:start;gap:1.9rem;padding:0 1.55rem 1.45rem 1.7rem;display:grid}.player-episode-thumbnail{aspect-ratio:16/9;background-position:50%;background-size:cover;place-items:center;display:grid;position:relative;overflow:hidden}.player-now-playing{color:#fff;white-space:nowrap;text-shadow:0 .1rem .25rem #000;align-items:center;gap:.45rem;font-size:clamp(.82rem,1.03vw,1.25rem);font-weight:500;display:flex}.player-playing-bars{align-items:center;gap:.12rem;height:1.15rem;display:flex}.player-playing-bars i{background:#fff;border-radius:999px;width:.13rem;animation:.65s ease-in-out infinite alternate player-bars}.player-playing-bars i:first-child,.player-playing-bars i:nth-child(3){height:.7rem}.player-playing-bars i:nth-child(2){height:1rem;animation-delay:-220ms}.player-playing-bars i:nth-child(4){height:.5rem;animation-delay:-380ms}.player-episode-synopsis{color:#fff;-webkit-line-clamp:5;-webkit-box-orient:vertical;font-size:clamp(.95rem,1.08vw,1.3rem);font-style:normal;font-weight:400;line-height:1.27;display:-webkit-box;overflow:hidden}.big-play{z-index:8;cursor:pointer;background:#00000061;border:.15rem solid #fff;border-radius:50%;place-items:center;width:5rem;height:5rem;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.big-play svg{width:2.2rem;height:2.2rem}.player-notice{z-index:10;background:#262626f5;border-radius:.2rem;padding:.7rem 1rem;font-size:.9rem;position:absolute;top:5rem;left:50%;transform:translate(-50%);box-shadow:0 .5rem 1.5rem #00000059}.player-bottom{z-index:9;right:1.7rem;bottom:max(2.5rem, env(safe-area-inset-bottom));position:absolute;left:1.25rem}.player-timeline-row{align-items:center;gap:1.15rem;height:1.1rem;margin-bottom:1.95rem;display:flex}.player-timeline-row>time{color:#fff;font-variant-numeric:tabular-nums;text-align:right;flex:none;min-width:2.7rem;font-size:1rem;line-height:1}.player-timeline-wrap{--seek-preview-position:0%;--seek-preview-width:clamp(10rem, 17vw, 14rem);width:100%;min-width:0;position:relative}.player-seek-preview{z-index:2;bottom:calc(100% + .6rem);left:clamp(calc(var(--seek-preview-width) / 2), var(--seek-preview-position), calc(100% - (var(--seek-preview-width) / 2)));width:var(--seek-preview-width);opacity:0;pointer-events:none;flex-direction:column;align-items:center;gap:.45rem;transition:opacity .12s,transform .12s;display:flex;position:absolute;transform:translate(-50%)translateY(.35rem)}.player-timeline-wrap--previewing .player-seek-preview{opacity:1;transform:translate(-50%)}.player-seek-preview img,.player-seek-preview-frame{aspect-ratio:16/9;object-fit:cover;background:#181818;border-radius:.18rem;width:100%;display:block;box-shadow:0 .5rem 1.4rem #000000b8}.player-seek-preview time{color:#fff;font-variant-numeric:tabular-nums;text-align:center;background:#1c1c1cf5;border-radius:999px;min-width:auto;padding:.35rem .65rem;font-size:.9rem;font-weight:600;line-height:1;box-shadow:0 .2rem .6rem #0000008c}.player-timeline{--player-progress:57%;--player-buffered:61%;-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:100%;min-width:0;height:1rem;margin:0;padding:0}.player-timeline::-webkit-slider-runnable-track{background:linear-gradient(to right, red 0 var(--player-progress), #d3d3d3 var(--player-progress) var(--player-buffered), gray var(--player-buffered) 100%);height:.25rem}.player-timeline::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:red;border:0;border-radius:50%;width:1rem;height:1rem;margin-top:-.375rem;box-shadow:0 0 0 .05rem red}.player-timeline::-moz-range-track{background:linear-gradient(to right, red 0 var(--player-progress), #d3d3d3 var(--player-progress) var(--player-buffered), gray var(--player-buffered) 100%);border:0;height:.25rem}.player-timeline::-moz-range-thumb{background:red;border:0;border-radius:50%;width:1rem;height:1rem}.player-controls{align-items:center;min-width:0;display:flex}.player-controls-left,.player-controls-right{flex:none;align-items:center;gap:2.125rem;display:flex}.player-controls-right>:nth-child(3){margin-left:1.875rem}.player-subtitle-control{flex:none;place-items:center;width:3rem;height:3rem;display:grid;position:relative}.player-control-button{color:#fff;cursor:pointer;filter:drop-shadow(0 .08rem .14rem #000000d9);background:0 0;border:0;place-items:center;width:3rem;height:3rem;padding:0;transition:opacity .12s,transform .14s;display:grid;position:relative}.player-control-button:hover{transform:scale(1.08)}.player-control-button:disabled{opacity:.38;cursor:not-allowed;transform:none}.player-control-button:active{transform:scale(.96)}.player-control-button.is-active{color:#fff}.player-control-button>svg{stroke-width:2px;width:2.45rem;height:2.45rem}.player-subtitle-menu{z-index:14;color:#fff;text-align:left;transform-origin:calc(100% - 7.5rem) 100%;background:#242424;border:1px solid #ffffff17;border-radius:.22rem;flex-direction:column;width:min(23rem,100vw - 2rem);max-height:min(70vh,38rem);animation:.14s ease-out subtitle-menu-in;display:flex;position:absolute;bottom:calc(100% + 1.1rem);right:-6.2rem;overflow:hidden;box-shadow:0 .9rem 2.6rem #000000a8}.player-subtitle-menu h2{letter-spacing:-.02em;margin:0;padding:1.25rem 1.3rem .75rem;font-size:1.45rem;font-weight:650}.player-subtitle-options{scrollbar-color:#565656 transparent;scrollbar-width:thin;min-height:0;padding:.25rem 0 .65rem;overflow-y:auto}.player-subtitle-options::-webkit-scrollbar{width:.38rem}.player-subtitle-options::-webkit-scrollbar-thumb{background:#565656;border-radius:999px}.player-subtitle-options button{color:#bdbdbd;width:100%;min-height:3.1rem;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:1.65rem minmax(0,1fr);align-items:center;gap:.35rem;padding:.65rem 1.3rem .65rem 1.05rem;font-size:1.1rem;display:grid}:is(.player-subtitle-options button:hover,.player-subtitle-options button:focus-visible){color:#fff;background:#303030;outline:none}.player-subtitle-options button[aria-selected=true]{color:#fff}.player-subtitle-check{place-items:center;width:1.35rem;height:1.35rem;display:grid}.player-subtitle-check svg{stroke-width:2px;width:1.3rem;height:1.3rem}.player-subtitle-settings{z-index:1;background:#242424;border-top:1px solid #515151;flex:none;padding:1rem 1.3rem 1.15rem;position:relative}.player-subtitle-setting-heading{justify-content:space-between;align-items:center;gap:1rem;font-size:.95rem;font-weight:600;display:flex}.player-subtitle-setting-heading output{color:#bdbdbd;font-variant-numeric:tabular-nums;font-size:.82rem;font-weight:500}.player-subtitle-size-control{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;margin-top:.75rem;display:grid}.player-subtitle-size-control>span:first-child{font-size:.8rem}.player-subtitle-size-control>span:last-child{font-size:1.25rem;font-weight:600}.player-subtitle-size-control input{accent-color:#fff;cursor:pointer;width:100%}.player-subtitle-position-setting{justify-content:space-between;align-items:center;gap:.8rem;margin-top:.8rem;display:flex}.player-subtitle-position-setting p{color:#aaa;margin:0;font-size:.75rem;line-height:1.3}.player-subtitle-position-setting button{color:#eee;min-height:2rem;font:inherit;cursor:pointer;background:0 0;border:1px solid #777;border-radius:.15rem;flex:none;padding:.35rem .65rem;font-size:.72rem}:is(.player-subtitle-position-setting button:hover,.player-subtitle-position-setting button:focus-visible){color:#111;background:#fff;border-color:#fff;outline:none}.player-subtitle-color-setting{justify-content:space-between;align-items:center;gap:.7rem;margin-top:.65rem;display:flex}.player-subtitle-color-setting label{color:#ccc;margin:0;font-size:.75rem}.player-subtitle-color-setting input[type=color]{cursor:pointer;background:0 0;border:1px solid #666;border-radius:.15rem;width:2rem;height:1.5rem;padding:0}.player-subtitle-color-setting select{color:#eee;min-height:1.6rem;font:inherit;cursor:pointer;background:#2a2a2a;border:1px solid #666;border-radius:.15rem;padding:.2rem .4rem;font-size:.72rem}:is(.player-subtitle-color-setting select:hover,.player-subtitle-color-setting select:focus-visible){border-color:#fff;outline:none}.player-controls-left>button:first-child svg{fill:currentColor;stroke-width:1.4px}.player-program{color:#fff;white-space:nowrap;flex:1;justify-content:center;align-items:baseline;gap:1rem;min-width:0;padding:0 1.5rem;font-size:clamp(.9rem,1.05vw,1.25rem);display:flex}.player-program strong{text-overflow:ellipsis;font-weight:500;overflow:hidden}.player-program span{flex:none;font-weight:400}.player-ten-second span{font-size:.73rem;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)}.player-ten-second svg{stroke-width:1.75px;width:2.55rem;height:2.55rem}.player-episodes-trigger svg{transform:scale(1.24)}.player-speed span{color:#000;background:#fff;border-radius:.18rem;padding:.1rem .22rem;font-size:.58rem;font-weight:800;position:absolute;bottom:-.12rem;right:-.35rem}@keyframes subtitle-menu-in{0%{opacity:0;transform:translateY(.35rem)scale(.98)}}@keyframes player-bars{to{height:.25rem}}.player-timeline-marker{z-index:3;pointer-events:none;border-radius:.08rem;width:.38rem;height:.85rem;position:absolute;top:50%;transform:translate(-50%,-50%)}.player-timeline-marker--intro{background:#ffd600;box-shadow:0 0 .35rem #ffd60073}.player-timeline-marker--outro{background:#00e5ff;box-shadow:0 0 .35rem #00e5ff73}.player-marker-control{z-index:4;flex-direction:column;align-items:center;display:flex;position:absolute;bottom:calc(100% + .35rem);transform:translate(-50%)}.player-marker-trigger{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;background:#ffffff26;border:0;border-radius:50%;place-items:center;width:2rem;height:2rem;padding:0;transition:background .14s,transform .14s;animation:.2s ease-out marker-trigger-in;display:grid}.player-marker-trigger:hover{background:#ffffff4d;transform:scale(1.15)}.player-marker-trigger svg{stroke-width:2.2px;width:1.15rem;height:1.15rem}@keyframes marker-trigger-in{0%{opacity:0;transform:scale(.6)}}.player-marker-menu{z-index:14;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transform-origin:50% 100%;background:#181818f5;border:1px solid #ffffff1f;border-radius:.5rem;flex-direction:column;width:max-content;min-width:13rem;animation:.16s ease-out marker-menu-in;display:flex;position:absolute;bottom:calc(100% + .65rem);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 .8rem 2.4rem #000000b3,0 0 0 1px #ffffff0d}@keyframes marker-menu-in{0%{opacity:0;transform:translate(-50%)translateY(.4rem)scale(.96)}}.player-marker-menu button{color:#e0e0e0;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:1.4rem minmax(0,1fr) auto;align-items:center;gap:.6rem;padding:.75rem 1.1rem;font-size:.95rem;font-weight:500;transition:background 80ms,color 80ms;display:grid}.player-marker-menu button:first-child{border-radius:.5rem .5rem 0 0}.player-marker-menu button:last-child{border-radius:0 0 .5rem .5rem}.player-marker-menu button+button{border-top:1px solid #ffffff14}.player-marker-menu button:hover{color:#fff;background:#ffffff1a}.player-marker-menu button svg{stroke-width:2px;color:#bbb;width:1.25rem;height:1.25rem}.player-marker-menu button:hover svg{color:#fff}.player-marker-menu button small{color:gray;font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:400}.player-marker-menu-remove{color:#f07070!important}.player-marker-menu-remove:hover{color:#ff6b6b!important;background:#f050501f!important}.player-marker-menu-remove svg{color:#f07070!important}.player-marker-menu-remove:hover svg{color:#ff6b6b!important}.player-skip-intro{z-index:10;color:#fff;font:inherit;letter-spacing:.04em;cursor:pointer;background:#000000a6;border:1.5px solid #ffffffb3;border-radius:.18rem;padding:.65rem 1.6rem;font-size:clamp(1rem,1.2vw,1.3rem);font-weight:600;transition:background .12s,border-color .12s;animation:.3s ease-out skip-intro-in;position:absolute;bottom:18%;right:6%}.player-skip-intro:hover{background:#fff3;border-color:#fff}@keyframes skip-intro-in{0%{opacity:0;transform:translate(1rem)}}.player-next-episode-prompt{z-index:10;color:#141414;font:inherit;letter-spacing:.02em;cursor:pointer;background:#fff;border:0;border-radius:.22rem;align-items:center;gap:.45rem;padding:.55rem 1.5rem .55rem 1rem;font-size:clamp(.95rem,1.15vw,1.25rem);font-weight:700;transition:background .1s;animation:.35s ease-out next-episode-in;display:flex;position:absolute;bottom:18%;right:6%}.player-next-episode-prompt:hover{background:#ffffffd9}.player-next-episode-prompt svg{stroke-width:1.5px;width:1.35rem;height:1.35rem}@keyframes next-episode-in{0%{opacity:0;transform:translate(1rem)}}.site-footer{max-width:68rem;padding:0 var(--page-padding) 3rem;color:gray;margin:3rem auto 0;font-size:.78rem}.social-links{align-items:center;gap:1.4rem;margin-bottom:1.5rem;display:flex}.social-links a{color:#fff;place-items:center;width:1.6rem;height:1.6rem;font-size:1.4rem;font-weight:700;display:grid}.footer-links{grid-template-columns:repeat(4,1fr);gap:1rem 2rem;display:grid}.footer-links a:hover{text-decoration:underline}.service-code{color:gray;background:0 0;border:1px solid gray;margin:1.8rem 0 .5rem;padding:.45rem;font-size:.75rem;display:inline-block}@keyframes hero-breathe{0%{transform:scale(1.015)}to{transform:scale(1.055)}}@keyframes player-pan{0%{transform:scale(1.02)translate(-.5%)}to{transform:scale(1.08)translate(1.5%)}}@keyframes source-spin{to{transform:rotate(360deg)}}@keyframes scroll-cue{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:.75;transform:translateY(.45rem)}}@keyframes popover-in{0%{opacity:0;transform:translateY(-.35rem)}}@keyframes search-in{0%{opacity:0}}@keyframes modal-backdrop-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:scale(.96)translateY(1rem)}}@media (max-height:900px){.catalog{margin-top:0}}@media (max-width:1199px){.title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 2rem) / 5)}.title-row--ranked .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 1.5rem) / 4)}.title-row--originals .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 2rem) / 5.2)}}@media (max-width:960px){:root{--page-padding:clamp(1.1rem, 3vw, 2rem)}.primary-nav{top:calc(100% - .2rem);left:var(--page-padding);background:#000000f0;border-top:2px solid #fff;flex-direction:column;align-items:stretch;gap:0;width:14rem;padding:.85rem 0;display:none;position:absolute;box-shadow:0 1.2rem 2.5rem #0000006b}.primary-nav:before{content:"";background:#fff;width:.8rem;height:.8rem;position:absolute;top:-.48rem;left:1rem;transform:rotate(45deg)}.primary-nav--open{display:flex}.primary-nav a{z-index:1;text-align:center;background:#000000f5;padding:.75rem 1.15rem;position:relative}.primary-nav a:hover{background:#1e1e1e}.mobile-menu-button{display:grid}.nav-start{gap:.8rem}.hero-content{width:min(32rem,55vw)}.title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 1.5rem) / 4)}.title-row--ranked .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 1rem) / 3.2)}.title-row--originals .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - 1.5rem) / 4.2)}.netflix-search-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.player-episodes{width:min(55vw,47.5rem);min-width:30rem}.player-controls-left,.player-controls-right{gap:.75rem}.player-controls-right>:nth-child(3){margin-left:.65rem}.player-control-button,.player-subtitle-control{width:2.6rem;height:2.6rem}.player-control-button>svg{width:2.1rem;height:2.1rem}.player-program{padding-inline:.65rem;font-size:.86rem}}@media (max-width:700px){:root{--header-height:3.5rem;--page-padding:1rem}.top-nav{gap:.5rem}.nav-start{gap:.4rem}.nav-end{gap:.2rem}.nav-end>.nav-popover-wrap>.icon-button,.search-box,.search-box .search-trigger{width:2.25rem}.search-box .search-trigger{flex-basis:2.25rem}.netflix-wordmark{font-size:1.35rem}.kids-link,.notification-button,.profile-trigger>svg{display:none}.profile-avatar{width:1.85rem;height:1.85rem}.profile-popover{right:-.25rem}.access-popover,.sources-popover,.downloads-popover{top:calc(var(--app-top-nav-height) + var(--header-height) + env(safe-area-inset-top) + .35rem);width:auto;position:fixed;left:1rem;right:1rem}.access-popover .popover-caret,.sources-popover .popover-caret,.downloads-popover .popover-caret{display:none}.search-box--open{z-index:10;top:calc(var(--header-height) + env(safe-area-inset-top));background:#141414;border:1px solid #333;border-left:0;border-right:0;width:100%;height:3.2rem;position:fixed;left:0;right:0}.search-box--open .search-trigger{margin-left:.5rem}.search-box--open input{font-size:1rem}.top-nav--search .search-box--open{top:calc(var(--header-height) + env(safe-area-inset-top) + .4rem);right:var(--page-padding);left:var(--page-padding);background:#181818;border:1px solid #5c5c5c;border-radius:999px;width:auto;height:2.75rem}.hero{height:max(36rem,72svh);min-height:36rem}.hero-backdrop{background-position:66%}.hero-vignette{background:linear-gradient(90deg, #000000c7, #00000040 75%), linear-gradient(0deg, var(--background) 0%, #141414d1 16%, transparent 58%), linear-gradient(180deg, #00000094, transparent 25%)}.hero-content{top:auto;right:var(--page-padding);width:auto;bottom:6rem}.netflix-series{margin-bottom:.4rem;font-size:.62rem}.netflix-series span{font-size:1.35rem}.hero-content h1{max-width:8ch;font-size:clamp(2.8rem,13vw,4.5rem)}.hero-title-logo{width:min(22rem,82%);max-height:7rem}.hero-rank{margin:.7rem 0 .65rem;font-size:.95rem}.hero-rank span{width:1.9rem;height:1.9rem;font-size:.56rem}.hero-description{-webkit-line-clamp:2;max-width:29rem;margin-bottom:1.1rem;font-size:.88rem;line-height:1.35}.button{min-width:6.6rem;min-height:2.75rem;padding:.5rem 1rem;font-size:.86rem}.button svg{width:1.25rem}.hero-side-controls{bottom:3.25rem;right:0}.hero-side-controls .round-button{display:none}.maturity-badge{min-width:4.7rem;padding:.35rem 1.6rem .35rem .65rem;font-size:.74rem}.hero-scroll-cue{display:none}.catalog{margin-top:0}.title-row{margin-bottom:1.5rem}.row-heading{height:1.6rem}.row-heading h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:1.05rem;overflow:hidden}.explore-link,.rail-control{display:none}.title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - .6rem) / 2.25);scroll-snap-type:x mandatory;gap:.4rem;padding-top:1.6rem;padding-bottom:0}.title-rail:has(.card-episode-strip){padding-bottom:0}.title-row--ranked .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - .4rem) / 1.85)}.title-row--originals .title-rail{grid-auto-columns:calc((100vw - (2 * var(--page-padding)) - .8rem) / 3.15)}.title-card{transition:none}.title-card--ranked .rank-number{font-size:8rem}.card-title-fallback{font-size:.68rem}.new-season{display:none}.netflix-search-page{padding-top:calc((2 * var(--header-height)) + var(--app-top-nav-height) + 1.2rem)}.netflix-search-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem .4rem}.modal-backdrop{place-items:stretch stretch;padding:0}.details-modal{border-radius:0;width:100%;min-height:100svh}.manage-profiles-modal{width:100%;min-height:100svh;padding:4.5rem 1rem max(2rem, env(safe-area-inset-bottom));border:0;border-radius:0}.profile-editor{grid-template-columns:auto minmax(0,1fr)}.profile-editor-actions{grid-column:1/-1;justify-content:flex-end}.profile-delete-confirm,.add-profile-form{grid-template-columns:1fr}.profile-delete-confirm .manager-button{width:100%}.modal-close{top:max(.8rem, env(safe-area-inset-top));position:fixed;right:.8rem}.modal-hero{height:60vw;min-height:18rem}.modal-hero-content{bottom:1.4rem;left:1.2rem;right:1.2rem}.modal-hero-content h2{max-width:8ch;font-size:2.5rem}.modal-body{grid-template-columns:1fr;gap:1.5rem;padding:.6rem 1.2rem 2rem}.episode-panel{padding:1.5rem 1.2rem max(2rem, env(safe-area-inset-bottom))}.episode-card{grid-template-columns:1.2rem 7rem minmax(0,1fr);gap:.65rem;padding:.75rem}.episode-copy em{display:none}.episode-copy{min-width:0}.player-topbar{top:max(.2rem, env(safe-area-inset-top));height:3rem;left:.4rem;right:.4rem}.player-icon-button{width:3rem;height:3rem}.player-icon-button svg,.player-report svg{width:2rem;height:2rem}.player-episodes{border-radius:0;width:100%;min-width:0;top:4.25rem;bottom:4.8rem}.player-episodes h2{height:3.5rem;padding-inline:1rem;font-size:1.35rem}.player-episode-list{height:calc(100% - 3.5rem)}.player-episode{width:calc(100% - .35rem);min-height:4rem}.player-episode--active{min-height:12rem}.player-episode-heading,.player-episode--active .player-episode-heading{grid-template-columns:1.35rem minmax(0,1fr) minmax(3.5rem,6rem);height:3.9rem;padding:0 .85rem;font-size:.9rem}.player-episode-details{grid-template-columns:minmax(8rem,12rem) minmax(0,1fr);gap:.8rem;padding:0 .8rem .85rem}.player-episode-synopsis{-webkit-line-clamp:5;font-size:.78rem}.player-now-playing{font-size:.72rem}.player-subtitles{width:max-content;max-width:calc(100% - 1.5rem);padding-inline:.5rem}.big-play{width:4rem;height:4rem}.player-bottom{right:.75rem;bottom:max(1.15rem, env(safe-area-inset-bottom));left:.75rem}.player-timeline-row{gap:.6rem;height:.8rem;margin-bottom:.7rem}.player-timeline-row>time{min-width:2rem;font-size:.72rem}.player-timeline-wrap{--seek-preview-width:min(9rem, 45vw)}.player-seek-preview{gap:.3rem;bottom:calc(100% + .45rem)}.player-seek-preview time{padding:.28rem .52rem;font-size:.72rem}.player-controls{justify-content:space-between}.player-controls-left,.player-controls-right{gap:.15rem}.player-controls-right>:nth-child(3){margin-left:.2rem}.player-control-button,.player-subtitle-control{width:2rem;height:2rem}.player-control-button>svg{width:1.65rem;height:1.65rem}.player-ten-second span{font-size:.5rem}.player-program{display:none}.player-speed span{font-size:.48rem;right:-.2rem}.player-subtitle-menu{width:min(23rem,100vw - 1.5rem);max-height:min(68vh,32rem);right:-4rem}.player-subtitle-menu h2{padding:1rem 1rem .55rem;font-size:1.2rem}.player-subtitle-options button{min-height:2.7rem;padding:.5rem 1rem .5rem .75rem;font-size:.95rem}.player-subtitle-settings{padding:.8rem 1rem .9rem}.player-subtitle-position-setting{flex-direction:column;align-items:flex-start}.player-subtitle-position-setting button{align-self:flex-end}.footer-links{grid-template-columns:repeat(2,1fr)}}@media (max-width:380px){.mobile-menu-button{width:1.8rem}.mobile-menu-button svg{width:1.15rem}.netflix-wordmark{font-size:1.15rem}.hero-actions{gap:.45rem}.button{min-width:6rem;padding-inline:.75rem}.episode-card{grid-template-columns:1rem 6rem 1fr}.player-bottom{left:.45rem;right:.45rem}.player-control-button,.player-subtitle-control{width:1.85rem;height:1.85rem}.player-control-button>svg{width:1.5rem;height:1.5rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s}from"./storage-D1zF0J_t.js";var c=75e3;function l(e,t){switch(t.type){case`set-paused`:case`seek-relative`:case`seek-to`:case`set-muted`:case`set-volume`:return!0;case`previous-track`:case`next-track`:case`switch-track`:case`switch-playlist`:return e.service===`spotify`;case`next-episode`:case`select-episode`:case`switch-title`:case`set-captions`:case`set-subtitle-font-size`:case`set-subtitle-font-color`:case`set-subtitle-background`:case`reset-subtitle-position`:return e.service!==`spotify`}}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e){return typeof e==`string`&&e.trim().length>0}function f(e){return typeof e==`number`&&Number.isFinite(e)}function p(e){return f(e)&&e>=0}function m(e){return Number.isInteger(e)&&typeof e==`number`&&e>0}function h(e){return f(e)&&e>=0&&e<=1}function ee(e){return u(e)&&m(e.season)&&m(e.number)&&d(e.title)}function g(e){return u(e)&&typeof e.available==`boolean`&&typeof e.captionsOn==`boolean`&&f(e.fontSize)&&e.fontSize>=18&&e.fontSize<=64&&d(e.fontColor)&&d(e.backgroundColor)}function _(e){return u(e)&&d(e.sessionId)&&d(e.profileId)&&d(e.titleId)&&d(e.title)&&d(e.artwork)&&p(e.currentTime)&&p(e.duration)&&typeof e.paused==`boolean`&&typeof e.muted==`boolean`&&h(e.volume)&&p(e.updatedAt)?e.service===`spotify`?d(e.artist)&&d(e.album)&&(e.provider===void 0||d(e.provider)):(e.service===void 0||e.service===`netflix`)&&m(e.seasonNumber)&&m(e.episodeNumber)&&d(e.episodeTitle)&&Array.isArray(e.episodes)&&e.episodes.every(ee)&&g(e.subtitles):!1}function v(e){if(!u(e)||typeof e.type!=`string`)return!1;switch(e.type){case`set-paused`:return typeof e.paused==`boolean`;case`seek-relative`:return f(e.seconds);case`seek-to`:return p(e.seconds);case`set-muted`:return typeof e.muted==`boolean`;case`set-volume`:return h(e.volume);case`previous-track`:case`next-track`:case`next-episode`:case`reset-subtitle-position`:return!0;case`select-episode`:return m(e.episodeNumber);case`switch-track`:return d(e.trackId);case`switch-playlist`:return d(e.playlistId);case`switch-title`:return d(e.titleId);case`set-captions`:return typeof e.enabled==`boolean`;case`set-subtitle-font-size`:return f(e.fontSize)&&e.fontSize>=18&&e.fontSize<=64;case`set-subtitle-font-color`:return d(e.color);case`set-subtitle-background`:return d(e.background);default:return!1}}function y(e){if(!u(e)||typeof e.kind!=`string`)return!1;switch(e.kind){case`announce`:return _(e.activity);case`command`:return d(e.sessionId)&&v(e.command);default:return!1}}function b(e){try{return y(e)}catch{return!1}}function x(e){return e??a().id}function S(t){return e(x(t))}function C(e){return{titleId:e.title_id,seasonNumber:e.season_number,episodeNumber:e.episode_number,positionSeconds:e.position_seconds,durationSeconds:e.duration_seconds,completed:!!e.completed,updatedAt:e.updated_at}}function w(){return i()}function T(e){return n(e)??void 0}function E(){return a()}function D(e){return o(e)}function te(e,t){return s(e,t)}function ne(e,n){return t(e,n)}function re(e){r(e)}var ie={fontSize:32,positionX:50,positionY:78,fontColor:`#ffffff`,backgroundColor:`rgba(0,0,0,0.75)`,fontFamily:`default`,captionsOn:!1,updatedAt:new Date().toISOString()};function ae(e){return e?{fontSize:e.font_size,positionX:e.position_x,positionY:e.position_y,fontColor:e.font_color,backgroundColor:e.background_color,fontFamily:e.font_family,captionsOn:!!e.captions_on,updatedAt:e.updated_at}:{...ie}}function O(e){return ae(S(e).prepare(`SELECT profile_id, font_size, position_x, position_y,
|
|
2
|
-
font_color, background_color, font_family, captions_on,
|
|
3
|
-
updated_at
|
|
4
|
-
FROM netflix_subtitle_preferences WHERE profile_id = ?`).get(e))}function k(e,t){if(!T(e))throw Error(`Profile not found.`);let n=O(e),r=t.fontSize??n.fontSize,i=t.positionX??n.positionX,a=t.positionY??n.positionY,o=t.fontColor??n.fontColor,s=t.backgroundColor??n.backgroundColor,c=t.fontFamily??n.fontFamily,l=t.captionsOn??n.captionsOn,u=new Date().toISOString();return S(e).prepare(`INSERT INTO netflix_subtitle_preferences (
|
|
5
|
-
profile_id, font_size, position_x, position_y,
|
|
6
|
-
font_color, background_color, font_family, captions_on, updated_at
|
|
7
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
8
|
-
ON CONFLICT(profile_id) DO UPDATE SET
|
|
9
|
-
font_size = excluded.font_size,
|
|
10
|
-
position_x = excluded.position_x,
|
|
11
|
-
position_y = excluded.position_y,
|
|
12
|
-
font_color = excluded.font_color,
|
|
13
|
-
background_color = excluded.background_color,
|
|
14
|
-
font_family = excluded.font_family,
|
|
15
|
-
captions_on = excluded.captions_on,
|
|
16
|
-
updated_at = excluded.updated_at`).run(e,r,i,a,o,s,c,Number(l),u),{fontSize:r,positionX:i,positionY:a,fontColor:o,backgroundColor:s,fontFamily:c,captionsOn:l,updatedAt:u}}function A(e){if(!T(e))throw Error(`Profile not found.`);let t=S(e),n=t.prepare(`SELECT title_id, in_my_list, liked
|
|
17
|
-
FROM netflix_profile_title_state WHERE profile_id = ?`).all(e),r=t.prepare(`SELECT title_id, season_number, episode_number, position_seconds,
|
|
18
|
-
duration_seconds, completed, updated_at
|
|
19
|
-
FROM netflix_watch_progress
|
|
20
|
-
WHERE profile_id = ?
|
|
21
|
-
ORDER BY updated_at DESC`).all(e).map(C);return{myList:n.filter(e=>e.in_my_list).map(e=>e.title_id),likedTitles:n.filter(e=>e.liked).map(e=>e.title_id),progress:r,subtitlePreferences:O(e)}}function j(e,t,n){if(!T(e))throw Error(`Profile not found.`);let r=S(e),i=r.prepare(`SELECT in_my_list, liked FROM netflix_profile_title_state
|
|
22
|
-
WHERE profile_id = ? AND title_id = ?`).get(e,t),a=n.inMyList===void 0?!!i?.in_my_list:n.inMyList,o=n.liked===void 0?!!i?.liked:n.liked;return!a&&!o?r.prepare(`DELETE FROM netflix_profile_title_state
|
|
23
|
-
WHERE profile_id = ? AND title_id = ?`).run(e,t):r.prepare(`INSERT INTO netflix_profile_title_state (
|
|
24
|
-
profile_id, title_id, in_my_list, liked, updated_at
|
|
25
|
-
) VALUES (?, ?, ?, ?, ?)
|
|
26
|
-
ON CONFLICT(profile_id, title_id) DO UPDATE SET
|
|
27
|
-
in_my_list = excluded.in_my_list,
|
|
28
|
-
liked = excluded.liked,
|
|
29
|
-
updated_at = excluded.updated_at`).run(e,t,Number(a),Number(o),new Date().toISOString()),A(e)}function M(e,t){if(!T(e))throw Error(`Profile not found.`);let n=Math.max(0,t.positionSeconds),r=Math.max(0,t.durationSeconds),i=!!t.completed||r>0&&n/r>=.95,a=new Date().toISOString();return S(e).prepare(`INSERT INTO netflix_watch_progress (
|
|
30
|
-
profile_id, title_id, season_number, episode_number,
|
|
31
|
-
position_seconds, duration_seconds, completed, updated_at
|
|
32
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
33
|
-
ON CONFLICT(profile_id, title_id) DO UPDATE SET
|
|
34
|
-
season_number = excluded.season_number,
|
|
35
|
-
episode_number = excluded.episode_number,
|
|
36
|
-
position_seconds = excluded.position_seconds,
|
|
37
|
-
duration_seconds = excluded.duration_seconds,
|
|
38
|
-
completed = excluded.completed,
|
|
39
|
-
updated_at = excluded.updated_at`).run(e,t.titleId,t.seasonNumber,t.episodeNumber,n,r,Number(i),a),{titleId:t.titleId,seasonNumber:t.seasonNumber,episodeNumber:t.episodeNumber,positionSeconds:n,durationSeconds:r,completed:i,updatedAt:a}}var N=10*6e4,P=100;function F(e=Date.now()){if(!Number.isFinite(e))throw Error(`Playback activity timestamp is invalid.`);return Math.max(0,Math.floor(e))}function I(e,t,n=128){if(!e||e!==e.trim()||e.length>n)throw Error(`${t} is invalid.`)}function L(e){try{let t={kind:`announce`,activity:{...JSON.parse(e.snapshot_json),sessionId:e.session_id,updatedAt:e.updated_at_ms}};return b(t)&&t.kind===`announce`?t.activity:void 0}catch{return}}function R(e){try{let t={kind:`command`,sessionId:e.session_id,command:JSON.parse(e.command_json)};return b(t)&&t.kind===`command`?{id:e.id,sessionId:e.session_id,command:t.command,createdAt:e.created_at_ms}:void 0}catch{return}}function z(e,t){if(t)return t;for(let t of w())if(S(t.id).prepare(`SELECT 1 FROM playback_activity_sessions
|
|
40
|
-
WHERE session_id = ?`).get(e))return t.id}function B(e=Date.now(),t){let n=S(x(t)),r=F(e),i=r-c,a=r-N;return n.transaction(()=>{let e=n.prepare(`DELETE FROM playback_activity_commands
|
|
41
|
-
WHERE created_at_ms < ?`).run(a).changes;return{staleSessions:n.prepare(`DELETE FROM playback_activity_sessions
|
|
42
|
-
WHERE updated_at_ms < ?`).run(i).changes,oldCommands:e}})()}function V(e,t=Date.now()){let n={kind:`announce`,activity:e};if(!b(n)||n.kind!==`announce`)throw Error(`Playback activity is invalid.`);if(I(e.sessionId,`Session ID`),I(e.profileId,`Profile ID`),I(e.titleId,`Title ID`,256),!T(e.profileId))throw Error(`Profile not found.`);let r=F(t),i={...e,updatedAt:r};return B(r,e.profileId),S(e.profileId).prepare(`INSERT INTO playback_activity_sessions (
|
|
43
|
-
session_id, profile_id, title_id, snapshot_json, updated_at_ms
|
|
44
|
-
) VALUES (?, ?, ?, ?, ?)
|
|
45
|
-
ON CONFLICT(session_id) DO UPDATE SET
|
|
46
|
-
profile_id = excluded.profile_id,
|
|
47
|
-
title_id = excluded.title_id,
|
|
48
|
-
snapshot_json = excluded.snapshot_json,
|
|
49
|
-
updated_at_ms = excluded.updated_at_ms`).run(i.sessionId,i.profileId,i.titleId,JSON.stringify(i),r),i}function H(e,t=Date.now()){e!==void 0&&I(e,`Profile ID`);let n=x(e),r=S(n),i=F(t);B(i,n);let a=i-c,o=e?r.prepare(`SELECT session_id, snapshot_json, updated_at_ms
|
|
50
|
-
FROM playback_activity_sessions
|
|
51
|
-
WHERE profile_id = ? AND updated_at_ms >= ?
|
|
52
|
-
ORDER BY updated_at_ms DESC, session_id`).all(e,a):r.prepare(`SELECT session_id, snapshot_json, updated_at_ms
|
|
53
|
-
FROM playback_activity_sessions
|
|
54
|
-
WHERE updated_at_ms >= ?
|
|
55
|
-
ORDER BY updated_at_ms DESC, session_id`).all(a),s=[];for(let e of o){let t=L(e);t&&s.push(t)}return s}function U(e,t){I(e,`Session ID`),t!==void 0&&I(t,`Profile ID`);let n=z(e,t);return n?!!S(n).prepare(`DELETE FROM playback_activity_sessions
|
|
56
|
-
WHERE session_id = ?`).run(e).changes:!1}function W(e,t,n=Date.now(),r){let i={kind:`command`,sessionId:e,command:t};if(!b(i)||i.kind!==`command`)throw Error(`Playback command is invalid.`);I(e,`Session ID`),r!==void 0&&I(r,`Profile ID`);let a=z(e,r);if(!a)throw Error(`Playback session not found.`);let o=F(n);B(o,a);let s=S(a);return s.transaction(()=>{let n=s.prepare(`SELECT session_id, snapshot_json, updated_at_ms
|
|
57
|
-
FROM playback_activity_sessions
|
|
58
|
-
WHERE session_id = ?`).get(e);if(!n)throw Error(`Playback session not found.`);let r=L(n);if(!r)throw Error(`Playback session is invalid.`);if(!l(r,t))throw Error(`Playback command is not supported for this session.`);let i=s.prepare(`INSERT INTO playback_activity_commands (
|
|
59
|
-
session_id, command_json, created_at_ms
|
|
60
|
-
) VALUES (?, ?, ?)`).run(e,JSON.stringify(t),o);return{id:Number(i.lastInsertRowid),sessionId:e,command:t,createdAt:o}})()}function oe(e,t,n=Date.now(),r){if(I(e,`Session ID`),r!==void 0&&I(r,`Profile ID`),!Number.isSafeInteger(t)||t<0)throw Error(`The command cursor must be a non-negative numeric ID.`);let i=z(e,r);if(!i)throw Error(`Playback session not found.`);B(F(n),i);let a=S(i);if(!a.prepare(`SELECT session_id FROM playback_activity_sessions
|
|
61
|
-
WHERE session_id = ?`).get(e))throw Error(`Playback session not found.`);let o=a.prepare(`SELECT id, session_id, command_json, created_at_ms
|
|
62
|
-
FROM playback_activity_commands
|
|
63
|
-
WHERE session_id = ? AND id > ?
|
|
64
|
-
ORDER BY id
|
|
65
|
-
LIMIT ?`).all(e,t,P),s=[];for(let e of o){let t=R(e);t&&s.push(t)}return{commands:s,cursor:o.length?o[o.length-1].id:t}}function G(e){return S(e).prepare(`SELECT id, name, base_url, last_synced_at, sync_status, last_error
|
|
66
|
-
FROM netflix_providers ORDER BY rowid`).all().map(e=>({id:e.id,name:String(e.name),baseUrl:String(e.base_url),lastSyncedAt:e.last_synced_at??null,syncStatus:e.sync_status,lastError:e.last_error??null}))}function K(e,t,n,r){S(r).prepare(`UPDATE netflix_providers
|
|
67
|
-
SET sync_status = ?, last_error = ?,
|
|
68
|
-
last_synced_at = CASE WHEN ? = 'idle' THEN ? ELSE last_synced_at END
|
|
69
|
-
WHERE id = ?`).run(t,n??null,t,new Date().toISOString(),e)}function q(e){try{let t=JSON.parse(e||`[]`);return Array.isArray(t)?t:[]}catch{return[]}}function J(e){try{let t=JSON.parse(e||`[]`);return Array.isArray(t)?t:[]}catch{return[]}}function se(e,t){let n=q(e);return t?.length?n.length?t.map(e=>{let t=n.find(t=>t.id===e.id||t.episode===e.episode);if(!t)return e;let r=t.id===e.id&&t.watchUrl===e.watchUrl;return{...e,title:t.title||e.title,duration:t.duration||e.duration,synopsis:t.synopsis||e.synopsis,image:t.image||e.image,subtitles:e.subtitles?.length?e.subtitles:r?t.subtitles:void 0}}):t:n}function ce(e,t=`metadata`,n){let r=x(n),i=new Date().toISOString(),a=X(e.sourceUrl,r),o=se(a?.episodes,e.episodes),s=e.subtitles?.length?e.subtitles:a&&a.watch_url===e.watchUrl?J(a.subtitles):[];return S(r).prepare(`INSERT INTO netflix_movies (
|
|
70
|
-
id, provider_id, source_url, watch_url, title, original_title, synopsis,
|
|
71
|
-
year, maturity_rating, duration, match_score, genres, cast, director,
|
|
72
|
-
subtitles, episodes, media_type, poster_image, backdrop_image,
|
|
73
|
-
accent_color, download_status, download_progress, created_at, updated_at
|
|
74
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
75
|
-
ON CONFLICT(source_url) DO UPDATE SET
|
|
76
|
-
watch_url = excluded.watch_url,
|
|
77
|
-
title = excluded.title,
|
|
78
|
-
original_title = excluded.original_title,
|
|
79
|
-
synopsis = excluded.synopsis,
|
|
80
|
-
year = excluded.year,
|
|
81
|
-
maturity_rating = excluded.maturity_rating,
|
|
82
|
-
duration = excluded.duration,
|
|
83
|
-
match_score = excluded.match_score,
|
|
84
|
-
genres = excluded.genres,
|
|
85
|
-
cast = excluded.cast,
|
|
86
|
-
director = excluded.director,
|
|
87
|
-
subtitles = excluded.subtitles,
|
|
88
|
-
episodes = excluded.episodes,
|
|
89
|
-
media_type = excluded.media_type,
|
|
90
|
-
poster_image = excluded.poster_image,
|
|
91
|
-
backdrop_image = excluded.backdrop_image,
|
|
92
|
-
accent_color = excluded.accent_color,
|
|
93
|
-
download_status = CASE
|
|
94
|
-
WHEN netflix_movies.download_status IN ('ready', 'queued', 'downloading')
|
|
95
|
-
THEN netflix_movies.download_status
|
|
96
|
-
ELSE excluded.download_status
|
|
97
|
-
END,
|
|
98
|
-
updated_at = excluded.updated_at`).run(e.id,e.providerId,e.sourceUrl,e.watchUrl??null,e.title,e.originalTitle??null,e.synopsis,e.year,e.maturityRating,e.duration,e.match,JSON.stringify(e.genres),JSON.stringify(e.cast),e.director??null,JSON.stringify(s),JSON.stringify(o),e.mediaType,e.posterImage,e.backdropImage,e.accentColor,t,0,i,i),Y(e.id,r)??X(e.sourceUrl,r)}function le(e,t,n){let r=S(n);r.transaction(()=>{let n=r.prepare(`SELECT episodes, subtitles FROM netflix_movies WHERE id = ?`).get(e);if(!n)return;let i=q(n.episodes);if(t.episode){let e=i.findIndex(e=>e.id===t.episode.id||e.episode===t.episode.episode);e>=0?i[e]={...i[e],...t.episode}:i.push(t.episode)}r.prepare(`UPDATE netflix_movies
|
|
99
|
-
SET episodes = ?, subtitles = ?
|
|
100
|
-
WHERE id = ?`).run(JSON.stringify(i),JSON.stringify(t.subtitles??J(n.subtitles)),e)})()}function ue(e,t,n){S(n).prepare(`UPDATE netflix_movies SET
|
|
101
|
-
download_status = ?,
|
|
102
|
-
download_progress = COALESCE(?, download_progress),
|
|
103
|
-
download_error = ?,
|
|
104
|
-
playback_path = COALESCE(?, playback_path),
|
|
105
|
-
playback_kind = COALESCE(?, playback_kind),
|
|
106
|
-
updated_at = ?
|
|
107
|
-
WHERE id = ?`).run(t.status,t.progress??null,t.error??null,t.playbackPath??null,t.playbackKind??null,new Date().toISOString(),e)}function Y(e,t){return S(t).prepare(`SELECT * FROM netflix_movies WHERE id = ?`).get(e)}function X(e,t){return S(t).prepare(`SELECT * FROM netflix_movies WHERE source_url = ?`).get(e)}function Z(e){try{return JSON.parse(e)}catch{return[]}}function Q(e){try{return JSON.parse(e)}catch{return[]}}function de(e){try{return JSON.parse(e)}catch{return[]}}function $(e){return{id:e.id,title:e.title,originalTitle:e.original_title??void 0,synopsis:e.synopsis,year:e.year,maturityRating:e.maturity_rating,duration:e.duration,match:e.match_score,genres:Z(e.genres),cast:Z(e.cast),subtitles:de(e.subtitles),episodes:Q(e.episodes),director:e.director??void 0,mediaType:e.media_type===`series`?`series`:`movie`,isHD:!0,isNew:!0,posterImage:e.poster_image,backdropImage:e.backdrop_image,accentColor:e.accent_color,sourceProvider:e.provider_id,sourceUrl:e.source_url,downloadStatus:e.download_status,downloadProgress:e.download_progress,downloadError:e.download_error??void 0,canStream:!!e.watch_url,playbackPath:e.playback_path??void 0,playbackKind:e.playback_kind}}function fe(e){return S(e).prepare(`SELECT * FROM netflix_movies ORDER BY updated_at DESC LIMIT 160`).all().map($)}function pe(e){return{titleId:e.title_id,markerType:e.marker_type,timeSeconds:e.time_seconds,updatedAt:e.updated_at}}function me(e,t){return S(t).prepare(`SELECT title_id, marker_type, time_seconds, updated_at
|
|
108
|
-
FROM netflix_title_markers WHERE title_id = ?`).all(e).map(pe)}function he(e,t,n,r){if(!e)throw Error(`Title ID is required.`);if(t!==`intro`&&t!==`outro`)throw Error(`Marker type must be 'intro' or 'outro'.`);if(!Number.isFinite(n)||n<0)throw Error(`Time must be a non-negative number.`);let i=new Date().toISOString();return S(r).prepare(`INSERT INTO netflix_title_markers (
|
|
109
|
-
title_id, marker_type, time_seconds, updated_at
|
|
110
|
-
) VALUES (?, ?, ?, ?)
|
|
111
|
-
ON CONFLICT(title_id, marker_type) DO UPDATE SET
|
|
112
|
-
time_seconds = excluded.time_seconds,
|
|
113
|
-
updated_at = excluded.updated_at`).run(e,t,n,i),{titleId:e,markerType:t,timeSeconds:n,updatedAt:i}}function ge(e,t,n){return!!S(n).prepare(`DELETE FROM netflix_title_markers
|
|
114
|
-
WHERE title_id = ? AND marker_type = ?`).run(e,t).changes}export{ue as C,b as D,V as E,K as S,ce as T,k as _,U as a,D as b,Y as c,me as d,fe as f,$ as g,oe as h,ge as i,A as l,w as m,te as n,W as o,H as p,re as r,E as s,le as t,G as u,he as v,ne as w,j as x,M as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./framework~index~layout~layout~page~page~page~layout~page~app-page-cache-render~app-page-cac~nvd6h53m-ydvR7YSg.js";import{P as t}from"../../index.js";import{f as n,l as r,m as i,s as a,u as o}from"./database-BNnYfHmT.js";import{n as s,r as c}from"./catalog-BS93IoWO.js";var l=t(()=>{throw Error(`Unexpectedly client reference export 'NetflixBrowser' is called on server`)},`278c117307e7`,`NetflixBrowser`),u=e();function d({initialSearchOpen:e=!1,initialSearchQuery:t=``}){let d=a();return(0,u.jsx)(l,{featured:c,rows:s,initialImportedTitles:n(d.id),initialProviders:o(d.id),initialProfiles:i(),initialActiveProfile:d,initialProfileLibrary:r(d.id),initialSearchOpen:e,initialSearchQuery:t})}export{d as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{f as t,u as n}from"./database-BNnYfHmT.js";import{t as r}from"./request-profile-B1yGQ0l6.js";var i=`nodejs`,a=`force-dynamic`;function o(i){let a=r(i);return e.json({providers:n(a),titles:t(a)})}export{o as GET,a as dynamic,i as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{t}from"./request-profile-B1yGQ0l6.js";import{g as n}from"./db-BE1J0NNS.js";var r=`nodejs`,i=`force-dynamic`;function a(r){let i=t(r);return e.json({playlists:n(i)},{headers:{"cache-control":`no-store`}})}export{a as GET,i as dynamic,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{t}from"./request-profile-B1yGQ0l6.js";import{y as n}from"./db-BE1J0NNS.js";var r=`nodejs`,i=`force-dynamic`;function a(r){let i=t(r);return e.json({tracks:n(i)},{headers:{"cache-control":`no-store`}})}export{a as GET,i as dynamic,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{m as t,n,s as r}from"./database-BNnYfHmT.js";var i=`nodejs`,a=`force-dynamic`;function o(e){let t=e,n=typeof t?.name==`string`?t.name.trim():``,r=typeof t?.avatarColor==`string`?t.avatarColor.trim():``;if(!n||n.length>30)throw Error(`Profile name must be between 1 and 30 characters.`);if(!/^#[0-9a-f]{6}$/i.test(r))throw Error(`Choose a valid avatar color.`);return{name:n,avatarColor:r}}function s(){return e.json({profiles:t(),activeProfile:r()})}async function c(i){try{let a=o(await i.json()),s=n(a.name,a.avatarColor);return e.json({profile:s,profiles:t(),activeProfile:r()},{status:201})}catch(t){let n=t instanceof Error?t.message:`Profile could not be created.`,r=/unique/i.test(n);return e.json({error:r?`A profile with that name already exists.`:n},{status:r?409:400})}}export{s as GET,c as POST,a as dynamic,i as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{t}from"./request-profile-B1yGQ0l6.js";import{h as n}from"./db-BE1J0NNS.js";var r=`nodejs`,i=`force-dynamic`;function a(r){let i=t(r);return e.json({downloads:n(100,i)},{headers:{"cache-control":`no-store`}})}export{a as GET,i as dynamic,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{t}from"./request-profile-B1yGQ0l6.js";import{t as n}from"./streamer-B1PRR-dj.js";var r=`nodejs`,i=`force-dynamic`,a=60;async function o(r,i){try{let{id:a}=await i.params,o=Number(new URL(r.url).searchParams.get(`episode`)||0),s=t(r);return e.json(await n(a,Number.isInteger(o)&&o>0?o:void 0,s))}catch(t){return e.json({error:t instanceof Error?t.message:`The stream could not be started.`},{status:502})}}export{o as GET,i as dynamic,a as maxDuration,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{b as t,l as n}from"./database-BNnYfHmT.js";var r=`nodejs`,i=`force-dynamic`;async function a(r,i){try{let{id:r}=await i.params,a=t(r);return e.json({activeProfile:a,library:n(r)})}catch(t){return e.json({error:t instanceof Error?t.message:`Profile could not be selected.`},{status:404})}}export{a as POST,i as dynamic,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{t}from"./request-profile-B1yGQ0l6.js";import{_ as n}from"./db-BE1J0NNS.js";var r=`nodejs`,i=`force-dynamic`;function a(r){let i=t(r);return e.json({providers:n(i)},{headers:{"cache-control":`no-store`}})}export{a as GET,i as dynamic,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{l as t,x as n}from"./database-BNnYfHmT.js";var r=`nodejs`,i=`force-dynamic`;async function a(n,r){try{let{id:n}=await r.params;return e.json(t(n))}catch(t){return e.json({error:t instanceof Error?t.message:`Profile library is unavailable.`},{status:404})}}async function o(t,r){try{let{id:i}=await r.params,a=await t.json(),o=typeof a.titleId==`string`?a.titleId.trim():``;if(!o)throw Error(`A title is required.`);if(a.inMyList!==void 0&&typeof a.inMyList!=`boolean`)throw Error(`My List state must be true or false.`);if(a.liked!==void 0&&typeof a.liked!=`boolean`)throw Error(`Rating state must be true or false.`);return e.json(n(i,o,{inMyList:typeof a.inMyList==`boolean`?a.inMyList:void 0,liked:typeof a.liked==`boolean`?a.liked:void 0}))}catch(t){let n=t instanceof Error?t.message:`Title state could not be saved.`;return e.json({error:n},{status:n===`Profile not found.`?404:400})}}export{a as GET,o as PATCH,i as dynamic,r as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{S as t,T as n}from"./database-BNnYfHmT.js";import{o as r,t as i}from"./providers-B3YELr_F.js";import{t as a}from"./request-profile-B1yGQ0l6.js";var o=`nodejs`,s=60;async function c(o,s){let{providerId:c}=await s.params,l=i.find(e=>e.id===c);if(!l)return e.json({error:`Unknown provider.`},{status:404});let u=l.id,d=a(o);t(u,`syncing`,void 0,d);try{let i=await r(u);for(let e of i)n(e,`metadata`,d);return t(u,`idle`,void 0,d),e.json({count:i.length})}catch(n){let r=n instanceof Error?n.message:`Provider sync failed.`;return t(u,`error`,r,d),e.json({error:r},{status:502})}}export{c as POST,s as maxDuration,o as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{f as t,l as n}from"./database-BNnYfHmT.js";import{t as r}from"./catalog-BS93IoWO.js";import{c as i,l as a,s as o}from"./providers-B3YELr_F.js";import{n as s,t as c}from"./title-progress-CQBrSxvN.js";var l=`nodejs`,u=`force-dynamic`,d=60,f={"cache-control":`no-store`},p=class extends Error{};function m(e){let t=e.searchParams.get(`profileId`)?.trim()??``;if(!t||t.length>128)throw Error(`A valid profile ID is required.`);return t}function h(e){return e===`Profile not found.`?404:400}async function g(l){try{let u=new URL(l.url),d=m(u),h=u.searchParams.get(`q`)?.trim()??``;if(h.length>120)throw Error(`Search query is too long.`);let g=n(d),_=new Map(g.progress.map(e=>[e.titleId,e]));if(!h){let t=[];for(let e of g.progress){let n=s(e.titleId,d);if(n&&(t.push(c(n,e)),t.length===12))break}return e.json({titles:t,mode:`recent`,failedProviders:[]},{headers:f})}let v=[...r,...t(d)].filter(e=>a(e,h)),y=i(v),b=[];if(h.length>=2){let e;try{e=await o(h)}catch(e){throw new p(e instanceof Error?e.message:`Provider search failed.`)}y=i([...v,...e.titles]),b=e.failedProviders}return e.json({titles:y.map(e=>c(e,_.get(e.id))),mode:`search`,failedProviders:b},{headers:f})}catch(t){let n=t instanceof Error?t.message:`Activity titles could not be loaded.`;return e.json({error:n},{status:t instanceof p?502:h(n),headers:f})}}export{g as GET,u as dynamic,d as maxDuration,l as runtime};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./server-CS40XqUP.js";import{s as t}from"./providers-B3YELr_F.js";var n=`nodejs`,r=`force-dynamic`,i=60;async function a(n){let r=new URL(n.url).searchParams.get(`q`)?.trim()??``;if(r.length<2)return e.json({titles:[],failedProviders:[]});if(r.length>120)return e.json({error:`Search query is too long.`},{status:400});try{return e.json(await t(r))}catch(t){let n=t instanceof Error?t.message:`Provider search failed.`;return e.json({error:n},{status:502})}}export{a as GET,r as dynamic,i as maxDuration,n as runtime};
|