/** * Microsub Reader Styles * Inspired by Aperture/Monocle */ /* ========================================================================== Reader Layout ========================================================================== */ .ms-reader { display: flex; flex-direction: column; gap: var(--space-m); } .ms-reader__header { align-items: center; display: flex; flex-wrap: wrap; gap: var(--space-s); justify-content: space-between; } .ms-reader__actions { display: flex; flex-wrap: wrap; gap: var(--space-xs); } /* ========================================================================== Channel List ========================================================================== */ .ms-reader__channels { display: flex; flex-direction: column; gap: var(--space-xs); } .ms-reader__channel { align-items: center; background: var(--color-offset); border-radius: var(--border-radius-small); color: inherit; display: flex; gap: var(--space-s); padding: var(--space-s) var(--space-m); text-decoration: none; transition: background-color 0.2s ease, box-shadow 0.2s ease; } .ms-reader__channel:hover { background: var(--color-offset-variant); } .ms-reader__channel--active { background: var(--color-primary); color: var(--color-background); } .ms-reader__channel-name { flex: 1; font-weight: 500; } .ms-reader__channel-badge { align-items: center; background: var(--color-primary); border-radius: 0.75rem; color: var(--color-background); display: inline-flex; font-size: var(--font-size-s); font-weight: 600; height: 1.5rem; justify-content: center; min-width: 1.5rem; padding: 0 var(--space-xs); } .ms-reader__channel--active .ms-reader__channel-badge { background: var(--color-background); color: var(--color-primary); } /* Dot indicator for boolean unread state */ .ms-reader__channel-badge--dot { height: 0.75rem; min-width: 0.75rem; padding: 0; width: 0.75rem; } /* ========================================================================== Timeline ========================================================================== */ .ms-timeline { display: flex; flex-direction: column; gap: var(--space-m); } .ms-timeline__paging { border-top: var(--border-width-thin) solid var(--color-offset); display: flex; gap: var(--space-m); justify-content: space-between; padding-top: var(--space-m); } /* ========================================================================== Item Card ========================================================================== */ .ms-item-card { background: var(--color-background); border: var(--border-width-thin) solid var(--color-offset); border-radius: var(--border-radius-small); display: block; overflow: hidden; transition: box-shadow 0.2s ease, transform 0.1s ease; } .ms-item-card:hover { border-color: var(--color-offset-variant); } /* Unread state - yellow glow (Aperture pattern) */ .ms-item-card:not(.ms-item-card--read) { border-color: hsl(var(--tint-yellow) 50% / 0.5); box-shadow: 0 0 10px 0 hsl(var(--tint-yellow) 50% / 0.8); } .ms-item-card--read { opacity: 0.85; } .ms-item-card__link { color: inherit; display: block; padding: var(--space-m); text-decoration: none; } /* Author */ .ms-item-card__author { align-items: center; display: flex; gap: var(--space-s); margin-bottom: var(--space-s); } .ms-item-card__avatar-wrap { flex-shrink: 0; height: 40px; position: relative; width: 40px; } .ms-item-card__avatar-wrap > img { position: absolute; inset: 0; z-index: 1; } .ms-item-card__author-photo { border: var(--border-width-thin) solid var(--color-offset); border-radius: 50%; height: 40px; object-fit: cover; width: 40px; } .ms-item-card__author-photo--default { align-items: center; background: var(--color-offset); border-radius: 50%; color: var(--color-on-offset); display: flex; font-size: var(--font-size-s); font-weight: 600; height: 40px; justify-content: center; width: 40px; } .ms-item-card__author-info { display: flex; flex-direction: column; min-width: 0; } .ms-item-card__author-name { font-size: var(--font-size-m); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ms-item-card__source { color: var(--color-on-offset); font-size: var(--font-size-s); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Post type indicator */ .ms-item-card__type { align-items: center; background: var(--color-offset); border-radius: var(--border-radius-small); color: var(--color-on-offset); display: inline-flex; font-size: var(--font-size-s); gap: var(--space-xs); margin-bottom: var(--space-s); padding: var(--space-xs) var(--space-s); } .ms-item-card__type svg { height: 1em; width: 1em; } /* Context bar for interactions (Aperture pattern) */ .ms-item-card__context { align-items: center; background: var(--color-offset); display: flex; font-size: var(--font-size-s); gap: var(--space-xs); margin: calc(-1 * var(--space-m)); margin-bottom: var(--space-s); padding: var(--space-s) var(--space-m); } .ms-item-card__context a { color: var(--color-primary); text-decoration: none; } .ms-item-card__context a:hover { text-decoration: underline; } .ms-item-card__context svg { flex-shrink: 0; height: 1em; width: 1em; } /* Title */ .ms-item-card__title { font-size: var(--font-size-l); font-weight: 600; line-height: 1.3; margin-bottom: var(--space-xs); } /* Content with expandable overflow (Aperture pattern) */ .ms-item-card__content { color: var(--color-on-background); line-height: 1.5; margin-bottom: var(--space-s); max-height: 200px; overflow: hidden; position: relative; } .ms-item-card__content--expanded { max-height: none; } .ms-item-card__content--truncated::after { background: linear-gradient(to bottom, transparent, var(--color-background)); bottom: 0; content: ""; height: 60px; left: 0; pointer-events: none; position: absolute; right: 0; } .ms-item-card__read-more { color: var(--color-primary); cursor: pointer; display: block; font-size: var(--font-size-s); padding: var(--space-xs); text-align: center; } /* Photo grid (Aperture multi-photo pattern) */ .ms-item-card__photos { border-radius: var(--border-radius-small); display: grid; gap: 2px; margin-bottom: var(--space-s); overflow: hidden; } /* Single photo */ .ms-item-card__photos--1 { grid-template-columns: 1fr; } /* 2 photos - side by side */ .ms-item-card__photos--2 { grid-template-columns: 1fr 1fr; } /* 3 photos - one large, two small */ .ms-item-card__photos--3 { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; } /* 4+ photos - grid */ .ms-item-card__photos--4 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; } /* Base photo styles - must come before specific overrides */ .ms-item-card__photo { background: var(--color-offset); height: 150px; object-fit: cover; width: 100%; } .ms-item-card__photos--1 .ms-item-card__photo { height: auto; max-height: 400px; } .ms-item-card__photos--3 .ms-item-card__photo:first-child { grid-row: 1 / 3; height: 302px; } /* Video/Audio */ .ms-item-card__video, .ms-item-card__audio { border-radius: var(--border-radius-small); margin-bottom: var(--space-s); width: 100%; } /* Footer */ .ms-item-card__footer { align-items: center; border-top: var(--border-width-thin) solid var(--color-offset); color: var(--color-on-offset); display: flex; font-size: var(--font-size-s); justify-content: space-between; padding-top: var(--space-s); } .ms-item-card__date { color: inherit; } .ms-item-card__unread { color: var(--color-yellow50); font-size: 0.75rem; } /* Categories/Tags */ .ms-item-card__categories { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-bottom: var(--space-s); } .ms-item-card__category { background: var(--color-offset); border-radius: var(--border-radius-small); color: var(--color-on-offset); display: inline-block; font-size: var(--font-size-s); padding: 2px var(--space-xs); } /* ========================================================================== Item Actions (inline on cards) ========================================================================== */ .ms-item-actions { border-top: var(--border-width-thin) solid var(--color-offset); display: flex; flex-wrap: wrap; gap: var(--space-s); padding: var(--space-s) var(--space-m); } .ms-item-actions__button { align-items: center; background: transparent; border: var(--border-width-thin) solid var(--color-offset); border-radius: var(--border-radius-small); color: var(--color-on-offset); cursor: pointer; display: inline-flex; font-size: var(--font-size-s); gap: var(--space-xs); padding: var(--space-xs) var(--space-s); text-decoration: none; transition: all 0.2s ease; } .ms-item-actions__button:hover { background: var(--color-offset); border-color: var(--color-offset-variant); color: var(--color-on-background); } .ms-item-actions__button svg { height: 1em; width: 1em; } .ms-item-actions__button--primary { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-background); } .ms-item-actions__button--primary:hover { background: var(--color-primary-variant); border-color: var(--color-primary-variant); color: var(--color-background); } /* Mark as read — split button group */ .ms-item-actions__mark-read-group { display: inline-flex; margin-left: auto; position: relative; } .ms-item-actions__mark-read-group .ms-item-actions__mark-read { border-bottom-right-radius: 0; border-right: 0; border-top-right-radius: 0; margin-left: 0; } .ms-item-actions__mark-read-caret { border-bottom-left-radius: 0; border-top-left-radius: 0; font-size: 0.625rem; padding: var(--space-xs) 6px; } .ms-item-actions__mark-read-popover { background: var(--color-background); border: var(--border-width-thin) solid var(--color-offset-variant); border-radius: var(--border-radius-small); bottom: calc(100% + 4px); box-shadow: 0 2px 8px hsl(var(--tint-neutral) 10% / 0.15); padding: var(--space-xs); position: absolute; right: 0; white-space: nowrap; z-index: 10; } .ms-item-actions__mark-source-read { background: transparent; border: 0; border-radius: var(--border-radius-small); color: var(--color-on-background); cursor: pointer; font-size: var(--font-size-s); padding: var(--space-xs) var(--space-s); text-align: left; width: 100%; } .ms-item-actions__mark-source-read:hover { background: var(--color-offset); } /* Mark as read button (standalone, no split group) */ .ms-item-actions__mark-read { margin-left: auto; } /* Save for later button */ .ms-item-actions__save-later--saved { color: var(--color-primary-on-background); opacity: 0.6; } /* ========================================================================== Single Item View ========================================================================== */ .ms-item { max-width: 40rem; } .ms-item__header { margin-bottom: var(--space-m); } .ms-item__author { align-items: center; display: flex; gap: var(--space-s); margin-bottom: var(--space-m); } .ms-item__avatar-wrap { flex-shrink: 0; height: 48px; position: relative; width: 48px; } .ms-item__avatar-wrap > img { position: absolute; inset: 0; z-index: 1; } .ms-item__author-photo { border-radius: 50%; height: 48px; object-fit: cover; width: 48px; } .ms-item__author-photo--default { align-items: center; background: var(--color-offset); border-radius: 50%; color: var(--color-on-offset); display: flex; font-size: var(--font-size-m); font-weight: 600; height: 48px; justify-content: center; width: 48px; } .ms-item__author-info { display: flex; flex-direction: column; } .ms-item__author-name { font-weight: 600; } .ms-item__date { color: var(--color-on-offset); font-size: var(--font-size-s); } .ms-item__title { font-size: var(--font-size-xl); margin-bottom: var(--space-m); } .ms-item__content { line-height: 1.6; margin-bottom: var(--space-m); } .ms-item__content img { border-radius: var(--border-radius-small); height: auto; max-width: 100%; } .ms-item__photos { display: grid; gap: var(--space-s); margin-bottom: var(--space-m); } .ms-item__photo { border-radius: var(--border-radius-small); width: 100%; } .ms-item__context { background: var(--color-offset); border-radius: var(--border-radius-small); margin-bottom: var(--space-m); padding: var(--space-m); } .ms-item__context-label { color: var(--color-on-offset); font-size: var(--font-size-s); margin-bottom: var(--space-xs); } .ms-item__actions { border-top: var(--border-width-thin) solid var(--color-offset); display: flex; flex-wrap: wrap; gap: var(--space-s); padding-top: var(--space-m); } /* ========================================================================== Channel Header ========================================================================== */ .ms-channel__header { align-items: center; display: flex; flex-wrap: wrap; gap: var(--space-s); justify-content: space-between; margin-bottom: var(--space-m); } .ms-channel__actions { display: flex; gap: var(--space-xs); } /* ========================================================================== Feeds Management ========================================================================== */ .ms-feeds { display: flex; flex-direction: column; gap: var(--space-m); } .ms-feeds__header { align-items: center; display: flex; flex-wrap: wrap; gap: var(--space-s); justify-content: space-between; } .ms-feeds__list { display: flex; flex-direction: column; gap: var(--space-s); } .ms-feeds__item { align-items: center; background: var(--color-offset); border-radius: var(--border-radius-small); display: flex; gap: var(--space-m); padding: var(--space-m); } .ms-feeds__photo { border-radius: var(--border-radius-small); flex-shrink: 0; height: 48px; object-fit: cover; width: 48px; } .ms-feeds__info { flex: 1; min-width: 0; } .ms-feeds__name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ms-feeds__url { color: var(--color-on-offset); font-size: var(--font-size-s); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ms-feeds__actions { flex-shrink: 0; } .ms-feeds__add { background: var(--color-offset); border-radius: var(--border-radius-small); padding: var(--space-m); } .ms-feeds__form { display: flex; gap: var(--space-s); } .ms-feeds__form input { flex: 1; } /* ========================================================================== Search ========================================================================== */ .ms-search { display: flex; flex-direction: column; gap: var(--space-m); } .ms-search__form { display: flex; gap: var(--space-s); } .ms-search__form input { flex: 1; } .ms-search__results { margin-top: var(--space-m); } .ms-search__list { display: flex; flex-direction: column; gap: var(--space-s); } .ms-search__item { align-items: center; background: var(--color-offset); border-radius: var(--border-radius-small); display: flex; justify-content: space-between; padding: var(--space-m); } .ms-search__feed { flex: 1; min-width: 0; } .ms-search__url { color: var(--color-on-offset); font-size: var(--font-size-s); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ========================================================================== Compose ========================================================================== */ .ms-compose { max-width: 40rem; } .ms-compose__context { background: var(--color-offset); border-radius: var(--border-radius-small); margin-bottom: var(--space-m); padding: var(--space-m); } .ms-compose__counter { color: var(--color-on-offset); font-size: var(--font-size-s); margin-top: var(--space-xs); text-align: right; } /* ========================================================================== Settings ========================================================================== */ .ms-settings { max-width: 40rem; } .ms-settings .divider { border-top: var(--border-width-thin) solid var(--color-offset); margin: var(--space-l) 0; } .ms-settings .danger-zone { background: var(--color-red90); border: var(--border-width-thin) solid var(--color-red45); border-radius: var(--border-radius-small); padding: var(--space-m); } /* ========================================================================== Keyboard Navigation Focus ========================================================================== */ .ms-item-card:focus-within, .ms-item-card.ms-item-card--focused { outline: 2px solid var(--color-primary); outline-offset: 2px; } /* ========================================================================== Empty States ========================================================================== */ .ms-reader__empty { color: var(--color-on-offset); padding: var(--space-xl); text-align: center; } .ms-reader__empty svg { height: 4rem; margin-bottom: var(--space-m); opacity: 0.5; width: 4rem; } /* ========================================================================== Responsive ========================================================================== */ @media (max-width: 640px) { .ms-item-card__photos--3 { grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; } .ms-item-card__photos--3 .ms-item-card__photo:first-child { grid-column: 1 / 3; grid-row: 1; height: 200px; } .ms-item-card__photos--3 .ms-item-card__photo:nth-child(2), .ms-item-card__photos--3 .ms-item-card__photo:nth-child(3) { height: 100px; } .ms-feeds__item { flex-wrap: wrap; } .ms-feeds__info { order: 1; width: calc(100% - 64px); } .ms-feeds__actions { margin-top: var(--space-s); order: 2; width: 100%; } } /* ========================================================================== Badge extensions for search results ========================================================================== */ /* Extend Indiekit badges with small variant for inline use */ .badge--small { font-size: var(--font-size-s); padding: 2px var(--space-xs); } /* ========================================================================== Search Enhancements (feed validation) ========================================================================== */ .ms-search__name { display: block; font-weight: 600; margin-bottom: var(--space-xs); } .ms-search__type { margin-left: var(--space-xs); } .ms-search__error { color: var(--color-red45); display: block; font-size: var(--font-size-s); margin-top: var(--space-xs); } .ms-search__item--invalid { opacity: 0.7; } .ms-search__item--comments { border-left: 3px solid var(--color-yellow50); } .ms-search__subscribe { align-items: center; display: flex; gap: var(--space-s); } /* ========================================================================== Notices (inline errors, warnings) ========================================================================== */ .ms-notice { border-radius: var(--border-radius-small); margin-bottom: var(--space-m); padding: var(--space-m); } .ms-notice--error { background: var(--color-red90); border: var(--border-width-thin) solid var(--color-red45); color: var(--color-red10); } .ms-notice--warning { background: var(--color-yellow90); border: var(--border-width-thin) solid var(--color-yellow50); color: var(--color-yellow10); } .ms-notice--success { background: var(--color-green90); border: var(--border-width-thin) solid var(--color-green50); color: var(--color-green10); } /* ========================================================================== Feed Management Enhancements ========================================================================== */ .ms-feeds__item--error { border-left: 3px solid var(--color-red45); } .ms-feeds__error { color: var(--color-red45); display: block; font-size: var(--font-size-s); margin-top: var(--space-xs); } .ms-feeds__error-count { color: var(--color-yellow50); display: block; font-size: var(--font-size-s); } .ms-feeds__meta { color: var(--color-on-offset); display: block; font-size: var(--font-size-s); } .ms-feeds__details { display: flex; flex-direction: column; flex: 1; min-width: 0; } .ms-feeds__actions { align-items: center; display: flex; flex-shrink: 0; gap: var(--space-xs); } .ms-feeds__actions form { display: inline; margin: 0; } /* ========================================================================== Feed Edit Page ========================================================================== */ .ms-feed-edit { max-width: 40rem; } .ms-feed-edit__current { background: var(--color-offset); border-radius: var(--border-radius-small); margin-bottom: var(--space-l); padding: var(--space-m); } .ms-feed-edit__url { color: var(--color-on-offset); font-size: var(--font-size-s); overflow-wrap: break-word; word-break: break-all; } .ms-feed-edit__title { font-weight: 600; } .ms-feed-edit__form { margin-bottom: var(--space-l); } .ms-feed-edit__help { color: var(--color-on-offset); font-size: var(--font-size-s); margin-bottom: var(--space-m); } .ms-feed-edit__actions { display: flex; flex-direction: column; gap: var(--space-m); } .ms-feed-edit__action { background: var(--color-offset); border-radius: var(--border-radius-small); padding: var(--space-m); } .ms-feed-edit__action p { margin-bottom: var(--space-s); } /* ========================================================================== Actor Profile ========================================================================== */ .ms-actor-profile { background: var(--color-offset); border-radius: var(--border-radius-small); margin-bottom: var(--space-m); padding: var(--space-m); } .ms-actor-profile__header { align-items: flex-start; display: flex; gap: var(--space-m); } .ms-actor-profile__avatar-wrap { flex-shrink: 0; height: 80px; position: relative; width: 80px; } .ms-actor-profile__avatar-wrap > img { position: absolute; inset: 0; z-index: 1; } .ms-actor-profile__avatar { border-radius: 50%; object-fit: cover; } .ms-actor-profile__avatar--default { align-items: center; background: var(--color-offset); border-radius: 50%; color: var(--color-on-offset); display: flex; font-size: var(--font-size-xl); font-weight: 600; height: 80px; justify-content: center; width: 80px; } .ms-actor-profile__info { flex: 1; min-width: 0; } .ms-actor-profile__name { font-size: 1.25em; margin: 0 0 2px; } .ms-actor-profile__handle { color: var(--color-on-offset); font-size: 0.9em; } .ms-actor-profile__summary { font-size: 0.9em; margin: var(--space-xs) 0 0; } .ms-actor-profile__stats { color: var(--color-on-offset); display: flex; font-size: 0.85em; gap: var(--space-m); margin-top: var(--space-xs); } .ms-actor-profile__actions { display: flex; gap: var(--space-s); margin-top: var(--space-s); } /* ========================================================================== AP Badge ========================================================================== */ .ms-item-card__badge { border-radius: var(--border-radius-small); display: inline-block; font-size: 0.7em; font-weight: 600; letter-spacing: 0.02em; line-height: 1; padding: 2px 4px; text-transform: uppercase; vertical-align: middle; } .ms-item-card__badge--ap { background: hsl(var(--tint-purple) 45% / 0.12); color: var(--color-purple45); } /* ========================================================================== Breadcrumbs ========================================================================== */ .ms-breadcrumbs { margin-bottom: var(--space-xs); } .ms-breadcrumbs__list { align-items: center; display: flex; flex-wrap: wrap; font-size: var(--font-size-s); gap: 0; list-style: none; margin: 0; padding: 0; } .ms-breadcrumbs__item::before { color: var(--color-on-offset); content: "/"; margin: 0 var(--space-xs); } .ms-breadcrumbs__item:first-child::before { content: none; margin: 0; } .ms-breadcrumbs__link { color: var(--color-primary); text-decoration: none; } .ms-breadcrumbs__link:hover { text-decoration: underline; } .ms-breadcrumbs__current { color: var(--color-on-offset); } /* ========================================================================== View Switcher ========================================================================== */ .ms-view-switcher { display: flex; gap: var(--space-xs); padding: var(--space-xs) 0; } .ms-view-switcher__button { align-items: center; border: var(--border-width-thin) solid var(--color-outline); border-radius: var(--border-radius-small); color: var(--color-on-offset); display: flex; justify-content: center; padding: var(--space-xs); text-decoration: none; transition: background-color 0.2s ease, color 0.2s ease; } .ms-view-switcher__button:hover { background: var(--color-offset); color: var(--color-on-background); } .ms-view-switcher__button--active { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-on-primary); } .ms-view-switcher__button--active:hover { background: var(--color-primary); color: var(--color-on-primary); } /* ========================================================================== Timeline View (all channels chronological) ========================================================================== */ .ms-timeline-view { display: flex; flex-direction: column; gap: var(--space-m); } .ms-timeline-view__header { align-items: center; display: flex; flex-wrap: wrap; gap: var(--space-s); justify-content: space-between; } .ms-timeline-view__item { position: relative; } .ms-timeline-view__channel-badge { border-radius: var(--border-radius-small); color: var(--color-on-primary); display: inline-block; font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.02em; line-height: 1; margin-bottom: var(--space-xs); padding: 3px 8px; text-transform: uppercase; } .ms-timeline-view__filter { position: relative; } .ms-timeline-view__filter-form { background: var(--color-background); border: var(--border-width-thin) solid var(--color-outline); border-radius: var(--border-radius-small); display: flex; flex-direction: column; gap: var(--space-xs); min-width: 200px; padding: var(--space-s); position: absolute; right: 0; top: 100%; z-index: 10; } .ms-timeline-view__filter-label { align-items: center; cursor: pointer; display: flex; gap: var(--space-xs); } .ms-timeline-view__filter-color { border-radius: var(--border-radius-small); display: inline-block; height: 12px; width: 12px; } /* ========================================================================== Compact Item Card (Deck view) ========================================================================== */ .ms-item-card-compact { background: var(--color-background); border: var(--border-width-thin) solid var(--color-outline); border-radius: var(--border-radius-small); overflow: hidden; transition: background-color 0.2s ease; } .ms-item-card-compact:hover { background: var(--color-offset); } .ms-item-card-compact--read { opacity: 0.7; } .ms-item-card-compact:not(.ms-item-card-compact--read) { border-left: 3px solid hsl(var(--tint-yellow) 50% / 0.8); } .ms-item-card-compact__link { color: inherit; display: flex; gap: var(--space-xs); padding: var(--space-xs) var(--space-s); text-decoration: none; } .ms-item-card-compact__photo { border-radius: var(--border-radius-small); flex-shrink: 0; height: 60px; object-fit: cover; width: 60px; } .ms-item-card-compact__body { flex: 1; min-width: 0; overflow: hidden; } .ms-item-card-compact__title { -webkit-box-orient: vertical; -webkit-line-clamp: 2; display: -webkit-box; font-size: 0.875rem; font-weight: 600; line-height: 1.3; margin: 0; overflow: hidden; } .ms-item-card-compact__text { -webkit-box-orient: vertical; -webkit-line-clamp: 2; color: var(--color-on-offset); display: -webkit-box; font-size: 0.8125rem; line-height: 1.4; margin: 0; overflow: hidden; } .ms-item-card-compact__meta { color: var(--color-on-offset); display: flex; font-size: 0.75rem; gap: var(--space-xs); margin-top: 2px; } .ms-item-card-compact__source { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ms-item-card-compact__date { flex-shrink: 0; white-space: nowrap; } .ms-item-card-compact__unread { color: hsl(var(--tint-yellow) 50% / 0.9); flex-shrink: 0; font-size: 0.625rem; } /* ========================================================================== Deck View (TweetDeck-style columns) ========================================================================== */ .ms-deck { display: flex; flex-direction: column; gap: var(--space-m); } .ms-deck__header { align-items: center; display: flex; flex-wrap: wrap; gap: var(--space-s); justify-content: space-between; } .ms-deck__columns { display: flex; gap: var(--space-m); overflow-x: auto; padding-bottom: var(--space-s); scroll-snap-type: x mandatory; } .ms-deck__column { flex-shrink: 0; scroll-snap-align: start; width: 320px; } .ms-deck__column-header { align-items: center; background: var(--color-offset); border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; display: flex; gap: var(--space-s); justify-content: space-between; padding: var(--space-s) var(--space-m); position: sticky; top: 0; z-index: 1; } .ms-deck__column-name { color: inherit; font-weight: 600; text-decoration: none; } .ms-deck__column-items { display: flex; flex-direction: column; gap: var(--space-xs); max-height: 80vh; overflow-y: auto; padding: var(--space-xs); } .ms-deck__column-empty { color: var(--color-on-offset); font-size: 0.875rem; padding: var(--space-m); text-align: center; } .ms-deck__column-more { display: block; margin-top: var(--space-xs); text-align: center; } /* Deck settings */ .ms-deck-settings__channels { display: flex; flex-direction: column; gap: var(--space-xs); margin: var(--space-m) 0; } .ms-deck-settings__channel { align-items: center; cursor: pointer; display: flex; gap: var(--space-xs); }