/* ==========================================================================
   Netflix-style theme overlay
   Loaded last (after style.css and any per-page @push('css') blocks) so it
   wins the cascade on equal-specificity selectors without needing !important
   everywhere. Recolors + restyles the existing template markup; does not
   change page structure except where noted in the blade files themselves.
   ========================================================================== */

:root{
	--nf-black:#141414;
	--nf-black-2:#181818;
	--nf-black-3:#0b0b0b;
	--nf-red:#e50914;
	--nf-red-dark:#b20710;
	--nf-gray:#808080;
	--nf-gray-light:#b3b3b3;
	--nf-white:#f5f5f5;
	--nf-border:rgba(255,255,255,0.08);
}

/* Netflix Sans is proprietary; Inter is the closest free grotesque. The
   legacy theme hardcodes Dosis/Nunito on ~90 selectors, hence the sweep.
   Icon glyphs live on ::before pseudo-elements with their own font-family,
   so they are untouched by this. */
body, button, input, select, textarea, optgroup,
h1, h2, h3, h4, h5, h6, p, a, span, li, td, th, label, div{
	font-family:var(--nf-font) !important;
}

:root{ --nf-font:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; }

html, body{
	background:var(--nf-black) !important;
	color:var(--nf-white);
	-webkit-font-smoothing:antialiased;
	-moz-osx-font-smoothing:grayscale;
	letter-spacing:-0.01em;
}

h1, h2, h3, h4, h5, h6, .title-hd h2, .bd-hd{
	letter-spacing:-0.02em;
	text-transform:none !important;
}

a{ color:var(--nf-white); }
a:hover, a:focus{ color:var(--nf-red); text-decoration:none; }

::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:var(--nf-black); }
::-webkit-scrollbar-thumb{ background:#3a3a3a; border-radius:6px; }
::-webkit-scrollbar-thumb:hover{ background:var(--nf-red); }

#preloader{ background:var(--nf-black) !important; }

/* ---------------------------------------------------------------------- */
/* Full-bleed layout: the legacy theme wraps everything in a boxed,
   centered Bootstrap .container (~1170px max). Netflix rows/header/footer
   run edge-to-edge with a percentage gutter instead — stretch it. */
/* ---------------------------------------------------------------------- */
.container{
	width:100% !important;
	max-width:100% !important;
	padding-left:4% !important;
	padding-right:4% !important;
	box-sizing:border-box;
}

/* ---------------------------------------------------------------------- */
/* Desktop header — logo + nav inline, icon search, avatar dropdown        */
/* ---------------------------------------------------------------------- */
.nf-header{
	background:linear-gradient(180deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.6) 60%, transparent 100%);
	position:sticky;
	top:0;
	z-index:500;
	width:100%;
	border-bottom:1px solid transparent;
	transition:background .3s ease, border-color .3s ease;
}
.nf-header.is-scrolled{
	background:var(--nf-black-3);
	border-bottom-color:var(--nf-border);
}
.nf-header-inner{
	display:flex;
	align-items:center;
	justify-content:space-between;
	gap:32px;
	padding:14px 4%;
}
.nf-header-left{
	display:flex;
	align-items:center;
	gap:36px;
	min-width:0;
}
.nf-logo img{ height:34px; width:34px; object-fit:contain; display:block; }
.nf-nav{ display:flex; align-items:center; gap:22px; }
.nf-nav a{
	color:var(--nf-gray-light);
	font-size:14px;
	font-weight:600;
	letter-spacing:.2px;
	white-space:nowrap;
	transition:color .2s ease;
}
.nf-nav a:hover{ color:var(--nf-white); }

.nf-header-right{ display:flex; align-items:center; gap:20px; flex-shrink:0; }

.nf-search{ display:flex; align-items:center; }
.nf-search-toggle{
	background:none;
	border:none;
	color:#fff;
	font-size:19px;
	cursor:pointer;
	width:34px;
	height:34px;
	display:flex;
	align-items:center;
	justify-content:center;
	flex-shrink:0;
}
.nf-search-input{
	width:0;
	opacity:0;
	padding:0;
	margin-left:0;
	border:1px solid transparent;
	background:rgba(0,0,0,.85);
	color:#fff;
	border-radius:4px;
	font-size:14px;
	overflow:hidden;
	transition:width .25s ease, opacity .2s ease, padding .25s ease, margin .25s ease, border-color .2s ease;
}
.nf-search.active .nf-search-input{
	width:220px;
	opacity:1;
	padding:8px 12px;
	margin-left:8px;
	border-color:var(--nf-border);
}
.nf-search-input::placeholder{ color:var(--nf-gray); }
.nf-search-input:focus{ border-color:var(--nf-white); }

