Jake Vanderwerf
6 hours ago 56a9a1ccf764ff7a6af8f8a2292cb07443cb4aa7
src/feed/style.scss
@@ -1,624 +1,1318 @@
//.feed-block {
// max-width: var(--full);
// margin: 0 auto;
//
// &:target {
//    scroll-snap-margin-top: 5rem;
//    scroll-margin-top: 5rem;
//    outline: 0;
//    border-radius: 0;
//    padding: 0;
//
//    .feed-item {
//       outline: double var(--pink-0);
//    }
// }
//}
//
//.loading .feed-block {
// opacity: .7;
//}
//
//.label {
// display: flex;
// align-items: center;
// gap: .25rem;
// font-size: .9rem;
// a:hover {
//    color: var(--pink-0);
// }
//}
//
///** Filters Form **/
//.feed-filters {
// margin: 2rem 0;
// position: sticky;
// top: 3rem;
// z-index: 15;
// background: rgba(var(--base),var(--op-6));
// padding: .25rem 3rem;
// details[open] summary {
//    background-color: var(--overlay);
// }
// summary {
//    justify-content: flex-start;
//
//    > * {
//       order: 3;
//    }
//    .label {
//       order: 1;
//    }
//    .filter-label {
//       order: 2;
//    }
//    &::after {
//       order: 4;
//    }
//    #favourites + label {
//       margin-left: auto;
//    }
//    #favourites + label:hover,
//    #favourites:checked + label {
//       border-color: var(--pink-0);
//       background-color: var(--pink-0);
//       color: var(--white);
//
//    }
//    #favourites:checked + label {
//       animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
//    }
// }
//
// details[open],
// summary:hover {
//    background-color: rgba(var(--base),var(--op-6));
// }
//
// &:has(#favourites) {
//    summary::after {
//       margin-left: 1rem;
//    }
// }
//}
//summary > * {
// order: 3;
//}
//summary .label {
// order: 1;
//}
//.filter-label {
// display: inline-block;
// vertical-align: middle;
// height: 1.3em;
// order: 2;
// margin: 0;
// padding: 0;
//
// li {
//    list-style: none;
//    height: 0;
//    overflow: hidden;
//    &.active {
//       height: 100%;
//    }
// }
//}
//.filter-group {
// display: flex;
// align-items: center;
// gap: .5rem;
// flex-wrap: wrap;
// label {
//    font-weight: 100;
// }
// &:has(.order-by) {
//    justify-content: space-between;
// }
// .order-by,
// .order-direction {
//    display: flex;
//    flex-wrap: wrap;
//    gap: .5rem;
//    flex: 1;
//    justify-content: flex-start;
//    .label {
//       width: 100%;
//    }
//
//    label:has(.label) {
//       padding: 0 .35rem;
//       gap: .5rem;
//       .label {
//          font-size: 1rem;
//       }
//    }
// }
//}
//.filter-group >.label {
// width: 100%;
//}
//
///**
//Feed Grid
// */
//.feed-grid {
// display: grid;
// grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
// gap: .5rem;
// margin-bottom: 2rem;
// padding: 0 4rem;
// --delay: 0s;
// --increase: .1s;
//}
//.feed-empty-state {
// grid-column: 1/-1;
// text-align: center;
// padding: 2rem;
// background: rgb(var(--base-100));
// border-radius: var(--radius);
// margin: 0 auto;
// max-width: 600px;
//}
///**
//Placeholders
// */
//.placeholder {
// aspect-ratio: 1;
// background: rgb(var(--base));
// border: 1rem solid rgb(var(--base-50));
// border-radius: 1rem;
// display: flex;
// justify-content: center;
// align-items: center;
//
// .icon {
//    --w: 50%;
//    color: rgb(var(--base-200));
//    animation: dance 2.5s ease-in-out infinite;
//
// }
//}
//
///**
//Feed Items
// */
//.feed-item {
// position: relative;
// border-radius: 0.5rem;
// overflow: hidden;
// background: rgb(var(--base-50));
// box-shadow: 0 2px 4px rgba(0,0,0,0.1);
// opacity: 0;
// transition: opacity var(--trans-base) var(--delay);
// height: fit-content;
// padding: 0;
//
// img {
//    opacity: .7;
//    filter: grayscale(.5) sepia(.3) blur(7px);
// }
// &[data-loaded=true] {
//    img {
//       opacity: 1;
//       filter: none;
//    }
// }
//
// a {
//    &::before,
//    &::after {
//       display: none;
//    }
// }
// details a {
//    font-size: clamp(1rem, 0.9306rem + 0.2222vw, 1.125rem);
// }
//
// &[data-loaded] {
//    opacity: 1;
//    + [data-loaded] {
//       --delay: var(--delay) + var(--increase);
//    }
// }
//
// &.highlighted {
//    box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1);
//    animation: highlight-puls 2s ease-in-out;
// }
// &[open],
// &:hover {
//    .handle {
//       background-color: var(--overlay-pink-medium);
//       backdrop-filter: blur(5px);
//    }
// }
// summary {
//    width: calc(100% - 1rem);
//    height: 100%;
//    aspect-ratio: 1;
//    .handle {
//       position: absolute;
//       bottom: 0;
//       left: 0;
//       right: 0;
//       background-color: rgba(var(--base),var(--op-3));
//       backdrop-filter: blur(5px);
//       border-radius: var(--radius);
//       z-index: 1;
//       padding: .25rem .25rem .25rem 1.1rem;
//    }
//    &::after {
//       z-index: 11;
//       position: absolute;
//       bottom: .35rem;
//       right: .7rem;
//       width: 1.5rem;
//       height: 1.5rem;
//       cursor: pointer;
//    }
// }
//
// label {
//    font-weight: normal;
//    text-transform: none;
//    .icon {
//       --w: 1.5em;
//    }
// }
//}
///**
//Load More Button
// */
//.load-more {
// opacity: 1;
// margin: 1rem auto;
// width: 66.666%;
// display: flex;
// align-items: center;
// gap: .5rem;
// padding: .75rem 1.5rem;
// background: rgb(var(--base));
// color: rgb(var(--contrast));
// border-radius: 4px;
// font-size: var(--txt-medium);
// transition: all var(--trans-base);
// border: 2px solid transparent;
// &[hidden] {
//    opacity: 0;
//    transition: all var(--trans-base);
// }
// &:hover {
//    background: var(--pink-50);
//    border-color: rgb(var(--contrast));
//    color: var(--white);
// }
//}
///**
//favourite button
// */
//button.favourite {
// position: absolute;
// top: .5rem;
// right: .5rem;
// z-index: 10;
// background: rgba(var(--base),var(--op-4));
// border-radius: 50%;
// box-shadow: rgba(var(--base),var(--op-45)) var(--shdw-subtle);
// border: none;
// width: 2rem;
// height: 2rem;
// display: flex;
// justify-content: center;
// align-items: center;
// backdrop-filter: blur(5px);
// transition: all var(--trans-base);
//
// &:hover {
//    transform: scale(1.1);
//    color: var(--pink-0);
//    background: rgb(var(--base));
//    box-shadow: 0 4px 8px rgba(0,0,0,0.15);
// }
//
// &.favourited {
//    animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
// }
//}
//
//
///** Images **/
//.feed-image {
// display: block;
// aspect-ratio: 1;
// overflow: hidden;
// width: 100%;
// height: 100%;
//}
//.feed-images {
// width: 100%;
// height: 100%;
// &.multi {
//    display :grid;
//    grid-template-columns: repeat(3, 1fr);
//    grid-auto-rows: 1fr;
//    gap: 4px;
//
//    > a {
//       width: 100%;
//       height: 100%;
//       aspect-ratio: 1;
//    }
//    .feed-image {
//       grid-row: span 2;
//       grid-column: span 2;
//    }
// }
// img {
//    width: 100%;
//    height: 100%;
//    object-fit: cover;
//    transition: transform var(--trans-t) var(--trans-fn);
// }
// a:hover img {
//    transform: scale(1.05);
// }
//}
//
//.feed-item {
// &:nth-of-type(4n+2) .multi .feed-image {
//    grid-column: 2 / span 2;
//    grid-row: 1 / span 2;
// }
// &:nth-of-type(4n+3) .multi .feed-image {
//    grid-row: 2 / span 2;
//    grid-column: 1 / span 2;
// }
// &:nth-of-type(4n+4) .multi .feed-image {
//    grid-column: 2 / span 2;
//    grid-row: 2 / span 2;
// }
//}
//
///** Item Information **/
//.item-info {
// padding: .25rem;
// border-left: 1px solid rgb(var(--base-200));
// >div + div {
//    margin-top: .5em;
//    position: relative;
//
//    &::before {
//       content: '';
//       display: block;
//       position: absolute;
//       top: -.3em;
//       left: -.25rem;
//       width: 66.6%;
//       border-bottom: 1px solid rgb(var(--base-200));
//    }
// }
// h3 {
//    margin: 0 0 .5em 0!important;
//    font-size: 1.1rem;
//    font-family: var(--body);
//    font-weight: var(--fw-b);
// }
// span {
//    text-transform: uppercase;
//    display: flex;
//    align-items: center;
// }
// .icon {
//    --w: 1.1em;
//    margin-right: .5em;
//    display: inline-block;
//    vertical-align: middle;
// }
//}
//.item-list {
// ul {
//    margin: 0;
//    padding: .5em 0;
//    display: flex;
//    flex-wrap: wrap;
//    gap: .5rem;
//    li {
//       list-style: none;
//    }
// }
// a {
//    background-color: var(--pink-0);
//    border: 1px solid transparent;
//    border-radius: 4px;
//    color: var(--light-0);
//    padding: .25em;
//    line-height: .8;
//    &:visited {
//       background-color: var(--pink-100);
//       color: var(--white);
//    }
//    &:visited:hover,
//    &:visited:focus,
//    &:hover,
//    &:focus {
//       background-color: transparent;
//       border-color: rgb(var(--contrast));
//       color: rgb(var(--contrast));
//    }
// }
//}
///**
//Loading
// */
//.loading {
// opacity: .7;
//}
//
//.loading-overlay {
// position: fixed;
// top: 0;
// left: 0;
// right: 0;
// bottom: 0;
// background-color: rgba(var(--base),var(--op-4));
// display: flex;
// align-items: center;
// justify-content: center;
// transition: opacity 0.3s ease, visibility 0.3s ease;
// z-index: 9999;
// opacity: 0;
// visibility: hidden;
//}
//.loading .loading-overlay {
// opacity: 1;
// visibility: visible;
//
// &::after {
//    content: '';
//    position: absolute;
//    z-index: -1;
//    inset: 0;
//    background: linear-gradient(
//          90deg,
//          var(--shimmer)
//    );
//    animation: shimmer 3s ease-in-out infinite;
// }
//
// .wrapper {
//    background-color: rgba(var(--base),var(--op-6));
//    padding: 2rem;
//    border-radius: var(--radius);
//    text-align: center;
//    max-width: 90%;
//    width: 400px;
//    height: 300px;
//    z-index: 5;
//    display: flex;
//    justify-content: center;
//    align-items: center;
//    position: relative;
//
//    .spinner {
//       --h: 150px;
//       --w: calc(var(--h) * 2);
//       border-top: 5px solid var(--pink-0);
//       border-radius: 50%;
//       position: absolute;
//       width: var(--w);
//       height: var(--w);
//       top: calc(50% - var(--h));
//       left: calc(50% - var(--h));
//       opacity: .5;
//       z-index: 0;
//       animation: spin 1s var(--trans-t) infinite;
//    }
//    div.icon {
//       height: 50px;
//       width: 50px;
//
//       .icon {
//          --w: 100%;
//          svg {
//             animation: dance 2s ease-in-out infinite;
//             transition: color 0.3s ease;
//          }
//       }
//    }
//    .status {
//       height: 200px;
//       width: 100%;
//       z-index: 5;
//       display: flex;
//       flex-direction: column;
//       align-items: center;
//
//       h3 {
//          margin: 1.5rem 0 .25rem!important;
//          color: rgb(var(--contrast-200));
//       }
//       .message {
//          margin: 0;
//          max-width: 275px;
//          color: rgb(var(--contrast-100));
//          font-size: var(--txt-x-small);
//          animation: flicker 2s infinite;
//       }
//    }
// }
//}
//
//
///* Animations */
//@keyframes highlight {
// 0%, 100% {
//    box-shadow: none;
// }
// 50% {
//    box-shadow: 0 0 0 4px var(--pink-0);
// }
//}
//
//@keyframes pop {
// 0% { transform: scale(1); }
// 50% { transform: scale(1.3); }
// 75% { transform: scale(0.9); }
// 100% { transform: scale(1); }
//}
//
//@keyframes bubble {
// 50%  { box-shadow: 19px 0 0 3px, 38px 0 0 7px, 57px 0 0 3px }
// 100% { box-shadow: 19px 0 0 0, 38px 0 0 3px, 57px 0 0 7px }
//}
//@keyframes highlight-pulse {
// 0%, 100% { box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1); }
// 50% { box-shadow: 0 0 0 8px #FF0080, 0 12px 24px rgba(0, 0, 0, 0.15); }
//}
//
//@keyframes spin {
// to { transform: rotate(360deg); }
//}
//
//@keyframes shimmer {
// 0% { transform: translateX(-100%); }
// 50%, 100% { transform: translateX(100%); }
//}
//@keyframes dance {
// 0%, 100% { transform: rotate(-5deg) scale(1);}
// 50% { transform: rotate(5deg) scale(1.1); }
//}
//@keyframes flicker {
// 0% { opacity: 0.6; }
// 50% { opacity: 1; }
// 100% { opacity: 0.6; }
//}
//
//
///**
//Accessibility
// */
//
///* Keyboard navigable feed items */
//.feed-item[tabindex="0"] {
// position: relative;
//}
//
//.feed-item[tabindex="0"]::after {
// content: '';
// position: absolute;
// top: 0;
// left: 0;
// right: 0;
// bottom: 0;
// pointer-events: none;
// border: 2px solid transparent;
// transition: border-color 0.2s ease;
//}
//
//.feed-item[tabindex="0"]:focus::after {
// border-color: #FF0080;
//}
//
//
//.feed-block .item {
// summary {
//    a {
//       background-color: rgb(var(--action-0));
//       display: flex;
//       gap: .25rem;
//       flex-wrap: nowrap;
//       aspect-ratio: 1;
//       position: relative;
//    }
//    img {
//       width: 50%;
//       height: 100%;
//       object-fit: cover;
//    }
//
// }
//}
//
//.feed-block {
// grid-column: full;
// .filters {
//    padding: 1rem 0;
//    max-width:var(--wide);
//    margin: 0 auto;
//
//    .remove-term.remove-term {
//       width: max-content;
//       height: max-content
//    }
// }
// .filter-group {
//    position: relative;
//    padding: 2rem 0;
//    .label {
//       position: absolute;
//       left: 0;
//    }
//    > .label {
//       top: 0;
//    }
//    .btn + label {
//       width: auto;
//    }
//    [type=radio] {
//       position:absolute;
//       left: var(--offScreen);
//    }
//    button, label {
//       position: relative;
//       padding: .5rem;
//       height: max-content;
//       &:hover {
//          color: var(--action-contrast);
//       }
//    }
//    button:hover .label,
//    :checked + label .label,
//    label:hover .label {
//       opacity: 1;
//       visibility: visible;
//    }
//    &:has(label:hover) :checked + label .label,
//    button .label,
//    label .label {
//       --height: max-content;
//       opacity: 0;
//       visibility: hidden;
//       bottom: -2rem;
//       width: max-content;
//       white-space: nowrap;
//       font-weight: var(--fw-b);
//    }
//
//
// }
// h3 {
//    margin: 0 0 .25rem;
//    font-size: var(--medium);
// }
//}
///** PLACEHOLDERS **/
//.placeholder {
// aspect-ratio: 1;
// background: rgb(var(--base));
// border: 1rem solid rgb(var(--base-50));
// border-radius: 1rem;
// display: flex;
// justify-content: center;
// align-items: center;
//
// i.icon {
//    --w: 50%;
//    color: rgb(var(--base-200));
//    animation: dance 2.5s ease-in-out infinite;
// }
//}
//
//.item-grid {
// padding: 0 var(--chip);
// max-width: 100%;
//}
///** FEED ITEM **/
//.feed.item {
// position: relative;
// border-radius: 0.5rem;
// overflow: hidden;
// background: rgb(var(--base-50));
// box-shadow: 0 2px 4px rgba(0,0,0,0.1);
// height: fit-content;
// padding: 0;
// details {
//    z-index: var(--z-2);
//    width: 100%;
//    position: relative;
//    padding: 0;
//    summary {
//       position:absolute;
//       top: -3rem;
//       left:0;
//       width: 100%;
//       background-color: rgba(var(--base),var(--op-2));
//       backdrop-filter: blur(5px);
//       &:hover {
//          background-color: rgba(var(--action-0),var(--op-45));
//       }
//    }
//    &[open] {
//       padding: .25rem .5rem;
//       summary .icon {
//          opacity: 0;
//       }
//    }
//
// }
//
// img {
//    object-fit: cover;
//    width: 100%;
//    height: 100%;
//    //opacity: .7;
//    //filter: grayscale(.5) sepia(.3);
//    &:hover {
//       opacity: .8;
//    }
// }
//
// &[data-timeline] {
//    .images {
//       aspect-ratio: 3/2;
//       padding: 0 0 1rem;
//       span {
//          width: 50%;
//          position: absolute;
//          background-color: rgb(var(--action-0));
//          color: var(--action-contrast);
//          padding: .25rem .5rem;
//          &:first-of-type {
//             bottom: 0;
//             right: 50%;
//             text-align: right;
//          }
//          &:last-of-type {
//             top: 0;
//             left: 50%;
//          }
//       }
//       > a {
//          position: relative;
//          display: flex;
//          flex-wrap: nowrap;
//          width: 100%;
//          height: 100%;
//       }
//    }
//    img {
//       width: 50%;
//       object-fit: cover;
//       height: 100%;
//       &:first-of-type {
//          border-right: 1px solid rgb(var(--action-0));
//       }
//    }
// }
//
//
// a {
//    &::before,
//    &::after {
//       display: none;
//    }
// }
//
// label {
//    font-weight: normal;
//    text-transform: none;
//    .icon {
//       --w: 1.5em;
//    }
// }
//}
//
//
//.item-grid:has([data-timeline]) {
// grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
//}
//
//.items-wrap [type=radio],
//.items-wrap [type=checkbox] {
// position: absolute;
// opacity: 0;
// left: -200vw;
//}
//
//.items-wrap [type=radio] + label,
//.items-wrap [type=checkbox] + label {
// position: relative;
// cursor: pointer;
//}
//
//.items-wrap [type=radio] + label:hover,
//.items-wrap [type=checkbox] + label:hover {
// color: rgb(var(--action-0));
//}
//
//.items-wrap [type=radio] + label::before,
//.items-wrap [type=checkbox] + label::before,
//.items-wrap [type=radio] + label::after,
//.items-wrap [type=checkbox] + label::after {
// content: '';
// position: absolute;
// top: 50%;
//}
//
//.items-wrap [type=radio] + label::after,
//.items-wrap [type=checkbox] + label::after {
// left: 5px;
// transform: translateY(-70%) rotate(45deg);
// width: 5px;
// height: 10px;
// border: solid var(--light-0);
// border-width: 0 2px 2px 0;
// display: none;
//}
//
//.items-wrap [type=radio] + label::before,
//.items-wrap [type=checkbox] + label::before {
// left: 0;
// transform: translateY(-50%);
// width: 1rem;
// height: 1rem;
// border: 2px solid rgb(var(--contrast-200));
// background-color: rgb(var(--base));
// border-radius: var(--radius);
//}
//
//.items-wrap [type=radio]:hover + label::before,
//.items-wrap [type=checkbox]:hover + label::before {
// border-color: rgb(var(--action-200));
//}
//
//.items-wrap [type=radio]:checked + label::before,
//.items-wrap [type=checkbox]:checked + label::before{
// background-color: rgb(var(--action-0));
// border-color: rgb(var(--action-100));
//}
//
//.items-wrap [type=radio]:checked + label::before {
// border-radius: 50%;
//}
//
//.items-wrap [type=checkbox]:checked + label::after {
// display: block;
// left: 5px;
// top: 50%;
// transform: translateY(-70%) rotate(45deg);
// width: .35rem;
// height: .66rem;
// border: solid var(--light-0);
// border-width: 0 2px 2px 0;
//}
//
//.items-wrap :disabled + label {
// cursor: not-allowed;
// background-color: rgb(var(--base-50));
// color: rgb(var(--base-200));
// border-color: rgb(var(--base-200));
//}
//
//.items-wrap :disabled + label:hover {
// background-color: rgb(var(--base-50));
// color: rgb(var(--base-200));
// border-color: rgb(var(--base-200));
//}
//
//.items-wrap :disabled + label::before {
// border-color: rgb(var(--base-200));
//}
//
//#jvb-selector .items-wrap [type=radio] + label,
//#jvb-selector .items-wrap [type=checkbox] + label{
// flex: 1;
// padding-left: 2rem!important;
// transform-origin: top center;
// will-change: transform;
//}
//
//.feed-block + footer {
// grid-column: full;
// padding: 0!important;
// margin: 0;
// background-color: rgb(var(--base-50));
// z-index: 0;
// display: flex;
// justify-content: flex-end;
// button {
//    width: max-content;
//    margin-left: auto;
//    padding: .35rem .25rem;
//    --w: 1.3em!important;
//    flex-wrap: nowrap;
//    justify-content:flex-start;
//    transition: var(--trans-size);
//    font-size: var(--txt-x-small);
//    min-height: 0;
//    span {
//       display: none;
//       white-space: nowrap;
//    }
//    &:focus span,
//    &:hover span {
//       display: block;
//    }
// }
//}
//
//
//
//.search-container:not(.open) input[type=search],
//.search-container:not(.open) .clear-search {
// transform: scaleX(0);
// transform-origin: left;
// width: 0;
// padding: 0;
// transition: transform var(--trans-base), width var(--trans-base), padding var(--trans-base);
//}
//.search-container button {
// padding: .5rem;
//}
//.search-container .icon {
// --w: 1.5rem;
//}
//.search-container.open input[type=search],
//.search-container.open .clear-search {
// transform: scaleX(1);
// transform-origin: left;
// transition: transform var(--trans-base), width var(--trans-base), padding var(--trans-base);
//}
//.all-filters > .search,
//input[type=search],
//.search-container {
// width: 100%;
//}
//
//
//.all-filters {
// button .label,
// .row:has(label:hover),
// .btn:checked + label .label {
//    --height: max-content;
//    bottom: -2rem;
//    font-weight: var(--fw-b);
//    opacity: 0;
//    visibility: hidden;
//    white-space: nowrap;
//    width: -moz-max-content;
//    width: max-content;
// }
// summary {
//    width: 100%;
//    &:hover {
//       background-color: rgb(var(--action-0));
//       color: rgb(var(--action-contrast));
//       &::after {
//          background-color: rgb(var(--action-contrast));
//       }
//    }
// }
// > .row {
//    width: 100%;
//    margin: 0;
//    .label {
//       width: 20%;
//    }
// }
//}
/***** START FRESH *****/
.feed-block {
   max-width: var(--full);
   margin: 0 auto;
   grid-column: full;
   &:target {
      scroll-snap-margin-top: 5rem;
      scroll-margin-top: 5rem;
      outline: 0;
      border-radius: v0;
      padding: 0;
      .feed-item {
         outline: double var(--pink-0);
      }
   }
}
.loading .feed-block {
   opacity: .7;
}
.label {
   display: flex;
   align-items: center;
   gap: .25rem;
   font-size: .9rem;
   a:hover {
      color: var(--pink-0);
   }
}
/** Filters Form **/
.feed-filters {
   margin: 2rem 0;
   position: sticky;
   top: 3rem;
   z-index: 15;
   background: var(--overlay-heavy);
   padding: .25rem 3rem;
   details[open] summary {
      background-color: var(--overlay);
   }
   summary {
      justify-content: flex-start;
      > * {
         order: 3;
      }
      .label {
         order: 1;
      }
      .filter-label {
         order: 2;
      }
      &::after {
         order: 4;
      }
      #favourites + label {
         margin-left: auto;
      }
      #favourites + label:hover,
      #favourites:checked + label {
         border-color: var(--pink-0);
         background-color: var(--pink-0);
         color: var(--white);
      }
      #favourites:checked + label {
         animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
      }
   }
   details[open],
   summary:hover {
      background-color: var(--overlay-heavy);
   }
   &:has(#favourites) {
      summary::after {
         margin-left: 1rem;
      }
   }
}
summary > * {
   order: 3;
}
summary .label {
   order: 1;
}
.filter-label {
   display: inline-block;
   vertical-align: middle;
   height: 1.3em;
   order: 2;
   margin: 0;
   padding: 0;
   li {
      list-style: none;
      height: 0;
      overflow: hidden;
      &.active {
         height: 100%;
      }
   }
}
.filter-group {
   display: flex;
   align-items: center;
   gap: .5rem;
   flex-wrap: wrap;
   label {
      font-weight: 100;
   }
   &:has(.order-by) {
      justify-content: space-between;
   }
   .order-by,
   .order-direction {
   .placeholder {
      aspect-ratio: 1;
      background: rgb(var(--base));
      border: 1rem solid rgb(var(--base-50));
      border-radius: 1rem;
      display: flex;
      flex-wrap: wrap;
      gap: .5rem;
      flex: 1;
      justify-content: flex-start;
      .label {
         width: 100%;
      }
      label:has(.label) {
         padding: 0 .35rem;
         gap: .5rem;
         .label {
            font-size: 1rem;
         }
      }
   }
}
.filter-group >.label {
   width: 100%;
}
/**
Feed Grid
 */
.feed-grid {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
   gap: .5rem;
   margin-bottom: 2rem;
   padding: 0 4rem;
   --delay: 0s;
   --increase: .1s;
}
.feed-empty-state {
   grid-column: 1/-1;
   text-align: center;
   padding: 2rem;
   background: var(--base-100);
   border-radius: var(--innerRadius);
   margin: 0 auto;
   max-width: 600px;
}
/**
Placeholders
 */
.placeholder {
   aspect-ratio: 1;
   background: var(--base);
   border: 1rem solid var(--base-50);
   border-radius: 1rem;
   display: flex;
   justify-content: center;
   align-items: center;
   .icon {
      justify-content: center;
      align-items: center;
      --w: 50%;
      color: var(--base-200);
      svg {
      color: rgb(var(--base-200));
      i.icon {
         animation: dance 2.5s ease-in-out infinite;
      }
   }
}
/**
Feed Items
 */
.feed-item {
   position: relative;
   border-radius: 0.5rem;
   overflow: hidden;
   background: var(--base-50);
   box-shadow: 0 2px 4px rgba(0,0,0,0.1);
   opacity: 0;
   transition: opacity var(--transition-base) var(--delay);
   height: fit-content;
   padding: 0;
   .item-grid {
      max-width: var(--full);
   img {
      opacity: .7;
      filter: grayscale(.5) sepia(.3) blur(7px);
      &:has([data-timeline]) {
         grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
      }
   }
   &[data-loaded=true] {
   .item {
      overflow: hidden;
      background: rgb(var(--base-50));
      box-shadow: rgba(var(--base), var(--op-2)) var(--shdw);
      height: fit-content;
      padding: 0;
      h3 {
         margin: 0;
         font-size: var(--txt-medium);
      }
      details {
         z-index: var(--z-2);
         width: 100%;
         position: relative;
         padding: 0;
         summary {
            position: absolute;
            top: calc(var(--chip_) * -1);
            left: 0;
            width: 100%;
            background-color: rgba(var(--base), var(--op-2));
            backdrop-filter: blur(5px);
            &:hover {
               background-color: rgba(var(--action-0), var(--op-45));
            }
         }
         &[open] {
            padding: .25rem .5rem;
         }
      }
      img {
         opacity: 1;
         filter: none;
         &:hover {
            opacity: .8;
         }
      }
   }
   a {
      &::before,
      &::after {
         display: none;
      }
   }
   details a {
      font-size: clamp(1rem, 0.9306rem + 0.2222vw, 1.125rem);
   }
      &[data-timeline] {
         .images {
            aspect-ratio: 3/2;
            padding: 0 0 1rem;
   &[data-loaded] {
      opacity: 1;
      + [data-loaded] {
         --delay: var(--delay) + var(--increase);
      }
   }
            span {
               width: 50%;
               position: absolute;
               background-color: rgb(var(--action-0));
               color: rgb(var(--action-contrast));
               padding: .25rem .5rem;
   &.highlighted {
      box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1);
      animation: highlight-puls 2s ease-in-out;
   }
   &[open],
   &:hover {
      .handle {
         background-color: var(--overlay-pink-medium);
         backdrop-filter: blur(5px);
      }
   }
   summary {
      width: calc(100% - 1rem);
      height: 100%;
      aspect-ratio: 1;
      .handle {
         position: absolute;
         bottom: 0;
         left: 0;
         right: 0;
         background-color: var(--overlay-light);
         backdrop-filter: blur(5px);
         border-radius: var(--innerRadius);
         z-index: 1;
         padding: .25rem .25rem .25rem 1.1rem;
      }
      &::after {
         z-index: 11;
         position: absolute;
         bottom: .35rem;
         right: .7rem;
         width: 1.5rem;
         height: 1.5rem;
         cursor: pointer;
      }
   }
               &:first-of-type {
                  bottom: 0;
                  right: 50%;
                  text-align: right;
               }
               &:last-of-type {
                  top: 0;
                  left: 50%;
               }
            }
   label {
      font-weight: normal;
      text-transform: none;
      .icon {
            //> a {
            // position: relative;
            // display: flex;
            // flex-wrap: nowrap;
            // width: 100%;
            // height: 100%;
            //}
            img {
               width: 50%;
               &:first-of-type {
                  border-right: 2px solid rgb(var(--action-0));
               }
            }
         }
      }
      a {
         &::before,
         &::after {
            display: none;
         }
      }
      label {
         font-weight: normal;
         text-transform: none;
         --w: 1.5em;
      }
   }
}
/**
Load More Button
 */
.load-more {
   opacity: 1;
   margin: 1rem auto;
   width: 66.666%;
   display: flex;
   align-items: center;
   gap: .5rem;
   padding: .75rem 1.5rem;
   background: var(--base);
   color: var(--contrast);
   border-radius: 4px;
   font-size: var(--medium);
   transition: all var(--transition-base);
   border: 2px solid transparent;
   &[hidden] {
      opacity: 0;
      transition: all var(--transition-base);
   }
   &:hover {
      background: var(--pink-50);
      border-color: var(--contrast);
      color: var(--white);
   }
}
/**
favourite button
 */
button.favourite {
   position: absolute;
   top: .5rem;
   right: .5rem;
   z-index: 10;
   background: var(--overlay-medium);
   border-radius: 50%;
   box-shadow: var(--subtle);
   border: none;
   width: 2rem;
   height: 2rem;
   display: flex;
   justify-content: center;
   align-items: center;
   backdrop-filter: blur(5px);
   transition: all var(--transition-base);
.all-filters {
   font-size: var(--txt-x-small);
   &:hover {
      transform: scale(1.1);
      color: var(--pink-0);
      background: var(--base);
      box-shadow: 0 4px 8px rgba(0,0,0,0.15);
   &[open] {
      border: 2px solid rgb(var(--action-0));
      padding: 0;
      border-radius: 0 0 var(--radius-outer) var(--radius-outer);
   }
   &.favourited {
      animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
   }
}
/** Images **/
.feed-image {
   display: block;
   aspect-ratio: 1;
   overflow: hidden;
   width: 100%;
   height: 100%;
}
.feed-images {
   width: 100%;
   height: 100%;
   &.multi {
      display :grid;
      grid-template-columns: repeat(3, 1fr);
      grid-auto-rows: 1fr;
      gap: 4px;
      > a {
         width: 100%;
         height: 100%;
         aspect-ratio: 1;
      }
      .feed-image {
         grid-row: span 2;
         grid-column: span 2;
      }
   }
   img {
   summary {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: transform var(--timing) var(--function);
   }
   a:hover img {
      transform: scale(1.05);
   }
}
.feed-item {
   &:nth-of-type(4n+2) .multi .feed-image {
      grid-column: 2 / span 2;
      grid-row: 1 / span 2;
   &[open] summary,
   summary:hover {
      background-color: rgb(var(--action-0));
      color: rgb(var(--action-contrast));
      &::after {
         background-color: rgb(var(--action-contrast));
      }
   }
   &:nth-of-type(4n+3) .multi .feed-image {
      grid-row: 2 / span 2;
      grid-column: 1 / span 2;
   }
   &:nth-of-type(4n+4) .multi .feed-image {
      grid-column: 2 / span 2;
      grid-row: 2 / span 2;
   }
}
/** Item Information **/
.item-info {
   padding: .25rem;
   border-left: 1px solid var(--base-200);
   >div + div {
      margin-top: .5em;
   >.row.row {
      padding: 0 .75rem 2rem;
      width: var(--content);
      &.search {
         padding-bottom: 0;
      }
      position: relative;
      &::before {
         content: '';
         display: block;
         position: absolute;
         top: -.3em;
         left: -.25rem;
         width: 66.6%;
         border-bottom: 1px solid var(--base-200);
      > .label,
      > .row > .label {
         font-family: var(--heading);
         font-weight: var(--fw-h-bold);
         text-transform: uppercase;
      }
      > .label {
         width: 20%;
      }
      >.row > .label {
         white-space: nowrap;
      }
   }
   h3 {
      margin: 0 0 .5em 0!important;
      font-size: 1.1rem;
      font-family: var(--body);
      font-weight: var(--bWeight);
   }
   span {
      text-transform: uppercase;
      display: flex;
      align-items: center;
   }
   .icon {
      --w: 1.1em;
      margin-right: .5em;
      display: inline-block;
      vertical-align: middle;
   }
}
.item-list {
   ul {
      margin: 0;
      padding: .5em 0;
      display: flex;
      flex-wrap: wrap;
      gap: .5rem;
      li {
         list-style: none;
      }
   }
   a {
      background-color: var(--pink-0);
      border: 1px solid transparent;
      border-radius: 4px;
      color: var(--light-0);
      padding: .25em;
      line-height: .8;
      &:visited {
         background-color: var(--pink-100);
         color: var(--white);
      }
      &:visited:hover,
      &:visited:focus,
      &:hover,
      &:focus {
         background-color: transparent;
         border-color: var(--contrast);
         color: var(--contrast);
      }
   }
}
/**
Loading
 */
.loading {
   opacity: .7;
}
.loading-overlay {
   position: fixed;
   top: 0;
   left: 0;
   right: 0;
   bottom: 0;
   background-color: var(--overlay-medium);
   display: flex;
   align-items: center;
   justify-content: center;
   transition: opacity 0.3s ease, visibility 0.3s ease;
   z-index: 9999;
   opacity: 0;
   visibility: hidden;
}
.loading .loading-overlay {
   opacity: 1;
   visibility: visible;
   button,
   .btn + label {
      width: var(--chipchip);
      min-height: var(--chipchip);
      padding: 0;
   }
   &::after {
      content: '';
   button .label,
   .row:has(> .btn:not(:checked) + label:hover) :checked + label .label,
   .btn + label .label {
      position: absolute;
      z-index: -1;
      inset: 0;
      background: linear-gradient(
            90deg,
            var(--shimmer)
      );
      animation: shimmer 3s ease-in-out infinite;
      bottom: -2rem;
      width: max-content;
      white-space: nowrap;
      opacity: 0;
      z-index: var(--z-4);
   }
   .wrapper {
      background-color: var(--overlay-heavy);
      padding: 2rem;
      border-radius: var(--innerRadius);
      text-align: center;
      max-width: 90%;
      width: 400px;
      height: 300px;
      z-index: 5;
      display: flex;
      justify-content: center;
      align-items: center;
      position: relative;
   button:hover .label,
   .btn:checked + label .label,
   .btn + label:hover .label {
      opacity: 1;
   }
      .spinner {
         --h: 150px;
         --w: calc(var(--h) * 2);
         border-top: 5px solid var(--pink-0);
         border-radius: 50%;
         position: absolute;
         width: var(--w);
         height: var(--w);
         top: calc(50% - var(--h));
         left: calc(50% - var(--h));
         opacity: .5;
         z-index: 0;
         animation: spin 1s var(--timing) infinite;
      }
      div.icon {
         height: 50px;
         width: 50px;
   .search.row,
   .view.row {
      display: none;
   }
}
         .icon {
            --w: 100%;
            svg {
               animation: dance 2s ease-in-out infinite;
               transition: color 0.3s ease;
            }
.search-container:not(.open) input[type=search],
.search-container:not(.open) .clear-search {
   transform: scaleX(0);
   transform-origin: left;
   width: 0;
   padding: 0;
   transition: transform var(--trans-base), width var(--trans-base), padding var(--trans-base);
}
.search-container button {
   padding: .5rem;
}
.search-container .icon {
   --w: 1.5rem;
}
.search-container.open input[type=search],
.search-container.open .clear-search {
   transform: scaleX(1);
   transform-origin: left;
   transition: transform var(--trans-base), width var(--trans-base), padding var(--trans-base);
}
.all-filters > .search,
input[type=search],
.search-container {
   width: 100%;
}
.toggle-text {
   input {
      + label {
         font-weight: normal;
         color: var(--contrast)!important;
         text-transform: none;
         cursor: pointer;
         position: relative;
         padding: .25rem .5rem;
         -webkit-user-select: none;
         -moz-user-select: none;
         -ms-user-select: none;
         user-select: none;
         border: 1px dashed transparent;
         &::before,
         &::after {
            display: none!important;
         }
      }
      .status {
         height: 200px;
         width: 100%;
         z-index: 5;
         display: flex;
         flex-direction: column;
         align-items: center;
         h3 {
            margin: 1.5rem 0 .25rem!important;
            color: var(--contrast-200);
         }
         .message {
         .text {
            position: relative;
            margin: 0;
            max-width: 275px;
            color: var(--contrast-100);
            font-size: var(--small);
            animation: flicker 2s infinite;
            --gap: 0;
            font-weight: bold;
            width: fit-content;
            padding: 2px 4px;
            border: 1px solid rgb(var(--action-50));
            border-radius: var(--radius);
            color: rgb(var(--action-50));
         }
         .off {
            --mid: -100%;
         }
         .on {
            --mid: 100%;
         }
         .off,
         .on {
            transition: var(--trans-transform), opacity var(--trans-base);
         }
      }
       + label .off,
      &:checked + label .on {
         opacity: 1;
         max-width: 100%;
         transform: translate3d(0,0,0);
      }
       + label .on,
      &:checked + label .off {
         opacity: 0;
         max-width: 0;
         transform: translate3d(0,var(--mid),0);
      }
   }
}
/* Animations */
@keyframes highlight {
   0%, 100% {
      box-shadow: none;
   &:hover {
      label {
         border-color: rgb(var(--action-200));
      }
      .text {
         background-color: rgb(var(--action-50));
         color: rgb(var(--action-contrast));
         border-color: rgb(var(--action-50));
      }
   }
   50% {
      box-shadow: 0 0 0 4px var(--pink-0);
   }
}
@keyframes pop {
   0% { transform: scale(1); }
   50% { transform: scale(1.3); }
   75% { transform: scale(0.9); }
   100% { transform: scale(1); }
}
@keyframes bubble {
   50%  { box-shadow: 19px 0 0 3px, 38px 0 0 7px, 57px 0 0 3px }
   100% { box-shadow: 19px 0 0 0, 38px 0 0 3px, 57px 0 0 7px }
}
@keyframes highlight-pulse {
   0%, 100% { box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1); }
   50% { box-shadow: 0 0 0 8px #FF0080, 0 12px 24px rgba(0, 0, 0, 0.15); }
}
@keyframes spin {
   to { transform: rotate(360deg); }
}
@keyframes shimmer {
   0% { transform: translateX(-100%); }
   50%, 100% { transform: translateX(100%); }
}
@keyframes dance {
   0%, 100% { transform: rotate(-5deg) scale(1);}
   50% { transform: rotate(5deg) scale(1.1); }
}
@keyframes flicker {
   0% { opacity: 0.6; }
   50% { opacity: 1; }
   100% { opacity: 0.6; }
}
/**
Accessibility
 */
/* Keyboard navigable feed items */
.feed-item[tabindex="0"] {
   position: relative;
}
.feed-item[tabindex="0"]::after {
   content: '';
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   bottom: 0;
   pointer-events: none;
   border: 2px solid transparent;
   transition: border-color 0.2s ease;
}
.feed-item[tabindex="0"]:focus::after {
   border-color: #FF0080;
}