: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; }