.nf-profile{ position:relative; }
.nf-profile-toggle{
	display:flex;
	align-items:center;
	gap:6px;
	background:none;
	border:none;
	cursor:pointer;
	padding:2px;
}
.nf-avatar{
	width:32px;
	height:32px;
	border-radius:4px;
	background:var(--nf-red);
	display:flex;
	align-items:center;
	justify-content:center;
	color:#fff;
	font-size:16px;
}
.nf-caret{ color:#fff; font-size:11px; transition:transform .2s ease; }
.nf-profile.active .nf-caret{ transform:rotate(180deg); }
.nf-profile-dropdown{
	position:absolute;
	top:calc(100% + 18px);
	right:0;
	background:rgba(10,10,10,.95);
	border:1px solid var(--nf-border);
	border-radius:4px;
	min-width:220px;
	padding:8px 0;
	opacity:0;
	visibility:hidden;
	transform:translateY(-8px);
	transition:opacity .2s ease, transform .2s ease, visibility .2s ease;
	z-index:600;
}
.nf-profile.active .nf-profile-dropdown{ opacity:1; visibility:visible; transform:translateY(0); }
.nf-profile-dropdown a{
	display:flex;
	align-items:center;
	gap:10px;
	padding:10px 18px;
	color:var(--nf-white) !important;
	font-size:13px;
	white-space:nowrap;
}
.nf-profile-dropdown a:hover{ color:var(--nf-red) !important; background:rgba(255,255,255,.06); }
.nf-dropdown-divider{ height:1px; background:var(--nf-border); margin:6px 0; }

/* ---------------------------------------------------------------------- */
/* Hero / backdrop banners                                                */
/* ---------------------------------------------------------------------- */
.hero:not(.nf-hero), .common-hero, .mv-single-hero{
	background:linear-gradient(180deg, rgba(20,20,20,0) 0%, var(--nf-black) 100%), var(--nf-black-2) !important;
}
.hero.nf-hero{
	position:relative;
	min-height:56vh;
	display:flex !important;
	align-items:flex-end !important;
	justify-content:flex-start !important;
	text-align:left !important;
	background-image:var(--hero-bg, none) !important;
	background-color:var(--nf-black-2);
	background-size:cover !important;
	background-position:center top !important;
	overflow:hidden;
}
.hero.nf-hero .container{ text-align:left; }

/* Rotating hero: slides stack, only .is-active is visible */
.nf-hero-rotator{ position:relative; }
.nf-hero-rotator .nf-hero-slide{ display:none !important; }
.nf-hero-rotator .nf-hero-slide.is-active{
	display:flex !important;
	animation:nfHeroFade .6s ease;
}
@keyframes nfHeroFade{ from{ opacity:0; } to{ opacity:1; } }

.nf-hero-dots{
	position:absolute;
	right:4%;
	bottom:22px;
	display:flex;
	gap:8px;
	z-index:5;
}
.nf-hero-dots button{
	width:9px;
	height:9px;
	padding:0;
	border:none;
	border-radius:50%;
	background:rgba(255,255,255,.4);
	cursor:pointer;
	transition:background .2s ease, transform .2s ease;
}
.nf-hero-dots button:hover{ background:rgba(255,255,255,.7); }
.nf-hero-dots button.is-active{ background:var(--nf-red); transform:scale(1.25); }
.hero.nf-hero::before{
	content:'';
	position:absolute;
	inset:0;
	background:
		linear-gradient(90deg, rgba(20,20,20,.95) 0%, rgba(20,20,20,.55) 42%, rgba(20,20,20,.15) 70%, rgba(20,20,20,0) 100%),
		linear-gradient(0deg, var(--nf-black) 0%, rgba(20,20,20,0) 35%, rgba(20,20,20,.15) 100%);
}
.hero.nf-hero .nf-hero-content{
	position:relative;
	z-index:2;
	padding:60px 0 48px;
	max-width:640px;
}
.hero.nf-hero .nf-hero-content h1{
	font-size:2.6rem;
	font-weight:800;
	color:#fff;
	margin-bottom:14px;
	text-shadow:0 2px 8px rgba(0,0,0,.6);
}
.hero.nf-hero .nf-hero-meta{
	display:flex;
	align-items:center;
	gap:14px;
	margin-bottom:14px;
	color:var(--nf-gray-light);
	font-size:14px;
}
.hero.nf-hero .nf-hero-meta .nf-badge{
	background:var(--nf-red);
	color:#fff;
	padding:2px 10px;
	border-radius:3px;
	font-weight:700;
	font-size:12px;
	text-transform:uppercase;
}
.hero.nf-hero .nf-hero-desc{
	color:#e5e5e5;
	font-size:15px;
	line-height:1.6;
	margin-bottom:22px;
	text-shadow:0 1px 4px rgba(0,0,0,.7);
}
.hero.nf-hero .nf-hero-actions a{
	display:inline-flex;
	align-items:center;
	gap:8px;
	padding:11px 26px;
	border-radius:4px;
	font-weight:700;
	font-size:15px;
	margin-right:12px;
}
.hero.nf-hero .nf-btn-play{ background:#fff; color:#000; }
.hero.nf-hero .nf-btn-play:hover{ background:rgba(255,255,255,.8); color:#000; }
.hero.nf-hero .nf-btn-info{ background:rgba(109,109,110,.7); color:#fff; }
.hero.nf-hero .nf-btn-info:hover{ background:rgba(109,109,110,.5); color:#fff; }

/* Category tabs (Last Update: Korea / China / Thailand / Variety / Film) */
.nf-cat-tabs{
	display:flex;
	flex-wrap:wrap;
	gap:10px;
	padding:4px 0 22px;
}
.nf-cat-tabs a{
	color:var(--nf-gray-light) !important;
	font-size:13px;
	font-weight:600;
	padding:7px 16px;
	border:1px solid #333;
	border-radius:999px;
	background:#1a1a1a;
	white-space:nowrap;
	transition:background .2s ease, border-color .2s ease, color .2s ease;
}
.nf-cat-tabs a:hover{
	color:var(--nf-white) !important;
	border-color:#666;
}
.nf-cat-tabs a.is-active{
	background:var(--nf-red);
	border-color:var(--nf-red);
	color:#fff !important;
}
.nf-cat-tabs-mobile{
	flex-wrap:nowrap;
	overflow-x:auto;
	scrollbar-width:none;
	padding:0 12px 14px;
}
.nf-cat-tabs-mobile::-webkit-scrollbar{ display:none; }

/* Page heading for list pages (replaces the old empty "Space Iklan" band) */
.nf-page-head{
	background:var(--nf-black);
	padding:120px 0 24px;
}
.nf-page-head h1{
	color:var(--nf-white);
	font-size:2rem;
	font-weight:800;
	margin:0 0 6px;
}
.nf-page-head p{
	color:var(--nf-gray-light);
	font-size:14px;
	margin:0;
}

/* The mobile app shell lives in the same documents as the desktop markup and
   each page hides it with its own media query — but the list pages leave
   .mobile-search-box out of that list, so it leaks onto desktop. */
@media (min-width: 992px){
	.mobile-search-box,
	.mobile-app-header,
	.mobile-app-content,
	.mobile-bottom-nav,
	.mobile-side-menu,
	.mobile-side-menu-overlay{ display:none !important; }
}

/* ---------------------------------------------------------------------- */
/* Rows / carousels (desktop)                                             */
/* ---------------------------------------------------------------------- */
.movie-items{ background:var(--nf-black) !important; padding-top:8px; }
.page-single, .page-single-2, .movie_single, .ht-main{ background:var(--nf-black) !important; }
.title-hd h2, .title-hd h3, .title-hd-sm h4{
	color:var(--nf-white) !important;
	font-weight:700;
	letter-spacing:.2px;
}
.title-hd a.viewall{ color:var(--nf-gray-light) !important; }
.title-hd a.viewall:hover{ color:var(--nf-red) !important; }

.movie-item, .movie-item-style-1, .movie-item-style-2{
	transition:transform .3s ease, box-shadow .3s ease;
	border-radius:4px;
	overflow:hidden;
}
.movie-item:hover, .movie-item-style-1:hover, .movie-item-style-2:hover{
	transform:scale(1.06);
	box-shadow:0 14px 34px rgba(0,0,0,.65);
	z-index:5;
	position:relative;
}
.movie-items .movie-item .hvr-inner,
.movie-item-style-1 .hvr-inner{
	background:linear-gradient(0deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.15) 60%, transparent 100%) !important;
}
.movie-items .movie-item .hvr-inner a,
.movie-item-style-1 .hvr-inner a{
	color:#fff !important;
	font-weight:700;
}
.movie-items .movie-item .hvr-inner a i,
.movie-item-style-1 .hvr-inner a i{ color:var(--nf-red) !important; }

.title-in h6 a{ color:var(--nf-white) !important; font-weight:600; }
.title-in .rate, .title-in p{ color:var(--nf-gray-light) !important; }
.title-in .rate i, .title-in p i{ color:var(--nf-red) !important; }

.cate span{ border-radius:3px !important; font-weight:700; letter-spacing:.2px; }
.cate span a{ color:#fff !important; }
.cate .blue{ background:var(--nf-red) !important; }
.cate .orange{ background:#3a3a3a !important; }
.cate .green{ background:#2f8f46 !important; }
.cate .yell{ background:#b8860b !important; }

/* Plain CSS horizontal-scroll rows (replaces the slick carousel on the
   home page, which breaks when more than one instance runs on a page) */
.nf-row-wrap{
	position:relative;
}
.nf-row{
	display:flex;
	gap:16px;
	overflow-x:auto;
	overflow-y:visible;
	scroll-behavior:smooth;
	scrollbar-width:none;
	-ms-overflow-style:none;
	padding:6px 2px 24px;
}
.nf-row::-webkit-scrollbar{ display:none; }
.nf-row .movie-item{ flex:0 0 auto; margin-right:0; }
.nf-row-sm .movie-item{ flex:0 0 auto; }

.nf-row-arrow{
	position:absolute;
	top:0;
	bottom:24px;
	width:44px;
	display:flex;
	align-items:center;
	justify-content:center;
	background:linear-gradient(90deg, rgba(20,20,20,.85) 0%, rgba(20,20,20,0) 100%);
	border:none;
	color:#fff;
	font-size:22px;
	cursor:pointer;
	z-index:6;
	opacity:0;
	transition:opacity .2s ease;
}
.nf-row-arrow-prev{ left:0; }
.nf-row-arrow-next{ right:0; background:linear-gradient(270deg, rgba(20,20,20,.85) 0%, rgba(20,20,20,0) 100%); }
.nf-row-wrap:hover .nf-row-arrow{ opacity:1; }
.nf-row-wrap-sm{ margin-bottom:8px; }

.slick-prev, .slick-next{
	background:rgba(20,20,20,.75) !important;
	border-radius:50%;
	width:40px !important;
	height:40px !important;
	opacity:0;
	transition:opacity .2s ease, background .2s ease;
}
.slick-multiItemSlider:hover .slick-prev,
.slick-multiItemSlider:hover .slick-next,
.slick-multiItem:hover .slick-prev,
.slick-multiItem:hover .slick-next{ opacity:1; }
.slick-prev:hover, .slick-next:hover{ background:var(--nf-red) !important; }
.slick-prev:before, .slick-next:before{ color:#fff !important; opacity:1 !important; }

.tabs ul.tab-links li a, .tabs ul.tab-links-2 li a, .tabs ul.tab-links-3 li a{
	color:var(--nf-gray-light) !important;
}
.tabs ul.tab-links li.active a, .tabs ul.tab-links-2 li.active a, .tabs ul.tab-links-3 li.active a{
	color:var(--nf-white) !important;
	border-bottom-color:var(--nf-red) !important;
}

/* Laravel's default Bootstrap pagination renders every page link in one
   nowrap row; with hundreds of pages that pushed the document wider than the
   viewport on tablets, showing a horizontal scrollbar. Let it wrap. */
.pagination{
	display:flex;
	flex-wrap:wrap;
	justify-content:center;
	align-items:center;
	gap:6px;
	list-style:none;
	padding-left:0;
	margin:0;
	max-width:100%;
}
.pagination .page-item{ margin:0; }
.pagination .page-link{
	display:block;
	min-width:34px;
	text-align:center;
	padding:7px 10px !important;
	font-size:13px;
	border-radius:4px;
	background:var(--nf-black-2) !important;
	border:1px solid #333 !important;
	color:var(--nf-gray-light) !important;
}
.pagination .page-link:hover{
	background:#2a2a2a !important;
	color:var(--nf-white) !important;
}
.pagination .page-item.active .page-link{
	background:var(--nf-red) !important;
	border-color:var(--nf-red) !important;
	color:#fff !important;
}
.pagination .page-item.disabled .page-link{
	opacity:.4;
	background:var(--nf-black-2) !important;
}
.pagination-mobile{ padding:16px 12px 24px !important; overflow-x:hidden; }

.topbar-filter .pagination2 a, .topbar-filter .pagination2 span{
	background:var(--nf-black-2) !important;
	color:var(--nf-gray-light) !important;
	border:1px solid var(--nf-border) !important;
}
.topbar-filter .pagination2 a.active, .topbar-filter .pagination2 a:hover{
	background:var(--nf-red) !important;
	color:#fff !important;
	border-color:var(--nf-red) !important;
}

.movie-items .alert-danger{
	background:var(--nf-black-2) !important;
	border:1px solid var(--nf-border) !important;
	color:var(--nf-gray-light) !important;
	border-radius:4px;
}

.sidebar .sb-title{ color:var(--nf-white) !important; }
.sidebar .celeb-item{ border-color:var(--nf-border) !important; }
.sidebar .celeb-item h6 a{ color:var(--nf-white) !important; }
.sidebar .celeb-item p{ color:var(--nf-gray-light) !important; }

.redbtn, .btn-transform .item.redbtn{
	background:var(--nf-red) !important;
	border-color:var(--nf-red) !important;
	color:#fff !important;
}
.redbtn:hover{ background:var(--nf-red-dark) !important; }

.movie-rate .rate p, .movie-rate .rate-star p{ color:var(--nf-gray-light) !important; }

/* The legacy template pulls .movie-single way up (-415px) to overlap a short
   ~250px hero. Our nf-hero is much taller (56vh) with its own title/meta/CTA
   sitting flush against its bottom edge, so any negative overlap risks
   covering that text. Keep a clean break instead. */
.movie-single{
	margin-top:32px !important;
	position:relative;
	z-index:3;
}
/* Same story as .movie-single: the profile card was pulled up 200px to sit
   over the old hero image, which no longer exists. */
.user-information{
	margin-top:0 !important;
	background-color:var(--nf-black-2) !important;
	border-color:var(--nf-border) !important;
}
.user-information h5, .user-information p, .user-information li{ color:var(--nf-gray-light) !important; }

/* ---------------------------------------------------------------------- */
/* Watch page: full-bleed player stage, then title/meta/actions            */
/* ---------------------------------------------------------------------- */
.nf-player-page{ margin-top:0 !important; }
.nf-player-stage{
	background:#000;
	width:100%;
	display:flex;
	align-items:center;
	justify-content:center;
	margin-top:-68px; /* let the transparent header sit over the player */
	padding-top:68px;
}
.nf-player-stage video{
	width:100%;
	aspect-ratio:16 / 9;
	max-height:78vh;
	background:#000;
	display:block;
}
.nf-player-gate{
	text-align:center;
	padding:80px 20px;
	color:var(--nf-gray-light);
}
.nf-player-gate p{ margin-bottom:18px; font-size:15px; }
.nf-player-gate .nf-btn-play{
	display:inline-flex;
	align-items:center;
	gap:8px;
	background:#fff;
	color:#000 !important;
	padding:11px 26px;
	border-radius:4px;
	font-weight:700;
}
.nf-player-gate .nf-btn-play:hover{ background:rgba(255,255,255,.8); }

.nf-watch-head{
	display:flex;
	align-items:flex-start;
	justify-content:space-between;
	gap:24px;
	padding:28px 0 12px;
}
.nf-watch-title{
	color:var(--nf-white);
	font-size:28px;
	font-weight:800;
	margin:0 0 10px;
}
.nf-watch-meta{
	display:flex;
	align-items:center;
	gap:14px;
	color:var(--nf-gray-light);
	font-size:14px;
}
.nf-watch-meta .nf-badge{
	background:var(--nf-red);
	color:#fff;
	padding:2px 10px;
	border-radius:3px;
	font-size:12px;
	font-weight:700;
}
.nf-watch-actions{ display:flex; align-items:center; gap:12px; }
.nf-icon-btn{
	width:42px;
	height:42px;
	border-radius:50%;
	border:2px solid rgba(255,255,255,.5) !important;
	background:rgba(0,0,0,.4) !important;
	color:#fff !important;
	font-size:18px !important;
	display:flex;
	align-items:center;
	justify-content:center;
	cursor:pointer;
	margin:0 !important;
	padding:0 !important;
	transition:border-color .2s ease, background .2s ease;
}
.nf-icon-btn i{ margin:0 !important; padding:0 !important; border:none !important; }
.nf-icon-btn:hover{ border-color:#fff !important; background:rgba(255,255,255,.12) !important; }
.nf-icon-btn.is-active{ border-color:var(--nf-red) !important; color:var(--nf-red) !important; }

.nf-watch-desc{
	color:var(--nf-gray-light);
	font-size:15px;
	line-height:1.6;
	max-width:860px;
	margin:0 0 24px;
}

.nf-servers{ margin-bottom:28px; }
.nf-servers-label{
	display:block;
	color:var(--nf-gray);
	font-size:13px;
	margin-bottom:10px;
}
.nf-servers-list{ display:flex; flex-wrap:wrap; gap:10px; }
.nf-server-pill{
	border:1px solid #3a3a3a;
	border-radius:4px;
	padding:8px 16px;
	font-size:13px;
	font-weight:600;
	color:var(--nf-white) !important;
	background:#1f1f1f;
}
.nf-server-pill:hover{ background:var(--nf-red); border-color:var(--nf-red); color:#fff !important; }

.nf-now-playing{
	color:var(--nf-red);
	font-size:12px;
	font-weight:600;
	margin-left:10px;
}
.nf-episode-row.is-current{ background:#1f1f1f; }

/* ---------------------------------------------------------------------- */
/* Detail page: synopsis + metadata, then a Netflix-style episode list     */
/* ---------------------------------------------------------------------- */
.nf-detail-body{
	display:grid;
	grid-template-columns:minmax(0, 2fr) minmax(0, 1fr);
	gap:48px;
	padding:8px 0 40px;
}
.nf-detail-tags{
	display:flex;
	align-items:center;
	gap:12px;
	margin-bottom:16px;
	color:var(--nf-gray-light);
	font-size:14px;
}
.nf-tag-box{
	border:1px solid #555;
	border-radius:2px;
	padding:0 6px;
	font-size:11px;
	line-height:16px;
}
.nf-detail-desc p{
	color:var(--nf-white);
	font-size:16px;
	line-height:1.6;
	margin:0;
}
.nf-detail-meta p{
	color:var(--nf-gray);
	font-size:13px;
	line-height:1.6;
	margin:0 0 10px;
}
.nf-meta-label{ color:#777; }
.nf-detail-meta p{ color:var(--nf-white); }

.nf-episodes{ border-top:1px solid #2a2a2a; padding:28px 0 20px; }
.nf-episodes-head{
	display:flex;
	align-items:baseline;
	justify-content:space-between;
	margin-bottom:18px;
}
.nf-episodes-head h3{
	color:var(--nf-white);
	font-size:22px;
	font-weight:700;
	margin:0;
}
.nf-episodes-count{ color:var(--nf-gray); font-size:14px; }

.nf-episode-list{ display:flex; flex-direction:column; }
.nf-episode-row{
	display:grid;
	grid-template-columns:52px 160px 1fr;
	align-items:center;
	gap:18px;
	padding:14px 10px;
	border-bottom:1px solid #2a2a2a;
	transition:background .2s ease;
}
.nf-episode-row:hover{ background:#242424; }
.nf-episode-num{
	color:var(--nf-gray-light);
	font-size:22px;
	text-align:center;
}
.nf-episode-thumb{
	position:relative;
	width:160px;
	height:90px;
	border-radius:4px;
	overflow:hidden;
	background:var(--nf-black-2);
}
.nf-episode-thumb img{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}
.nf-episode-play{
	position:absolute;
	inset:0;
	display:flex;
	align-items:center;
	justify-content:center;
	color:#fff;
	font-size:22px;
	background:rgba(0,0,0,.35);
	opacity:0;
	transition:opacity .2s ease;
}
.nf-episode-row:hover .nf-episode-play{ opacity:1; }
.nf-episode-title{
	color:var(--nf-white);
	font-size:15px;
	font-weight:600;
	margin-bottom:6px;
}
.nf-episode-desc{
	color:var(--nf-gray-light);
	font-size:13px;
	line-height:1.5;
	margin:0;
	display:-webkit-box;
	-webkit-line-clamp:2;
	-webkit-box-orient:vertical;
	overflow:hidden;
}

@media (max-width: 991px){
	.nf-detail-body{ grid-template-columns:1fr; gap:24px; }
	.nf-episode-row{ grid-template-columns:36px 120px 1fr; gap:12px; }
	.nf-episode-thumb{ width:120px; height:68px; }
}

.movie-single-ct .bd-hd{ color:var(--nf-white) !important; }
.movie-single-ct .bd-hd span{ color:var(--nf-gray-light) !important; }

/* ---------------------------------------------------------------------- */
/* Footer                                                                  */
/* ---------------------------------------------------------------------- */
.nf-footer{
	background:var(--nf-black);
	border-top:1px solid var(--nf-border);
	padding:50px 0 40px;
	margin-top:40px;
}
.nf-footer-inner{
	width:100%;
	max-width:1000px;
	padding:0 4%;
	margin:0 auto;
	box-sizing:border-box;
}

.nf-footer-social{ display:flex; gap:22px; margin-bottom:30px; }
.nf-footer-social a{ color:var(--nf-white); font-size:22px; line-height:1; }
.nf-footer-social a:hover{ color:var(--nf-gray-light); }

.nf-footer-columns{
	display:grid;
	grid-template-columns:repeat(4, 1fr);
	gap:16px 12px;
	margin-bottom:26px;
}
.nf-footer-col{ display:flex; flex-direction:column; gap:16px; }
.nf-footer-col a{
	color:#757575;
	font-size:13px;
	line-height:1.2;
}
.nf-footer-col a:hover{ color:#757575; text-decoration:underline; }

.nf-footer-code{
	display:inline-block;
	border:1px solid #333;
	color:#757575 !important;
	font-size:13px;
	padding:8px 12px;
	margin-bottom:24px;
}
.nf-footer-code:hover{ color:var(--nf-white) !important; border-color:#555; }

.nf-footer-copyright{ color:#757575; font-size:11px; margin:0; }

@media (max-width: 767px){
	.nf-footer-columns{ grid-template-columns:repeat(2, 1fr); }
}

/* ---------------------------------------------------------------------- */
/* Mobile app shell (header, bottom nav, side menu, cards)                */
/* ---------------------------------------------------------------------- */
.mobile-app-header{
	background:var(--nf-black-3) !important;
	border-bottom:1px solid var(--nf-border) !important;
}
.mobile-app-content{ background:var(--nf-black) !important; }
.mobile-app-content, .mobile-app-content *{ color:var(--nf-white); }

.mobile-bottom-nav{
	background:var(--nf-black-3) !important;
	border-top:1px solid var(--nf-border) !important;
	box-shadow:0 -4px 20px rgba(0,0,0,.5) !important;
}
.mobile-bottom-nav .nav-item{ color:var(--nf-gray) !important; }
.mobile-bottom-nav .nav-item.active{
	color:#fff !important;
	background:rgba(229,9,20,.18) !important;
}

.mobile-side-menu{
	background:var(--nf-black-2) !important;
	box-shadow:4px 0 24px rgba(0,0,0,.6) !important;
}
.mobile-side-menu .menu-item{
	color:var(--nf-white) !important;
	border-bottom-color:var(--nf-border) !important;
}
.mobile-side-menu .menu-item:hover, .mobile-side-menu .menu-item:active{
	background:rgba(229,9,20,.12) !important;
	color:var(--nf-red) !important;
}
.mobile-side-menu .menu-item::before{ background:var(--nf-red) !important; }
.mobile-side-menu-overlay{ background:rgba(0,0,0,.75) !important; }

.mobile-search-box{
	background:var(--nf-black-3) !important;
	border-bottom:1px solid var(--nf-border) !important;
}
.mobile-search-box input{
	background:#2a2a2a !important;
	color:var(--nf-white) !important;
	border-color:#3a3a3a !important;
}

.app-section-title h3{ color:var(--nf-white) !important; }
.app-section-title .view-all{ color:var(--nf-red) !important; }

.app-movie-card{
	background:var(--nf-black-2) !important;
	border:1px solid var(--nf-border) !important;
	transition:transform .25s ease, box-shadow .25s ease;
}
.app-movie-card:active{ transform:scale(.97); }
.app-movie-card .card-title{ color:var(--nf-white) !important; }
.app-movie-card .card-meta{ color:var(--nf-gray-light) !important; }
.app-movie-card .card-badge{
	background:var(--nf-red) !important;
}

.app-empty-state{ color:var(--nf-gray) !important; }
.app-hero-banner{ background:var(--nf-black-2) !important; }

.drama-poster-section{ background:var(--nf-black) !important; }
.drama-info-section, .episode-list-section, .server-links-section, .video-info-section{
	background:var(--nf-black-2) !important;
}
.drama-info-section h1, .episode-list-section h3, .server-links-section h3, .video-info-section h1{
	color:var(--nf-white) !important;
}
.drama-info-section .drama-meta, .drama-description p, .video-description p, .video-meta{
	color:var(--nf-gray-light) !important;
}
.drama-release{ color:var(--nf-red) !important; }
.drama-status{ background:#2a2a2a !important; color:var(--nf-white) !important; }
.episode-card{
	background:var(--nf-black-2) !important;
	border:1px solid var(--nf-border) !important;
}
.episode-card .episode-title{ color:var(--nf-white) !important; }
.episode-card .episode-play{ background:rgba(229,9,20,.92) !important; }
.server-link-btn{ background:var(--nf-red) !important; }
.server-link-btn:hover{ background:var(--nf-red-dark) !important; }
.video-action-btn.favorite-btn{ background:#2a2a2a !important; color:var(--nf-white) !important; }
.video-action-btn.favorite-btn.active{ background:var(--nf-red) !important; color:#fff !important; }
.video-action-btn.share-btn{ background:#2a2a2a !important; color:var(--nf-white) !important; }

.premium-video-container{
	background:linear-gradient(135deg, #050505 0%, #0d0d0d 100%) !important;
}

/* ---------------------------------------------------------------------- */
/* Login / Register                                                       */
/* ---------------------------------------------------------------------- */
.page-single-2{ background:var(--nf-black) !important; }
/* .container is full-bleed now, so the auth card needs its own centering */
.login-container, .register-container{ margin-left:auto !important; margin-right:auto !important; }
.login-card, .register-card{
	background:var(--nf-black-2) !important;
	border-color:var(--nf-border) !important;
}
.login-header h1, .register-header h1{ color:var(--nf-white) !important; }
.login-header p, .register-header p{ color:var(--nf-gray-light) !important; }
.login-form-input, .register-form-input{
	background:#2a2a2a !important;
	border-color:#3a3a3a !important;
	color:var(--nf-white) !important;
}
.login-form-input:focus, .register-form-input:focus{
	border-color:var(--nf-red) !important;
	box-shadow:0 0 0 4px rgba(229,9,20,.2) !important;
}
.login-submit-btn, .register-submit-btn{
	background:linear-gradient(135deg, var(--nf-red) 0%, var(--nf-red-dark) 100%) !important;
	box-shadow:0 4px 14px rgba(229,9,20,.4) !important;
}
.login-submit-btn:hover, .register-submit-btn:hover{
	box-shadow:0 6px 20px rgba(229,9,20,.5) !important;
}
.login-footer a, .register-footer a{ color:var(--nf-red) !important; }
#modaldaftar .modal-header, #modalstreaming .modal-header{
	background:linear-gradient(135deg, var(--nf-red) 0%, var(--nf-red-dark) 100%) !important;
}
#modaldaftar .modal-body, #modalstreaming .modal-body{
	background:var(--nf-black-2) !important;
	color:var(--nf-white) !important;
}

/* jQuery UI autocomplete dropdown */
.ui-autocomplete.ui-widget-content{
	background:var(--nf-black-2) !important;
	border:1px solid var(--nf-border) !important;
}
.ui-autocomplete .ui-menu-item{
	background:transparent !important;
	border:none !important;
}
.ui-autocomplete .ui-menu-item-wrapper{
	background:var(--nf-black-2) !important;
	color:var(--nf-white) !important;
	border-bottom-color:var(--nf-border) !important;
}
.ui-autocomplete .ui-menu-item-wrapper:hover, .ui-autocomplete .ui-menu-item-wrapper.ui-state-active{
	background:rgba(229,9,20,.18) !important;
}
.ui-autocomplete .list_item_container div{ color:var(--nf-white) !important; }

/* Below the desktop breakpoint the desktop header is hidden, so its
   autocomplete menu must never paint. jQuery UI keeps that empty <ul> in the
   DOM, and the per-page mobile CSS styles every .ui-autocomplete with a white
   background at a fixed position — which rendered it as a white bar. */
@media (max-width: 991px){
	.nf-search-menu{ display:none !important; }

	/* Per-page mobile CSS paints the dropdown white with `!important` and a
	   3-class selector, while the theme's text colour stays light — white on
	   white. These selectors match that specificity and land later, so the
	   mobile dropdown follows the dark theme like everything else. */
	.ui-autocomplete.ui-widget.ui-widget-content{
		background:var(--nf-black-2) !important;
		border:1px solid var(--nf-border) !important;
		box-shadow:0 12px 32px rgba(0,0,0,.6) !important;
	}
	.ui-autocomplete .ui-menu-item .ui-menu-item-wrapper,
	.ui-autocomplete .ui-menu-item-wrapper,
	.ui-autocomplete li a{
		background:transparent !important;
		color:var(--nf-white) !important;
		border-bottom:1px solid rgba(255,255,255,.07) !important;
	}
	.ui-autocomplete .ui-menu-item .ui-menu-item-wrapper:hover,
	.ui-autocomplete .ui-menu-item-wrapper:hover,
	.ui-autocomplete .ui-menu-item .ui-menu-item-wrapper.ui-state-active,
	.ui-autocomplete .ui-menu-item-wrapper.ui-state-active{
		background:rgba(229,9,20,.18) !important;
		border-color:rgba(255,255,255,.07) !important;
	}
	.ui-autocomplete .list_item_container div{
		color:var(--nf-white) !important;
		min-width:0 !important;
		overflow:hidden !important;
		text-overflow:ellipsis !important;
		white-space:nowrap !important;
	}
	.ui-autocomplete .list_item_container{
		justify-content:space-between !important;
		gap:10px !important;
	}
	/* jQuery UI's own stylesheet paints the <li> white; the theme's light text
	   then sits on it, so results read as white-on-white. */
	.ui-autocomplete .ui-menu-item{
		background:transparent !important;
		border:none !important;
	}
	.ui-autocomplete .nf-search-cat{
		flex:0 0 auto !important;
		font-size:10px;
		font-weight:700;
		text-transform:uppercase;
		letter-spacing:.3px;
		color:var(--nf-gray-light) !important;
		border:1px solid #3a3a3a;
		border-radius:3px;
		padding:1px 6px;
	}
	/* Each page's mobile CSS hides the desktop blocks by their legacy names
	   (.hero, .page-single). The page heading that replaced the old hero has a
	   new name, so it has to be hidden here or it leaks above the app shell. */
	.nf-page-head{ display:none !important; }
}

/* Desktop header dropdown: judul + badge kategori */
.nf-search-menu{
	width:320px !important;
	max-height:420px;
	overflow-y:auto;
	border-radius:4px;
	padding:6px 0 !important;
	box-shadow:0 12px 32px rgba(0,0,0,.6);
}
.nf-search-menu .list_item_container{
	display:flex !important;
	align-items:center;
	justify-content:space-between;
	gap:12px;
	width:100%;
	float:none !important;
	margin:0 !important;
}
.nf-search-menu .nf-search-title{
	color:var(--nf-white) !important;
	font-size:13px;
	/* min-width:0 is what lets a flex item actually shrink; without it the
	   title keeps its intrinsic width and spills past the panel's left edge
	   instead of being clipped with an ellipsis. */
	flex:1 1 auto;
	min-width:0;
	overflow:hidden;
	text-overflow:ellipsis;
	white-space:nowrap;
}
.nf-search-menu .nf-search-cat{
	flex-shrink:0;
	font-size:10px;
	font-weight:700;
	text-transform:uppercase;
	letter-spacing:.3px;
	color:var(--nf-gray-light) !important;
	border:1px solid #3a3a3a;
	border-radius:3px;
	padding:1px 6px;
}
/* jQuery UI leaves the item anchor inline, so the row only spans its own text
   (~154px of a 320px panel) and squeezes the title. Make it fill the row. */
.nf-search-menu li{ display:block !important; width:100% !important; }
.nf-search-menu .ui-menu-item-wrapper,
.nf-search-menu a{
	display:block !important;
	width:100% !important;
	box-sizing:border-box !important;
	padding:9px 14px !important;
}

/* Disable the legacy localStorage dark-mode toggle path: theme is always dark now */
body.dark-mode{ background:var(--nf-black) !important; color:var(--nf-white) !important; }

/* ---------------------------------------------------------------------- */
/* Header lebih tinggi + lebih jelas, pencarian lebih lega (rev 2026-09)  */
/* ---------------------------------------------------------------------- */

/* Tinggi header app mobile jadi SATU variabel. Semua offset yang bergantung
   padanya (kotak pencarian, side menu, dropdown autocomplete, margin atas
   konten) memakai var(--nf-mh) di blok @push('css') tiap halaman, jadi satu
   nilai ini menggerakkan seluruh shell bersama-sama. */
:root{ --nf-mh:72px; }

.nf-header{
	background:linear-gradient(180deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.72) 62%, rgba(0,0,0,.28) 100%);
	-webkit-backdrop-filter:blur(6px);
	backdrop-filter:blur(6px);
}
.nf-header-inner{ min-height:92px; padding:16px 4%; gap:34px; }
.nf-header.is-scrolled .nf-header-inner{ min-height:76px; padding:12px 4%; }
.nf-logo img{ height:36px; width:36px; }
.nf-nav{ gap:26px; }
.nf-nav a{ position:relative; padding:8px 0; }
.nf-nav a::after{
	content:''; position:absolute; left:0; right:0; bottom:3px; height:2px;
	background:var(--nf-red); transform:scaleX(0); transform-origin:left center;
	transition:transform .25s ease;
}
.nf-nav a:hover::after, .nf-nav a:focus::after{ transform:scaleX(1); }

.nf-search-toggle{
	width:44px; height:44px; font-size:20px; border-radius:50%;
	transition:background .2s ease;
}
.nf-search-toggle:hover, .nf-search-toggle:focus{ background:rgba(255,255,255,.14); }
.nf-search.active .nf-search-input{
	width:300px; height:44px; padding:0 14px; margin-left:10px;
	background:rgba(0,0,0,.92); border:1px solid #3a3a3a; border-radius:4px;
}
.nf-search.active .nf-search-input:focus{
	border-color:#fff;
	box-shadow:0 0 0 3px rgba(255,255,255,.12);
}

.nf-search-menu{
	width:360px !important;
	max-height:460px;
	/* jQuery UI menempelkan menu tepat di tepi input (inline `top`); margin ini
	   memberi jarak 6px tanpa merusak posisinya. */
	margin-top:6px !important;
	border-radius:8px;
	padding:8px 0 !important;
	border:1px solid #2f2f2f !important;
	box-shadow:0 20px 48px rgba(0,0,0,.72) !important;
}
.nf-search-menu .ui-menu-item-wrapper,
.nf-search-menu a{ padding:12px 16px !important; }
.nf-search-menu .nf-search-title{ font-size:14px; font-weight:500; }
.nf-search-menu .nf-search-cat{
	font-size:11px;
	font-weight:600;
	letter-spacing:.04em;
	padding:2px 8px;
	border-radius:999px;
	background:rgba(255,255,255,.07);
	border-color:transparent !important;
}

/* Header + kotak pencarian versi mobile. Tinggi input 46px + padding 8px =
   62px; angka 140px di bawah (= 72 header + 62 + 6 jarak) dipakai halaman
   sebagai posisi dropdown autocomplete mobile. Kalau --nf-mh diubah, ubah
   juga 140px di frontend/{index,drama,lastupdate}.blade.php. */
.mobile-app-header .logo{ font-size:21px; }
.mobile-app-header .menu-toggle,
.mobile-app-header .search-toggle,
.mobile-app-header .dark-mode-toggle{ width:44px; height:44px; font-size:22px; }
.mobile-search-box{ padding:8px 14px !important; }
.mobile-search-box input{
	height:46px !important;
	padding:0 42px 0 15px !important;
	border-radius:10px !important;
	font-size:15px;
}
.mobile-search-box input:focus{
	border-color:var(--nf-red) !important;
	box-shadow:0 0 0 3px rgba(229,9,20,.18);
}
.mobile-search-box .clear-search{ right:24px; color:#9a9a9a; }
