-
- {{ episode.episode_num }}.
- {{ episode.title }}
-
+
+
+ {{ episode.episode_num }}.
+ {{ episode.title }}
+
+ @if (episodeInfo?.plot) {
+
+ }
+
@if (episodeInfo?.plot) {
{{ episodeInfo?.plot }}
diff --git a/libs/ui/components/src/lib/season-container/season-container.component.scss b/libs/ui/components/src/lib/season-container/season-container.component.scss
index 5a2ad58f6..1a38962d1 100644
--- a/libs/ui/components/src/lib/season-container/season-container.component.scss
+++ b/libs/ui/components/src/lib/season-container/season-container.component.scss
@@ -305,21 +305,26 @@ app-season-tabs {
.download-btn,
.toggle-watched-btn {
- color: rgba(255, 255, 255, 0.7);
- background: rgba(0, 0, 0, 0.5);
- width: 32px;
- height: 32px;
- padding: 4px;
+ color: rgba(255, 255, 255, 0.75);
+ background: rgba(0, 0, 0, 0.6);
+ border: 1px solid rgba(255, 255, 255, 0.14);
+ width: 28px;
+ height: 28px;
+ padding: 0;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
&:hover {
color: white;
- background: rgba(0, 0, 0, 0.8);
+ background: rgba(0, 0, 0, 0.85);
}
mat-icon {
- font-size: 20px;
- width: 20px;
- height: 20px;
+ font-size: 17px;
+ width: 17px;
+ height: 17px;
+ line-height: 17px;
}
}
@@ -382,10 +387,19 @@ app-season-tabs {
padding: 12px;
}
+ &__title-row {
+ display: flex;
+ align-items: flex-start;
+ gap: 4px;
+ margin-bottom: 4px;
+ }
+
&__title {
+ flex: 1;
+ min-width: 0;
font-size: 0.875rem;
font-weight: 600;
- margin: 0 0 4px 0;
+ margin: 0;
color: var(--text-primary);
line-height: 1.4;
white-space: nowrap;
@@ -393,6 +407,50 @@ app-season-tabs {
text-overflow: ellipsis;
}
+ // "About the episode" lives with the text, not on the artwork: a quiet
+ // ghost button at the end of the title row, revealed on card hover.
+ &__info-btn {
+ flex: none;
+ width: 22px;
+ height: 22px;
+ padding: 0;
+ margin: -1px -2px 0 0;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ color: var(--text-muted);
+ opacity: 0;
+ transition:
+ opacity 0.2s ease,
+ color 0.2s ease;
+
+ mat-icon {
+ font-size: 17px;
+ width: 17px;
+ height: 17px;
+ line-height: 17px;
+ }
+
+ &:hover {
+ color: var(--text-primary);
+ }
+
+ &:focus-visible {
+ opacity: 1;
+ }
+
+ // The default 48px MDC touch target would swallow clicks on the
+ // title around this tiny button (card click = play).
+ ::ng-deep .mat-mdc-button-touch-target {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ &:hover .episode-card__info-btn {
+ opacity: 1;
+ }
+
&__plot {
font-size: 0.75rem;
color: var(--text-secondary);