@use 'sass:math'; .card-outer { @include context-menu-button; background: var(--newtab-background-color-secondary); border-radius: $border-radius-new; display: inline-block; height: $card-height; margin-inline-end: $base-gutter; position: relative; width: 100%; &:is(:focus):not(.placeholder) { @include ds-focus; transition: none; } &:hover { box-shadow: none; transition: none; } &.placeholder { background: transparent; .card-preview-image-outer, .card-context { display: none; } } .card { border-radius: $border-radius-new; box-shadow: $shadow-card; height: 100%; } > a { color: inherit; display: block; height: 100%; outline: none; position: absolute; width: 100%; &:is(:focus) { .card { @include ds-focus; } } &:is(.active, :focus) { .card { @include fade-in-card; } .card-title { color: var(--newtab-primary-action-background); } } } &:is(:hover, :focus, .active):not(.placeholder) { @include context-menu-button-hover; outline: none; .card-title { color: var(--newtab-primary-action-background); } .alternate ~ .card-host-name { display: none; } .card-host-name.alternate { display: block; } } .card-preview-image-outer { background-color: var(--newtab-element-secondary-color); border-radius: $border-radius-new $border-radius-new 0 0; height: $card-preview-image-height; overflow: hidden; position: relative; &::after { border-bottom: 1px solid var(--newtab-card-hairline-color); bottom: 0; content: ''; position: absolute; width: 100%; } .card-preview-image { background-position: center; background-repeat: no-repeat; background-size: cover; height: 100%; opacity: 0; transition: opacity 1s $photon-easing; width: 100%; &.loaded { opacity: 1; } } } .card-details { padding: 15px 16px 12px; } .card-text { max-height: 4 * $card-text-line-height + $card-title-margin; overflow: hidden; &.no-host-name, &.no-context { max-height: 5 * $card-text-line-height + $card-title-margin; } &.no-host-name.no-context { max-height: 6 * $card-text-line-height + $card-title-margin; } &:not(.no-description) .card-title { max-height: 3 * $card-text-line-height; overflow: hidden; } } .card-host-name { color: var(--newtab-text-secondary-color); font-size: 10px; overflow: hidden; padding-bottom: 4px; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .card-host-name.alternate { display: none; } .card-title { font-size: 14px; font-weight: 600; line-height: $card-text-line-height; margin: 0 0 $card-title-margin; word-wrap: break-word; } .card-description { font-size: 12px; line-height: $card-text-line-height; margin: 0; overflow: hidden; word-wrap: break-word; } .card-context { bottom: 0; color: var(--newtab-text-secondary-color); display: flex; font-size: 11px; inset-inline-start: 0; padding: 9px 16px 9px 14px; position: absolute; } .card-context-icon { fill: var(--newtab-text-secondary-color); height: 22px; margin-inline-end: 6px; } .card-context-label { flex-grow: 1; line-height: 22px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .normal-cards { .card-outer { // Wide layout styles @media (min-width: $break-point-widest) { $line-height: 23px; height: $card-height-large; .card-preview-image-outer { height: $card-preview-image-height-large; } .card-details { padding: 13px 16px 12px; } .card-text { max-height: 6 * $line-height + $card-title-margin; } .card-host-name { font-size: 12px; padding-bottom: 5px; } .card-title { font-size: 17px; line-height: $line-height; margin-bottom: 0; } .card-text:not(.no-description) { .card-title { max-height: 3 * $line-height; } } .card-description { font-size: 15px; line-height: $line-height; } .card-context { bottom: 4px; font-size: 14px; } } } } .compact-cards { $card-detail-vertical-spacing: 12px; $card-title-font-size: 12px; .card-outer { height: $card-height-compact; .card-preview-image-outer { height: $card-preview-image-height-compact; } .card-details { padding: $card-detail-vertical-spacing 16px; } .card-host-name { line-height: 10px; } .card-text { .card-title, &:not(.no-description) .card-title { font-size: $card-title-font-size; line-height: $card-title-font-size + 1; max-height: $card-title-font-size + 5; overflow: hidden; padding: 0 0 4px; text-overflow: ellipsis; white-space: nowrap; } } .card-description { display: none; } .card-context { $icon-size: 16px; $container-size: 32px; background-color: var(--newtab-background-color-secondary); border-radius: math.div($container-size, 2); clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing)); height: $container-size; width: $container-size; padding: math.div($container-size - $icon-size, 2); // The -1 at the end is so both opacity borders don't overlap, which causes bug 1629483 top: $card-preview-image-height-compact - math.div($container-size, 2) - 1; inset-inline-end: 12px; inset-inline-start: auto; &::after { border: 1px solid var(--newtab-card-hairline-color); border-bottom: 0; border-radius: math.div($container-size, 2) + 1 math.div($container-size, 2) + 1 0 0; content: ''; position: absolute; height: math.div($container-size + 2, 2); width: $container-size + 2; top: -1px; left: -1px; } .card-context-icon { margin-inline-end: 0; height: $icon-size; width: $icon-size; &.icon-bookmark-added { fill: $bookmark-icon-fill; } &.icon-download { fill: $download-icon-fill; } &.icon-pocket { fill: $pocket-icon-fill; } } .card-context-label { display: none; } } } @media not all and (min-width: $break-point-widest) { .hide-for-narrow { display: none; } } }