* { margin: 0; padding: 0; box-sizing: border-box; } :root { --header-gradient: linear-gradient(135deg, #ff9a9e, #fad0c4); --accent-color: #ff9a9e; --ep-color: #ff4b5c; } body { font-family: 'Roboto', sans-serif; background: #f5f7fa; color: #333; padding: 20px; min-height: 100vh; display: flex; flex-direction: column; } .container { max-width: 1000px; margin: 40px auto; background: rgba(255,255,255,0.88); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-radius: 12px; box-shadow: 0 4px 20px rgba(0,0,0,0.1); overflow: hidden; flex: 1; } .header { display: flex; background: var(--header-gradient); padding: 20px; align-items: center; } .poster-wrapper { flex-shrink: 0; width: 200px; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.2); } .poster { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; background: #222; } .info { margin-left: 20px; color: #222; } .info h1 { margin: 0; font-size: 28px; font-weight: 700; } .alt-title { margin: 8px 0; font-size: 15px; opacity: 0.75; font-style: italic; } .info-table td { padding: 3px 8px 3px 0; vertical-align: top; font-size: 14px; } .info-table .label { font-weight: 600; opacity: 0.75; white-space: nowrap; } .description { padding: 20px; font-size: 16px; line-height: 1.6; } .details { display: flex; flex-wrap: wrap; padding: 0 20px 20px; } .detail-item { flex: 1 1 200px; margin: 10px; background: #f0f0f0; padding: 12px; border-radius: 8px; font-size: 14px; } .episodes { padding: 20px; background: #fafafa; } .episodes h2 { margin-bottom: 15px; font-size: 22px; border-left: 4px solid var(--accent-color); padding-left: 10px; } .lang-note { display: inline-block; margin: 0 0 12px; padding: 6px 12px; border-radius: 20px; background: #fff3cd; color: #856404; border: 1px solid #ffd75e; font-size: 13px; font-weight: 600; } .episode-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 15px; } .episode-card { background: #fff; border: 1px solid #ddd; border-radius: 8px; text-align: center; padding: 10px; cursor: pointer; transition: transform 0.2s; user-select: none; } .episode-card:hover { transform: translateY(-5px); box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .ep-num { font-weight: 700; font-size: 14px; color: var(--ep-color); } .modal-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.88); z-index: 1000; justify-content: center; align-items: center; padding: 20px; } .modal-overlay.active { display: flex; } .modal-content { background: #111; border-radius: 12px; overflow: hidden; width: 100%; max-width: 960px; box-shadow: 0 8px 40px rgba(0,0,0,0.6); animation: modalIn 0.2s ease-out; } @keyframes modalIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; background: #1a1a1a; } .modal-title { font-weight: 700; font-size: 15px; color: #fff; } .close-btn { background: none; border: none; color: #999; font-size: 28px; cursor: pointer; line-height: 1; padding: 0 4px; transition: color 0.2s; } .close-btn:hover { color: #fff; } .modal-body { position: relative; width: 100%; padding-top: 56.25%; } .modal-body iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: none; } .vi-popup-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.88); z-index: 1000; justify-content: center; align-items: center; padding: 20px; } .vi-popup-overlay.active { display: flex; } .vi-popup { background: #15151a; border: 1px solid #2a2a35; border-radius: 14px; max-width: 420px; width: 100%; padding: 26px 22px 22px; text-align: center; box-shadow: 0 10px 40px rgba(0,0,0,0.6); animation: modalIn 0.2s ease-out; } .vi-popup .vi-popup-title { color: #fff; font-size: 17px; font-weight: 700; margin: 0 0 10px; } .vi-popup .vi-popup-msg { color: #aaa; font-size: 14px; line-height: 1.65; margin: 0 0 20px; } .vi-popup .vi-popup-actions { display: flex; flex-direction: column; gap: 10px; } .vi-popup .vi-popup-actions button { padding: 12px 16px; border: none; border-radius: 8px; font-size: 14px; font-weight: 700; cursor: pointer; font-family: inherit; transition: background 0.2s, color 0.2s; } .vi-popup .vi-continue { background: #667eea; color: #fff; } .vi-popup .vi-continue:hover { background: #7a90f5; } .vi-popup .vi-cancel { background: #23232b; color: #ccc; } .vi-popup .vi-cancel:hover { color: #fff; } .vi-popup a.vi-cancel { display: block; text-decoration: none; text-align: center; } /* Home page */ .home-header { background: linear-gradient(135deg, #667eea, #764ba2); padding: 40px 20px; text-align: center; } .site-title { font-size: 36px; font-weight: 700; margin-bottom: 16px; letter-spacing: 3px; text-shadow: 1px 1px 2px rgba(0,0,0,0.1); color: #fff; } .site-desc { color: rgba(255,255,255,0.85); font-size: 14px; margin-bottom: 20px; } .search-box { display: flex; max-width: 400px; margin: 0 auto; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.15); } .search-box input { flex: 1; padding: 12px 16px; border: none; outline: none; font-size: 15px; font-family: inherit; } .search-box button { padding: 12px 18px; border: none; background: #222; color: #fff; cursor: pointer; font-size: 16px; } .search-box button:hover { background: #000; } .home-nav { display: flex; gap: 8px; padding: 16px 20px; border-bottom: 1px solid #eee; flex-wrap: wrap; } .home-nav a { text-decoration: none; color: #555; padding: 6px 14px; border-radius: 4px; font-size: 14px; transition: background 0.2s; cursor: pointer; } .home-nav a:hover, .home-nav a.active { background: #667eea; color: #fff; } .random-section { text-align: center; padding: 12px 20px; border-bottom: 1px solid #eee; } .random-section button { padding: 10px 24px; font-size: 15px; font-weight: 600; border: none; border-radius: 8px; background: linear-gradient(135deg, #667eea, #764ba2); color: #fff; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; font-family: inherit; } .random-section button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102,126,234,0.4); } .stats-bar { display: flex; gap: 12px; padding: 10px 20px; background: #f9f9f9; border-bottom: 1px solid #eee; font-size: 13px; color: #666; flex-wrap: wrap; justify-content: center; } .stats-bar .stat-item span { font-weight: 700; color: #333; } .category-section { margin: 0; } .category-title { font-size: 16px; font-weight: 700; padding: 12px 0 8px 10px; margin: 16px 20px 0; border-left: 4px solid var(--accent-color); } .movie-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; padding: 20px; } .movie-card { background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1); transition: transform 0.2s; text-decoration: none; color: inherit; display: block; } .movie-card:hover { transform: translateY(-4px); box-shadow: 0 6px 16px rgba(0,0,0,0.15); } .movie-thumb { position: relative; width: 100%; aspect-ratio: 3 / 4; background: #222; } .movie-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; } .movie-type { position: absolute; top: 6px; left: 6px; background: rgba(0,0,0,0.8); color: #fff; font-size: 10px; padding: 2px 6px; border-radius: 3px; text-transform: uppercase; } .movie-ep { position: absolute; bottom: 6px; left: 6px; background: rgba(0,0,0,0.8); color: #fff; font-size: 11px; padding: 2px 6px; border-radius: 3px; } .movie-info { padding: 10px 12px; } .movie-title { font-size: 14px; font-weight: 700; margin-bottom: 4px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .movie-original { font-size: 12px; color: #888; } /* Footer */ .footer { text-align: center; padding: 20px; font-size: 12px; color: #888; border-top: 1px solid #eee; margin-top: 20px; line-height: 1.8; } /* Back link */ .back-link { display: inline-flex; align-items: center; gap: 6px; margin: 12px 0 12px 20px; padding: 8px 16px; text-decoration: none; color: #667eea; font-size: 13px; font-weight: 600; border-radius: 8px; background: #f0f0ff; border: 1px solid #e0e0ff; transition: all 0.25s; position: relative; overflow: hidden; z-index: 1; } .back-link::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, #667eea18, #764ba218); z-index: -1; opacity: 0; transition: opacity 0.25s; border-radius: 8px; } .back-link:hover { transform: translateX(-3px); border-color: #667eea; color: #764ba2; } .back-link:hover::before { opacity: 1; } .next-link { margin-left: 4px; } .next-link:hover { transform: translateX(3px); } /* UI Toggle */ .ui-toggle { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 14px; } .ui-btn { padding: 6px 14px; border: 1px solid rgba(255,255,255,0.3); background: transparent; color: rgba(255,255,255,0.7); border-radius: 6px; cursor: pointer; font-size: 13px; font-family: inherit; transition: all 0.2s; line-height: 1.4; } .ui-btn.active { background: rgba(255,255,255,0.2); color: #fff; border-color: rgba(255,255,255,0.6); box-shadow: 0 0 12px rgba(255,255,255,0.1); } .ui-btn:hover { background: rgba(255,255,255,0.1); } /* Mobile UI */ body.ui-mobile { padding: 0; background: #fff; } body.ui-mobile .container { margin: 0; border-radius: 0; box-shadow: none; } body.ui-mobile .home-header { padding: 24px 12px 16px; } body.ui-mobile .site-title { font-size: 24px; margin-bottom: 8px; } body.ui-mobile .site-desc { font-size: 12px; margin-bottom: 12px; } body.ui-mobile .search-box { max-width: 100%; } body.ui-mobile .search-box input { padding: 10px 12px; font-size: 14px; } body.ui-mobile .search-box button { padding: 10px 14px; } body.ui-mobile .ui-toggle { margin-top: 10px; } body.ui-mobile .ui-btn { padding: 5px 12px; font-size: 12px; } body.ui-mobile .settings-link { font-size: 17px; } body.ui-mobile .stats-bar { font-size: 11px; gap: 6px; padding: 8px; } body.ui-mobile .random-section { padding: 8px 12px; } body.ui-mobile .random-section button { padding: 8px 18px; font-size: 13px; width: 100%; max-width: 300px; } body.ui-mobile .home-nav { overflow-x: auto; flex-wrap: nowrap; padding: 10px 8px; gap: 4px; -webkit-overflow-scrolling: touch; } body.ui-mobile .home-nav a { white-space: nowrap; padding: 8px 14px; font-size: 13px; flex-shrink: 0; } body.ui-mobile .movie-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 10px; } body.ui-mobile .movie-card { box-shadow: 0 2px 8px rgba(0,0,0,0.1); border-radius: 10px; } body.ui-mobile .movie-thumb { border-radius: 10px 10px 0 0; } body.ui-mobile .movie-card:hover { transform: none; } body.ui-mobile .movie-title { font-size: 13px; } body.ui-mobile .movie-original { font-size: 11px; } body.ui-mobile .movie-ep { font-size: 10px; bottom: 4px; left: 4px; } body.ui-mobile .movie-type { font-size: 9px; top: 4px; left: 4px; } body.ui-mobile .pagination { gap: 4px; padding: 12px 8px; } body.ui-mobile .pg-btn { min-width: 32px; height: 32px; font-size: 13px; } body.ui-mobile .category-title { margin: 8px 8px 0; font-size: 14px; padding: 8px 0 6px 8px; } body.ui-mobile .footer { padding: 14px 12px; font-size: 11px; } /* Mobile detail page */ body.ui-mobile .header { flex-direction: column; align-items: center; text-align: center; padding: 16px; } body.ui-mobile .poster-wrapper { width: 160px; border-radius: 10px; } body.ui-mobile .info { margin-left: 0; margin-top: 12px; } body.ui-mobile .info h1 { font-size: 20px; } body.ui-mobile .info-table td { font-size: 13px; } body.ui-mobile .description { padding: 16px; font-size: 14px; } body.ui-mobile .details { padding: 0 16px 16px; } body.ui-mobile .detail-item { flex: 1 1 100%; margin: 4px 0; padding: 10px; font-size: 13px; } body.ui-mobile .episodes { padding: 16px; } body.ui-mobile .episodes h2 { font-size: 18px; } body.ui-mobile .episode-list { grid-template-columns: repeat(3, 1fr); gap: 8px; } body.ui-mobile .episode-card { padding: 8px 4px; } body.ui-mobile .episode-card:hover { transform: none; } body.ui-mobile .ep-num { font-size: 12px; } body.ui-mobile .back-link { margin: 8px 0 8px 12px; padding: 6px 12px; font-size: 12px; } body.ui-mobile .modal-overlay { padding: 4px; } body.ui-mobile .modal-content { border-radius: 8px; } body.ui-mobile .modal-header { padding: 8px 12px; } body.ui-mobile .modal-title { font-size: 13px; } /* Series hub */ .series-header { display: flex; gap: 20px; padding: 20px; background: linear-gradient(135deg, #667eea22, #764ba222); align-items: center; } .series-poster { width: 160px; flex-shrink: 0; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.15); } .series-poster img { width: 100%; display: block; aspect-ratio: 3/4; object-fit: cover; } .series-info h1 { font-size: 26px; margin-bottom: 6px; } .series-desc { margin-top: 10px; font-size: 14px; color: #555; line-height: 1.6; } .series-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 16px; padding: 20px; } .series-card { text-decoration: none; color: inherit; border-radius: 10px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.08); transition: transform 0.25s, box-shadow 0.25s; border-bottom: 3px solid var(--card-color); background: #fff; } .series-card:hover { transform: translateY(-5px); box-shadow: 0 8px 20px rgba(0,0,0,0.12); } .series-card-thumb { width: 100%; aspect-ratio: 3/4; overflow: hidden; background: #222; } .series-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } .series-card-body { padding: 10px 12px; } .series-card-body h3 { font-size: 14px; font-weight: 700; margin-bottom: 4px; } .series-card-body p { font-size: 12px; color: #888; } /* Pagination */ .pagination { display: flex; justify-content: center; align-items: center; gap: 6px; padding: 20px; flex-wrap: wrap; } .pg-btn { min-width: 36px; height: 36px; border: 1px solid #ddd; border-radius: 6px; background: #fff; color: #555; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s; font-family: inherit; display: inline-flex; align-items: center; justify-content: center; } .pg-btn:hover:not(.disabled):not(.active) { border-color: #667eea; color: #667eea; } .pg-btn.active { background: #667eea; border-color: #667eea; color: #fff; } .pg-btn.disabled { opacity: 0.35; cursor: default; } @media (max-width: 700px) { body { padding: 10px; } .container { margin: 16px auto; } .header { flex-direction: column; align-items: center; text-align: center; padding: 20px; } .poster-wrapper { width: 160px; border-radius: 10px; } .info { margin-left: 0; } .episode-list { grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); } .modal-overlay { padding: 8px; } .movie-grid { grid-template-columns: repeat(3, 1fr); gap: 14px; padding: 14px; } .movie-card { border-radius: 10px; } .movie-thumb { border-radius: 10px 10px 0 0; } .series-header { flex-direction: column; text-align: center; } .series-poster { width: 140px; } .series-info h1 { font-size: 20px; } .series-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 12px; } } @media (max-width: 480px) { .movie-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 10px; } .movie-card { border-radius: 10px; } .movie-thumb { border-radius: 10px 10px 0 0; } } /* Settings link */ .settings-link { color: rgba(255,255,255,0.6); text-decoration: none; font-size: 20px; line-height: 1; transition: color 0.2s, transform 0.2s; display: inline-flex; align-items: center; } .settings-link:hover { color: #fff; transform: rotate(60deg); } /* Settings page */ .settings-page { display: flex; justify-content: center; align-items: center; min-height: 300px; padding: 40px 20px; } .settings-box { background: #f9f9f9; border-radius: 12px; padding: 40px; text-align: center; max-width: 400px; width: 100%; box-shadow: 0 2px 12px rgba(0,0,0,0.06); } .settings-title { font-size: 22px; margin-bottom: 24px; color: #333; } .settings-field { display: flex; gap: 8px; } .settings-field input { flex: 1; padding: 12px 16px; border: 2px solid #ddd; border-radius: 8px; font-size: 15px; font-family: inherit; outline: none; transition: border-color 0.2s; } .settings-field input:focus { border-color: #667eea; } .settings-field button { padding: 12px 20px; border: none; border-radius: 8px; background: linear-gradient(135deg, #667eea, #764ba2); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; transition: transform 0.2s; } .settings-field button:hover { transform: translateY(-2px); } .settings-error { color: #e74c3c; font-size: 13px; margin-top: 12px; min-height: 20px; } body.ui-mobile .settings-box { padding: 24px 16px; } body.ui-mobile .settings-field { flex-direction: column; } body.ui-mobile .settings-title { font-size: 18px; } /* Age confirmation modal */ .age-modal-content { max-width: 420px !important; } .age-modal-body { padding: 30px 24px; text-align: center; background: #1a1a1a; } .age-warning-icon { font-size: 48px; color: #ff4444; margin-bottom: 12px; } .age-warning-text { font-size: 20px; font-weight: 700; color: #fff; margin-bottom: 8px; } .age-warning-desc { font-size: 13px; color: #999; margin-bottom: 24px; line-height: 1.5; } .age-buttons { display: flex; gap: 12px; justify-content: center; } .age-btn { padding: 12px 24px; border: none; border-radius: 8px; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; transition: transform 0.2s, box-shadow 0.2s; } .age-btn:hover { transform: translateY(-2px); } .age-btn-yes { background: linear-gradient(135deg, #28a745, #20c997); color: #fff; } .age-btn-yes:hover { box-shadow: 0 4px 16px rgba(40,167,69,0.4); } .age-btn-no { background: linear-gradient(135deg, #dc3545, #c82333); color: #fff; } .age-btn-no:hover { box-shadow: 0 4px 16px rgba(220,53,69,0.4); } body.ui-mobile .age-modal-body { padding: 20px 16px; } body.ui-mobile .age-warning-text { font-size: 17px; } body.ui-mobile .age-btn { font-size: 13px; padding: 10px 16px; } /* Adult card on homepage */ .adult-card { border-bottom: 3px solid #cc0000 !important; } .adult-badge-tag { background: rgba(200,0,0,0.9) !important; } /* Adult mode page (legacy) */ .adult-mode { background: #0d0d0d; } .adult-container { background: rgba(26,26,26,0.82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: 0 4px 20px rgba(255,0,0,0.08); } .adult-header { background: linear-gradient(135deg, #1a0000, #4a0000) !important; } .adult-title { color: #ff4444 !important; text-shadow: 0 0 20px rgba(255,0,0,0.3) !important; } .adult-badge { display: inline-block; background: #ff0000; color: #fff; font-size: 12px; padding: 2px 8px; border-radius: 4px; vertical-align: super; margin-left: 6px; font-weight: 700; letter-spacing: 1px; } .adult-desc { color: rgba(255,100,100,0.7) !important; } .adult-stats { background: #222 !important; border-bottom-color: #333 !important; color: #888 !important; } .adult-stats .stat-item span { color: #ff6666 !important; } .adult-random { border-bottom-color: #333 !important; } .adult-random button { background: linear-gradient(135deg, #cc0000, #660000) !important; } .adult-random button:hover { box-shadow: 0 6px 20px rgba(255,0,0,0.3) !important; } .adult-back-link { background: #222 !important; border-color: #440000 !important; color: #ff6666 !important; } .adult-back-link:hover { border-color: #ff0000 !important; color: #ff4444 !important; } .adult-card { border-bottom: 3px solid #cc0000 !important; } .adult-type-badge { background: rgba(200,0,0,0.9) !important; } .adult-footer { border-top-color: #333 !important; color: #666 !important; } body.ui-mobile.adult-mode { background: #0d0d0d; } /* Light Novel list view */ .ln-list { padding: 16px 20px; display: flex; flex-direction: column; gap: 12px; } .ln-list-item { display: flex; gap: 16px; background: #fff; border-radius: 10px; padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.07); cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; border: 1px solid #eee; } .ln-list-item:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,0.1); } .ln-cover { width: 100px; flex-shrink: 0; border-radius: 6px; overflow: hidden; } .ln-cover img { width: 100%; display: block; aspect-ratio: 3/4; object-fit: cover; background: #222; } .ln-info { flex: 1; min-width: 0; } .ln-title { font-size: 16px; font-weight: 700; margin-bottom: 4px; color: #222; } .ln-author { font-size: 12px; color: #888; margin-bottom: 6px; } .ln-genres { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; } .ln-genre-tag { display: inline-block; padding: 2px 8px; border-radius: 4px; background: #667eea; color: #fff; font-size: 10px; font-weight: 600; } .ln-desc { font-size: 13px; color: #666; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .ln-status { display: inline-block; margin-top: 6px; font-size: 11px; color: #28a745; font-weight: 600; } body.ui-mobile .ln-list { padding: 10px 12px; gap: 10px; } body.ui-mobile .ln-list-item { padding: 10px; } body.ui-mobile .ln-cover { width: 80px; } body.ui-mobile .ln-title { font-size: 14px; } body.ui-mobile .ln-desc { font-size: 12px; -webkit-line-clamp: 1; } /* LN Detail modal */ .ln-detail-content { max-width: 700px !important; } .ln-detail-body { padding: 20px; background: #1a1a1a; max-height: 80vh; overflow-y: auto; } .ln-detail-header { display: flex; gap: 20px; margin-bottom: 24px; } .ln-detail-cover { width: 160px; flex-shrink: 0; border-radius: 8px; aspect-ratio: 3/4; object-fit: cover; background: #222; } .ln-detail-info { flex: 1; min-width: 0; } .ln-detail-info h2 { font-size: 22px; color: #fff; margin-bottom: 6px; } .ln-detail-author { font-size: 13px; color: #aaa; margin-bottom: 8px; } .ln-detail-genres { margin-bottom: 10px; } .ln-detail-desc { font-size: 14px; color: #ccc; line-height: 1.6; margin-bottom: 10px; } .ln-detail-status { font-size: 12px; color: #28a745; font-weight: 600; } .ln-detail-chapters h3 { font-size: 18px; color: #fff; margin-bottom: 12px; border-left: 4px solid #667eea; padding-left: 10px; } .ln-chapter-item { display: flex; gap: 12px; padding: 10px 14px; background: #222; border-radius: 6px; margin-bottom: 6px; cursor: pointer; transition: background 0.2s; align-items: center; } .ln-chapter-item:hover { background: #333; } .ln-ch-num { font-size: 13px; font-weight: 700; color: #667eea; white-space: nowrap; } .ln-ch-title { font-size: 13px; color: #ccc; } body.ui-mobile .ln-detail-body { padding: 14px; } body.ui-mobile .ln-detail-header { flex-direction: column; align-items: center; text-align: center; } body.ui-mobile .ln-detail-cover { width: 130px; } body.ui-mobile .ln-detail-info h2 { font-size: 18px; } /* LN Reader modal */ .ln-reader-content { max-width: 800px !important; max-height: 90vh; display: flex; flex-direction: column; } .ln-reader-body { padding: 24px 28px; background: #f9f7f4; color: #333; line-height: 1.9; font-size: 16px; overflow-y: auto; flex: 1; } .ln-reader-body p { margin-bottom: 16px; text-align: justify; } .ln-reader-body img { max-width: 100%; display: block; margin: 16px auto; border-radius: 4px; } .ln-reader-nav { display: flex; justify-content: space-between; padding: 12px 20px; background: #1a1a1a; gap: 10px; } .ln-reader-btn { padding: 10px 20px; border: none; border-radius: 6px; background: #667eea; color: #fff; font-size: 14px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background 0.2s; } .ln-reader-btn:hover { background: #5a6fd6; } body.ui-mobile .ln-reader-body { padding: 16px 18px; font-size: 15px; } body.ui-mobile .ln-reader-nav { padding: 10px 12px; } body.ui-mobile .ln-reader-btn { font-size: 12px; padding: 8px 14px; } /* Manga list layout */ .manga-list { display: flex; flex-direction: column; gap: 12px; padding: 20px; } .manga-list-item { display: flex; gap: 16px; background: #fff; border-radius: 8px; padding: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.08); transition: transform 0.2s, box-shadow 0.2s; text-decoration: none; color: inherit; } .manga-list-item:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,0.15); } .manga-list-thumb { position: relative; flex: 0 0 96px; width: 96px; aspect-ratio: 3 / 4; background: #222; border-radius: 6px; overflow: hidden; } .manga-list-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; } .manga-list-badge { position: absolute; top: 6px; left: 6px; background: rgba(0,0,0,0.8); color: #fff; font-size: 10px; padding: 2px 6px; border-radius: 3px; text-transform: uppercase; } .manga-list-badge.vi { background: rgba(102,126,234,0.95); } .manga-list-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; } .manga-list-name { font-size: 15px; font-weight: 700; line-height: 1.35; } .manga-list-orig { font-size: 12px; color: #888; font-style: italic; } .manga-list-meta { display: flex; flex-wrap: wrap; gap: 6px; } .manga-list-chip { font-size: 11px; color: #555; background: #f1f1f1; padding: 2px 8px; border-radius: 20px; } .ln-tags { display: flex; flex-wrap: wrap; gap: 6px; } .ln-tag { font-size: 11px; color: #667eea; background: #eef0fb; padding: 2px 8px; border-radius: 20px; } body.adult-mode .manga-list-item { background: #2a2a2a; box-shadow: 0 2px 8px rgba(0,0,0,0.5); } body.adult-mode .manga-list-name { color: #eee; } body.adult-mode .manga-list-orig { color: #999; } body.adult-mode .manga-list-chip { color: #ccc; background: #3a3a3a; } body.adult-mode .ln-tag { color: #9aa8ff; background: #333a55; } body.ui-mobile .manga-list-thumb { flex-basis: 80px; width: 80px; } body.ui-mobile .manga-list-item { gap: 12px; padding: 10px; } /* ===== Home React (av-*) ===== */ body:has(#root) { padding: 0; } #root .container { max-width: 1140px; margin: 0 auto; background: none; box-shadow: none; overflow: visible; } /* Hero */ .av-hero { background: linear-gradient(135deg, #ff9a9e, #fad0c4); color: #2a1a1c; } .av-hero-adult { background: linear-gradient(135deg, #1a0505, #4a0e0e); color: #ffd9d9; } .av-hero-title { font-size: 42px; font-weight: 800; letter-spacing: 1px; margin: 0; } .av-hero-badge { font-size: 13px; font-weight: 700; padding: 4px 12px; border-radius: 20px; } .av-hero-desc { font-size: 16px; opacity: 0.85; margin-bottom: 0; } .av-search { display: flex; gap: 8px; max-width: 480px; margin: 22px auto 0; } .av-search .form-control { border-radius: 24px; padding: 12px 18px; border: none; box-shadow: 0 4px 14px rgba(0,0,0,0.12); } .av-search-btn { border-radius: 24px; padding: 0 18px; background: #667eea; color: #fff; border: none; } .av-search-btn:hover { background: #5568d8; color: #fff; } .av-random-btn { border-radius: 24px; background: #fff; color: #667eea; border: 1px solid #e0e0ff; font-weight: 600; } .av-random-btn:hover { background: #eef0fb; color: #5568d8; } /* Stats */ .av-stats-inner { display: flex; flex-wrap: wrap; gap: 8px 18px; justify-content: center; background: #fff; border-radius: 12px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); padding: 12px 20px; font-size: 13px; color: #555; margin-top: -14px; position: relative; z-index: 2; } .av-stat strong { color: #667eea; } body.adult-mode .av-stats-inner { background: #222; color: #bbb; } body.adult-mode .av-stat strong { color: #9aa8ff; } /* Nav */ .av-nav { gap: 6px; flex-wrap: wrap; } .av-nav .nav-link { border-radius: 20px; padding: 7px 16px; color: #555; font-weight: 600; font-size: 14px; } .av-nav .nav-link.active { background: linear-gradient(135deg, #667eea, #764ba2); color: #fff; } body.adult-mode .av-nav .nav-link { color: #bbb; } body.adult-mode .av-nav .nav-link.active { background: #8a0e0e; } /* Movie card */ .av-card { display: block; text-decoration: none; color: inherit; } .av-card:hover { color: inherit; } .av-card-thumb { position: relative; border-radius: 10px; overflow: hidden; aspect-ratio: 3 / 4; background: #222; box-shadow: 0 4px 12px rgba(0,0,0,0.12); transition: transform 0.25s; } .av-card:hover .av-card-thumb { transform: translateY(-3px); } .av-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } .av-badge { position: absolute; top: 6px; left: 6px; font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 6px; background: rgba(102,126,234,0.95); color: #fff; } .av-badge-ep { left: auto; right: 6px; background: rgba(0,0,0,0.7); color: #fff; max-width: calc(100% - 60px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .av-badge-adult { background: #e11; } .av-card-body { padding: 8px 2px 0; } .av-card-title { font-size: 13px; font-weight: 600; margin: 0; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.7em; } .av-card-orig { font-size: 11px; color: #888; margin: 3px 0 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Manga row */ .av-manga-list { display: flex; flex-direction: column; gap: 14px; } .av-manga-row { display: flex; gap: 16px; text-decoration: none; color: inherit; background: #fff; border-radius: 12px; padding: 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.06); transition: all 0.2s; } .av-manga-row:hover { box-shadow: 0 6px 18px rgba(0,0,0,0.12); transform: translateY(-2px); color: inherit; } .av-manga-thumb { position: relative; flex-shrink: 0; width: 72px; border-radius: 8px; overflow: hidden; aspect-ratio: 3 / 4; background: #222; } .av-manga-thumb img { width: 100%; height: 100%; object-fit: cover; } .av-manga-badge { position: absolute; left: 4px; bottom: 4px; font-size: 9px; font-weight: 700; padding: 1px 6px; border-radius: 5px; background: #e22; color: #fff; } .av-manga-badge.vi { background: #28a745; } .av-manga-info { min-width: 0; flex: 1; } .av-manga-name { font-size: 15px; font-weight: 700; margin: 0; } .av-manga-orig { font-size: 12px; color: #888; margin: 2px 0 6px; } .av-manga-meta { display: flex; flex-wrap: wrap; gap: 6px; } .av-chip { font-size: 11px; color: #555; background: #f1f1f1; padding: 2px 9px; border-radius: 20px; } .av-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; } .av-tag { font-size: 10px; color: #667eea; background: #eef0fb; padding: 2px 8px; border-radius: 20px; } body.adult-mode .av-manga-row { background: #2a2a2a; } body.adult-mode .av-manga-name { color: #eee; } body.adult-mode .av-manga-orig { color: #999; } body.adult-mode .av-chip { color: #ccc; background: #3a3a3a; } body.adult-mode .av-tag { color: #9aa8ff; background: #333a55; } /* Light Novel */ .av-ln-list { display: flex; flex-direction: column; gap: 12px; } .av-ln-row { display: flex; gap: 16px; cursor: pointer; background: #fff; border-radius: 12px; padding: 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.06); transition: all 0.2s; } .av-ln-row:hover { box-shadow: 0 6px 18px rgba(0,0,0,0.12); transform: translateY(-2px); } .av-ln-cover { flex-shrink: 0; width: 60px; border-radius: 8px; overflow: hidden; aspect-ratio: 3 / 4; background: #222; } .av-ln-cover img { width: 100%; height: 100%; object-fit: cover; } .av-ln-info { flex: 1; min-width: 0; } .av-ln-title { font-size: 15px; font-weight: 700; margin: 0; } .av-ln-author { font-size: 12px; color: #888; margin: 2px 0 6px; } .av-ln-desc { font-size: 12px; color: #666; line-height: 1.5; margin: 6px 0 0; } body.adult-mode .av-ln-row { background: #2a2a2a; } body.adult-mode .av-ln-title { color: #eee; } body.adult-mode .av-ln-author { color: #999; } body.adult-mode .av-ln-desc { color: #bbb; } /* LN modal */ .av-ln-modal { position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 1050; padding: 20px; overflow-y: auto; } .av-ln-modal .modal-dialog { margin: 0 auto; max-width: 720px; } .av-ln-modal-content { border-radius: 14px; } .av-ln-cover-lg { width: 150px; border-radius: 10px; aspect-ratio: 3 / 4; object-fit: cover; flex-shrink: 0; box-shadow: 0 4px 12px rgba(0,0,0,0.2); } /* ============ Dark theme (site-wide, non-adult) ============ */ body:not(.adult-mode):not(.reader-mode) { background: #0f0f1a; color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .container { background: rgba(22,24,43,0.82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: 0 4px 24px rgba(0,0,0,0.45); border: 1px solid rgba(140,120,220,0.12); } body:not(.adult-mode):not(.reader-mode) .header { background: linear-gradient(135deg, #2b1d54 0%, #6a2c91 60%, #a3419f 100%); color: #fff; } body:not(.adult-mode):not(.reader-mode) .info { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .info h1 { color: #fff; } body:not(.adult-mode):not(.reader-mode) .alt-title { color: #b9bede; } body:not(.adult-mode):not(.reader-mode) .info-table td { color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .info-table .label { color: #a9aed0; } body:not(.adult-mode):not(.reader-mode) .description { color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .detail-item { background: #1e2136; color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .episodes { background: #14162a; } body:not(.adult-mode):not(.reader-mode) .episodes h2 { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .lang-note { background: #2a2f4e; color: #ffd75e; border: 1px solid #4a4f75; } body:not(.adult-mode):not(.reader-mode) .episode-card { background: #1e2136; border: 1px solid #2a2e4a; color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .episode-card:hover { background: #242850; border-color: #6a2c91; box-shadow: 0 6px 16px rgba(0,0,0,0.35); } body:not(.adult-mode):not(.reader-mode) .ep-num { color: #ff9aa9; } body:not(.adult-mode):not(.reader-mode) .back-link { color: #a78bfa; border-color: rgba(140,120,220,0.3); } body:not(.adult-mode):not(.reader-mode) .back-link:hover { color: #ff9aa9; border-color: #6a2c91; } body:not(.adult-mode):not(.reader-mode) .footer { color: #9aa0bf; border-top: 1px solid #232640; } body:not(.adult-mode):not(.reader-mode) .tag-chip { background: #1e2136; color: #b9bede; border: 1px solid #2a2e4a; } body:not(.adult-mode):not(.reader-mode) .tags-row { border-top-color: #232640; } body:not(.adult-mode):not(.reader-mode) .series-header { background: linear-gradient(135deg, #2b1d54, #4a2a7a); } body:not(.adult-mode):not(.reader-mode) .series-info h1 { color: #fff; } body:not(.adult-mode):not(.reader-mode) .series-desc { color: #b9bede; } body:not(.adult-mode):not(.reader-mode) .series-card { background: #1e2136; border-color: #232640; } body:not(.adult-mode):not(.reader-mode) .series-card:hover { box-shadow: 0 8px 20px rgba(0,0,0,0.4); } body:not(.adult-mode):not(.reader-mode) .series-card-body h3 { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .series-card-body p { color: #9aa0bf; } body:not(.adult-mode):not(.reader-mode) .movie-card { background: #1e2136; border: 1px solid #2a2e4a; box-shadow: 0 4px 14px rgba(0,0,0,0.35); } body:not(.adult-mode):not(.reader-mode) .movie-card:hover { border-color: #6a2c91; box-shadow: 0 14px 30px rgba(0,0,0,0.45); } body:not(.adult-mode):not(.reader-mode) .movie-title { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .movie-original { color: #9aa0bf; } body:not(.adult-mode):not(.reader-mode) .manga-list-item { background: #1e2136; border: 1px solid #2a2e4a; box-shadow: 0 3px 10px rgba(0,0,0,0.35); } body:not(.adult-mode):not(.reader-mode) .manga-list-item:hover { border-color: #6a2c91; } body:not(.adult-mode):not(.reader-mode) .manga-list-name { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .manga-list-orig { color: #9aa0bf; } body:not(.adult-mode):not(.reader-mode) .manga-list-chip { background: #2a2f4e; color: #b9bede; } body:not(.adult-mode):not(.reader-mode) .ln-list-item { background: #1e2136; border-color: #2a2e4a; } body:not(.adult-mode):not(.reader-mode) .ln-list-name { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .ln-list-orig { color: #9aa0bf; } body:not(.adult-mode):not(.reader-mode) .ln-tag { background: #2a2f4e; color: #b9bede; } body:not(.adult-mode):not(.reader-mode) .pg-btn { background: #1e2136; border: 1px solid #2a2e4a; color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .pg-btn:hover:not(.disabled):not(.active) { background: #242850; border-color: #6a2c91; } body:not(.adult-mode):not(.reader-mode) .pg-btn.active { background: linear-gradient(135deg, #2b1d54, #6a2c91); color: #fff; } body:not(.adult-mode):not(.reader-mode) .pg-btn.disabled { color: #5a5f7e; background: #16182b; } body:not(.adult-mode):not(.reader-mode) .settings-box { background: #1e2136; } body:not(.adult-mode):not(.reader-mode) .settings-title { color: #e4e6f5; } body:not(.adult-mode):not(.reader-mode) .settings-field input { background: #16182b; color: #e4e6f5; border-color: #2a2e4a; } body:not(.adult-mode):not(.reader-mode) .donate-header, body:not(.adult-mode):not(.reader-mode) .donate-desc, body:not(.adult-mode):not(.reader-mode) .donate-content { color: #cfd3e8; } body:not(.adult-mode):not(.reader-mode) .gallery-section { background: #14162a; } body:not(.adult-mode):not(.reader-mode) .home-nav { background: #16182b; border-bottom-color: #232640; } body:not(.adult-mode):not(.reader-mode) .home-nav a { color: #b9bede; } body:not(.adult-mode):not(.reader-mode) .home-nav a:hover, body:not(.adult-mode):not(.reader-mode) .home-nav a.active { background: #6a2c91; color: #fff; } body:not(.adult-mode):not(.reader-mode) .stats-bar { background: #14162a; border-bottom-color: #232640; color: #9aa0bf; } body:not(.adult-mode):not(.reader-mode) .stats-bar .stat-item span { color: #ff9aa9; } body:not(.adult-mode):not(.reader-mode) .search-box input { background: #16182b; color: #e4e6f5; } /* ===== Stage-1 poster-grid wallpaper (site-wide) ===== */ body::before { content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none; background-color: #151515; background-image: url("https://phim.nguonc.com/public/images/Film/76.jpg"), url("https://phim.nguonc.com/public/images/Film/666.jpg"), url("https://phim.nguonc.com/public/images/Film/77.jpg"), url("https://phim.nguonc.com/public/images/Film/667.jpg"), url("https://phim.nguonc.com/public/images/Film/259.jpg"), url("https://phim.nguonc.com/public/images/Film/2738.jpg"), url("https://phim.nguonc.com/public/images/Film/3485.jpg"), url("https://phim.nguonc.com/public/images/Film/141438.jpg"), url("https://phim.nguonc.com/public/images/Film/date-a-bullet-thumb.jpg"), url("https://phim.nguonc.com/public/images/Film/3103.jpg"), url("https://phim.nguonc.com/public/images/Post/5/aishiteru-game-wo-owarasetai.jpg"), url("https://phim.nguonc.com/public/images/Film/541.jpg"), url("https://phim.nguonc.com/public/images/Film/536.jpg"), url("https://phim.nguonc.com/public/images/Film/56167.jpg"), url("https://phim.nguonc.com/public/images/Film/56643.jpg"), url("https://phim.nguonc.com/public/images/Film/538.jpg"), url("https://phim.nguonc.com/public/images/Film/540.jpg"), url("https://phim.nguonc.com/public/images/Film/60351.jpg"), url("https://phim.nguonc.com/public/images/Film/2607.jpg"), url("https://phim.nguonc.com/public/images/Film/2661.jpg"), url("https://phim.nguonc.com/public/images/Film/5MgMCnslrxQfOfaq6T5ndkLlcCk.jpg"), url("https://phim.nguonc.com/public/images/Film/134808.jpg"), url("https://phim.nguonc.com/public/images/Film/138379.jpg"), url("https://phim.nguonc.com/public/images/Post/9/seishun-buta-yarou-wa-santa-claus-no-yume-wo-minai-1.jpg"); background-size: 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%, 12.5% 33.333%; background-position: 0% 0%, 14.2857% 0%, 28.5714% 0%, 42.8571% 0%, 57.1429% 0%, 71.4286% 0%, 85.7143% 0%, 100% 0%, 0% 50%, 14.2857% 50%, 28.5714% 50%, 42.8571% 50%, 57.1429% 50%, 71.4286% 50%, 85.7143% 50%, 100% 50%, 0% 100%, 14.2857% 100%, 28.5714% 100%, 42.8571% 100%, 57.1429% 100%, 71.4286% 100%, 85.7143% 100%, 100% 100%; background-repeat: no-repeat; filter: brightness(0.42) saturate(0.65); } body::after { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(21,21,21,0.55), rgba(21,21,21,0.78) 68%, #151515 100%), radial-gradient(120% 90% at 50% 0%, rgba(21,21,21,0) 42%, rgba(21,21,21,0.5) 100%); }