| :root { |
| --yt-bg: #0f0f0f; |
| --yt-surface: #212121; |
| --yt-text: #f1f1f1; |
| --yt-muted: #aaaaaa; |
| --yt-accent: #3ea6ff; |
| --yt-red: #ff4e45; |
| --yt-green: #2ba640; |
| font-family: Roboto, Arial, sans-serif; |
| color: var(--yt-text); |
| background: var(--yt-bg); |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| body { |
| margin: 0; |
| min-height: 100vh; |
| } |
|
|
| .app-shell { |
| display: flex; |
| min-height: 100vh; |
| } |
|
|
| .sidebar { |
| width: 240px; |
| background: #0f0f0f; |
| border-right: 1px solid #303030; |
| padding: 1rem 0.75rem; |
| display: flex; |
| flex-direction: column; |
| gap: 0.25rem; |
| flex-shrink: 0; |
| } |
|
|
| .logo { |
| font-weight: 700; |
| font-size: 0.95rem; |
| padding: 0.5rem 0.75rem 1rem; |
| color: #fff; |
| word-break: break-word; |
| } |
|
|
| .nav { |
| color: var(--yt-muted); |
| text-decoration: none; |
| padding: 0.6rem 0.75rem; |
| border-radius: 10px; |
| font-size: 0.9rem; |
| } |
|
|
| .nav:hover, |
| .nav.active { |
| background: #272727; |
| color: #fff; |
| } |
|
|
| .main-content { |
| flex: 1; |
| overflow-x: hidden; |
| } |
|
|
| .watch-page { |
| padding: 1.5rem 1.5rem 3rem; |
| } |
|
|
| .watch-grid { |
| display: grid; |
| grid-template-columns: 1fr 400px; |
| gap: 1.5rem; |
| align-items: start; |
| } |
|
|
| @media (max-width: 1100px) { |
| .watch-grid { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| .staged-player { |
| width: 100%; |
| aspect-ratio: 16 / 9; |
| background: #000; |
| border-radius: 12px; |
| overflow: hidden; |
| } |
|
|
| .player-poster { |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%); |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| justify-content: center; |
| gap: 0.75rem; |
| } |
|
|
| .player-hint { |
| color: var(--yt-muted); |
| font-size: 0.9rem; |
| margin: 0; |
| } |
|
|
| .player-iframe { |
| width: 100%; |
| height: 100%; |
| border: 0; |
| display: block; |
| } |
|
|
| .player-fallback { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| justify-content: center; |
| width: 100%; |
| height: 100%; |
| text-decoration: none; |
| color: inherit; |
| position: relative; |
| background: #000; |
| } |
|
|
| .player-fallback-thumb { |
| width: 100%; |
| height: 100%; |
| object-fit: cover; |
| opacity: 0.75; |
| } |
|
|
| .player-fallback-cta { |
| position: absolute; |
| bottom: 1rem; |
| background: rgba(0, 0, 0, 0.85); |
| padding: 0.5rem 1rem; |
| border-radius: 8px; |
| font-size: 0.9rem; |
| color: var(--yt-accent); |
| } |
|
|
| .play-icon { |
| width: 68px; |
| height: 48px; |
| background: rgba(255, 255, 255, 0.9); |
| color: #000; |
| border-radius: 12px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 1.25rem; |
| } |
|
|
| .video-title { |
| font-size: 1.25rem; |
| font-weight: 600; |
| margin: 0.75rem 0 0.35rem; |
| line-height: 1.4; |
| word-break: break-word; |
| display: -webkit-box; |
| -webkit-line-clamp: 3; |
| -webkit-box-orient: vertical; |
| overflow: hidden; |
| } |
|
|
| .video-meta { |
| color: var(--yt-muted); |
| font-size: 0.85rem; |
| margin: 0; |
| } |
|
|
| .channel-row { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| margin: 1rem 0; |
| padding-bottom: 1rem; |
| border-bottom: 1px solid #303030; |
| } |
|
|
| .channel-avatar { |
| width: 40px; |
| height: 40px; |
| border-radius: 50%; |
| background: var(--yt-red); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-weight: 700; |
| } |
|
|
| .channel-name { |
| margin: 0; |
| font-weight: 500; |
| } |
|
|
| .info-banner { |
| font-size: 0.85rem; |
| color: var(--yt-muted); |
| background: #1a2a3a; |
| border: 1px solid #303030; |
| border-radius: 8px; |
| padding: 0.6rem 0.85rem; |
| margin: 0.5rem 0 0.75rem; |
| } |
|
|
| .info-banner.dismissible { |
| display: flex; |
| align-items: flex-start; |
| justify-content: space-between; |
| gap: 0.75rem; |
| color: var(--yt-text); |
| } |
|
|
| .btn-dismiss { |
| background: transparent; |
| border: none; |
| color: var(--yt-muted); |
| font-size: 1.25rem; |
| line-height: 1; |
| cursor: pointer; |
| padding: 0 0.25rem; |
| } |
|
|
| .btn-dismiss:hover { |
| color: var(--yt-text); |
| } |
|
|
| .loading-comments { |
| color: var(--yt-muted); |
| font-size: 0.9rem; |
| margin: 0.5rem 0; |
| } |
|
|
| .comments-header { |
| font-size: 1rem; |
| font-weight: 600; |
| margin-bottom: 1rem; |
| } |
|
|
| .toxic-count { |
| color: var(--yt-red); |
| font-weight: 500; |
| font-size: 0.85rem; |
| } |
|
|
| .comment-compose textarea { |
| width: 100%; |
| background: transparent; |
| border: none; |
| border-bottom: 1px solid #303030; |
| color: var(--yt-text); |
| font-size: 0.95rem; |
| resize: vertical; |
| padding: 0.5rem 0; |
| font-family: inherit; |
| } |
|
|
| .comment-compose textarea:focus { |
| outline: none; |
| border-bottom-color: var(--yt-accent); |
| } |
|
|
| .live-analysis { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 0.5rem 1rem; |
| align-items: center; |
| font-size: 0.85rem; |
| margin: 0.5rem 0; |
| color: var(--yt-muted); |
| } |
|
|
| .compose-actions { |
| display: flex; |
| justify-content: flex-end; |
| gap: 0.5rem; |
| margin-top: 0.75rem; |
| } |
|
|
| .btn-primary, |
| .btn-secondary, |
| .btn-danger { |
| border: none; |
| border-radius: 999px; |
| padding: 0.5rem 1rem; |
| font-weight: 500; |
| cursor: pointer; |
| font-size: 0.9rem; |
| } |
|
|
| .btn-primary { |
| background: #3f3f3f; |
| color: #fff; |
| } |
|
|
| .btn-primary:hover { |
| background: #525252; |
| } |
|
|
| .btn-secondary { |
| background: transparent; |
| color: var(--yt-accent); |
| } |
|
|
| .btn-danger { |
| background: var(--yt-red); |
| color: #fff; |
| } |
|
|
| .badge { |
| font-size: 0.7rem; |
| font-weight: 700; |
| padding: 2px 8px; |
| border-radius: 4px; |
| text-transform: uppercase; |
| } |
|
|
| .badge-safe { |
| background: rgba(43, 166, 64, 0.2); |
| color: var(--yt-green); |
| } |
|
|
| .badge-toxic { |
| background: rgba(255, 78, 69, 0.2); |
| color: var(--yt-red); |
| } |
|
|
| .comment-list { |
| margin-top: 1.5rem; |
| } |
|
|
| .comment-row { |
| display: flex; |
| gap: 0.75rem; |
| padding: 0.75rem 0; |
| border-bottom: 1px solid #222; |
| } |
|
|
| .avatar { |
| width: 40px; |
| height: 40px; |
| border-radius: 50%; |
| background: #717171; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-weight: 600; |
| flex-shrink: 0; |
| } |
|
|
| .avatar.toxic { |
| background: #5c1a1a; |
| } |
|
|
| .comment-meta { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 0.35rem 0.75rem; |
| align-items: center; |
| font-size: 0.8rem; |
| } |
|
|
| .comment-user { |
| font-weight: 500; |
| color: var(--yt-text); |
| } |
|
|
| .comment-time, |
| .comment-pct { |
| color: var(--yt-muted); |
| } |
|
|
| .comment-text { |
| margin: 0.35rem 0 0; |
| line-height: 1.45; |
| font-size: 0.9rem; |
| } |
|
|
| .flagged { |
| color: var(--yt-red); |
| font-size: 0.8rem; |
| margin: 0.25rem 0 0; |
| } |
|
|
| .comment-labels { |
| font-size: 0.75rem; |
| color: var(--yt-muted); |
| margin: 0.2rem 0 0; |
| } |
|
|
| .suggested-rail { |
| display: flex; |
| flex-direction: column; |
| gap: 0.5rem; |
| } |
|
|
| .rail-title { |
| font-weight: 600; |
| margin: 0 0 0.5rem; |
| } |
|
|
| .suggested-card { |
| display: flex; |
| gap: 0.5rem; |
| background: transparent; |
| border: none; |
| color: inherit; |
| text-align: left; |
| cursor: pointer; |
| padding: 0.25rem; |
| border-radius: 8px; |
| width: 100%; |
| } |
|
|
| .suggested-card:hover, |
| .suggested-card.active { |
| background: #272727; |
| } |
|
|
| .suggested-thumb { |
| width: 168px; |
| height: 94px; |
| object-fit: cover; |
| border-radius: 8px; |
| flex-shrink: 0; |
| background: #333; |
| } |
|
|
| .suggested-title { |
| font-size: 0.85rem; |
| font-weight: 500; |
| margin: 0; |
| display: -webkit-box; |
| -webkit-line-clamp: 2; |
| -webkit-box-orient: vertical; |
| overflow: hidden; |
| } |
|
|
| .suggested-channel { |
| font-size: 0.75rem; |
| color: var(--yt-muted); |
| margin: 0.25rem 0 0; |
| } |
|
|
| .loading-tag { |
| font-size: 0.7rem; |
| color: var(--yt-accent); |
| } |
|
|
| .embed-badge { |
| display: inline-block; |
| font-size: 0.65rem; |
| color: var(--yt-muted); |
| margin-top: 0.2rem; |
| } |
|
|
| .model-unavailable { |
| opacity: 0.55; |
| cursor: not-allowed; |
| } |
|
|
| .model-reason { |
| font-size: 0.75rem; |
| color: var(--yt-muted); |
| font-weight: normal; |
| } |
|
|
| .error-banner, |
| .error-text { |
| color: var(--yt-red); |
| font-size: 0.85rem; |
| } |
|
|
| .settings-page, |
| .hub-page { |
| padding: 1.5rem 2rem 3rem; |
| max-width: 960px; |
| } |
|
|
| .settings-card, |
| .chart-box, |
| .hub-stat { |
| background: var(--yt-surface); |
| border-radius: 12px; |
| padding: 1.25rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .hint { |
| color: var(--yt-muted); |
| font-size: 0.85rem; |
| } |
|
|
| .model-list { |
| display: flex; |
| flex-direction: column; |
| gap: 0.5rem; |
| } |
|
|
| .model-option { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| cursor: pointer; |
| } |
|
|
| .settings-msg { |
| color: var(--yt-accent); |
| font-size: 0.9rem; |
| } |
|
|
| .hub-cards { |
| display: grid; |
| grid-template-columns: repeat(3, 1fr); |
| gap: 1rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .stat-label { |
| display: block; |
| color: var(--yt-muted); |
| font-size: 0.8rem; |
| } |
|
|
| .stat-value { |
| font-size: 1.5rem; |
| font-weight: 700; |
| } |
|
|
| .hub-charts { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 1rem; |
| } |
|
|
| @media (max-width: 800px) { |
| .hub-charts, |
| .hub-cards { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| .hub-table { |
| width: 100%; |
| border-collapse: collapse; |
| font-size: 0.85rem; |
| } |
|
|
| .hub-table th, |
| .hub-table td { |
| text-align: left; |
| padding: 0.5rem; |
| border-bottom: 1px solid #333; |
| } |
|
|
| .hub-table-wrap { |
| background: var(--yt-surface); |
| border-radius: 12px; |
| padding: 1rem; |
| } |
|
|