Files
thalim-theme/scss/_category.scss
2026-05-12 23:33:46 +02:00

557 lines
13 KiB
SCSS

// Category archive pages
.category-archive {
margin-top: 0;
.category-header-top {
display: flex;
justify-content: space-between;
flex-direction: column;
align-items: start;
.breadcrumb {
font-size: 0.85rem;
margin-bottom: 1.5rem;
text-transform: uppercase;
line-height: 1.3;
&__separator {
margin: 0 0.4rem;
}
}
@media ($tablet) {
flex-direction: row;
}
}
h1 {
font-family: Gelasio;
font-weight: normal;
font-size: 1.8rem;
position: relative;
margin-top: 2rem;
display: inline-block;
&::after {
content: '';
display: block;
position: absolute;
height: 6px;
width: 100%;
bottom: -1.2rem;
left: 0;
z-index: 2;
}
@media ($tablet) {
font-size: 2.6rem;
&::after {
bottom: -0.4rem;
}
}
}
.category--le-laboratoire h1::after {
background: linear-gradient(to bottom, transparent 0%, $laboratoire 50%);
}
.category--manifestations-scientifiques h1::after {
background: linear-gradient(to bottom, transparent 0%, $manifestations 50%);
}
.category--publications-et-productions h1::after {
background: linear-gradient(to bottom, transparent 0%, $publications 50%);
}
.category--mediation-scientifique h1::after {
background: linear-gradient(to bottom, transparent 0%, $mediations 50%);
}
.category--ressources h1::after {
background: linear-gradient(to bottom, transparent 0%, $ressources 50%);
}
}
// Breadcrumb: non-category links (Accueil, etc.) underlined in muted gray
.breadcrumb a:not(.breadcrumb__cat) { text-decoration: underline; text-decoration-color: $less-light-gray; text-underline-offset: 3px; }
// Breadcrumb category color underlines — links and current page indicator
.category--le-laboratoire .breadcrumb__cat,
.category--le-laboratoire .breadcrumb__current { text-decoration: underline; text-decoration-color: $laboratoire; text-underline-offset: 3px; }
.category--manifestations-scientifiques .breadcrumb__cat,
.category--manifestations-scientifiques .breadcrumb__current { text-decoration: underline; text-decoration-color: $manifestations; text-underline-offset: 3px; }
.category--publications-et-productions .breadcrumb__cat,
.category--publications-et-productions .breadcrumb__current { text-decoration: underline; text-decoration-color: $publications; text-underline-offset: 3px; }
.category--mediation-scientifique .breadcrumb__cat,
.category--mediation-scientifique .breadcrumb__current { text-decoration: underline; text-decoration-color: $mediations; text-underline-offset: 3px; }
.category--ressources .breadcrumb__cat,
.category--ressources .breadcrumb__current { text-decoration: underline; text-decoration-color: $ressources; text-underline-offset: 3px; }
.category-archive {
.taxonomy-description {
font-family: $font-primary;
margin-top: 2rem;
line-height: 1.6;
max-width: 70ch;
a {
text-decoration: underline;
}
p {
margin-bottom: 1rem;
line-height: 1.6;
strong {
font-weight: bold;
}
em {
font-style: italic;
}
&:first-child {
margin-top: 0 !important;
}
}
ul, ol {
line-height: 1.6;
padding-left: 0.8rem;
}
ul {
list-style: inside "· ";
}
ol {
list-style: inside decimal;
}
blockquote{
padding-left: 1rem;
margin-left: 1.5rem;
border-left: solid 1px $light-gray;
}
}
.subcategory-section {
margin-top: 5rem;
&:first-of-type {
margin-top: 2rem;
}
.subcategory-section__title {
font-family: NewsCycle;
text-transform: uppercase;
position: relative;
display: inline-block;
margin-bottom: 2rem;
font-size: 1.2rem;
&::after {
@include yellow-gradient-after(10px);
bottom: -10px;
}
}
.post-grid {
display: grid;
align-items: start;
grid-template-columns: 1fr;
gap: 2rem;
width: 100%;
.post-card {
min-width: 0;
}
@media ($tablet) {
grid-template-columns: repeat(2, 1fr);
}
@media ($desktop) {
grid-template-columns: repeat(3, 1fr);
}
}
.category-section-footer {
margin-top: 3rem;
display: flex;
justify-content: center;
}
}
}
/*
.category-header {
width: 100%;
margin-bottom: 3vh;
&__back {
display: inline-flex;
align-items: center;
gap: 0.3rem;
font-size: 0.9rem;
text-decoration: none;
margin-bottom: 1rem;
i {
font-size: 1.1rem;
}
}
&__title {
font-size: 2rem;
margin-bottom: 0.5rem;
@media ($tablet) {
font-size: 2.5rem;
}
}
&__description {
color: $less-dark-gray;
}
}
// Sub-category sections on parent category page
.subcategory-section {
width: 100%;
margin-bottom: 4vh;
&__header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 2vh;
border-bottom: 2px solid $publications;
padding-bottom: 0.5rem;
}
&__title {
font-size: 1.5rem;
a {
text-decoration: none;
}
}
&__see-all {
display: inline-flex;
align-items: center;
gap: 0.3rem;
font-size: 0.9rem;
text-decoration: none;
white-space: nowrap;
}
&__empty {
color: $less-less-light-gray;
font-style: italic;
}
}
// Post grid
.post-grid {
display: grid;
grid-template-columns: 1fr;
gap: 2rem;
width: 100%;
@media ($tablet) {
grid-template-columns: repeat(2, 1fr);
}
@media ($desktop) {
grid-template-columns: repeat(3, 1fr);
}
}
// Post card
.post-card {
background-color: white;
display: flex;
flex-direction: column;
overflow: hidden;
&__image {
width: 100%;
aspect-ratio: 4 / 3;
overflow: hidden;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
&__content {
padding: 1rem;
display: flex;
flex-direction: column;
gap: 0.4rem;
}
&__title {
font-size: 1.1rem;
line-height: 1.3;
a {
text-decoration: none;
}
}
&__subtitle {
font-size: 0.9rem;
color: $less-dark-gray;
font-style: italic;
}
&__date {
font-size: 0.8rem;
color: $less-less-light-gray;
}
&__authors {
font-size: 0.9rem;
display: flex;
flex-wrap: wrap;
gap: 0.2rem;
.post-card__author {
&:not(:last-child)::after {
content: ',';
}
}
&--external {
color: $less-dark-gray;
}
}
&__role,
&__publisher,
&__journal {
font-size: 0.85rem;
color: $less-dark-gray;
}
&__axes,
&__tags {
display: flex;
flex-wrap: wrap;
gap: 0.3rem;
}
&__axe,
&__tag {
font-size: 0.75rem;
background-color: $light-gray;
padding: 0.15rem 0.5rem;
}
&__axe {
border-left: 2px solid $publications;
}
&__links {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-top: 0.3rem;
}
&__link {
font-size: 0.8rem;
&--hal {
color: $publications;
}
}
}
// Infinite scroll spinner
.scroll-spinner {
display: flex;
justify-content: center;
align-items: center;
gap: 0.4rem;
padding: 2rem 0;
&__dot {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: $publications;
animation: scroll-spinner-bounce 1.2s infinite ease-in-out;
&:nth-child(2) {
animation-delay: 0.2s;
}
&:nth-child(3) {
animation-delay: 0.4s;
}
}
}
@keyframes scroll-spinner-bounce {
0%, 80%, 100% {
transform: scale(0.6);
opacity: 0.4;
}
40% {
transform: scale(1);
opacity: 1;
}
}
*/
// ── Agenda slider view ────────────────────────────────────────────────────────
.agenda-view-container {
display: none;
margin-top: 3rem;
&.is-active { display: block; }
}
.agenda-view-title {
font-family: NewsCycle;
text-transform: uppercase;
position: relative;
display: inline-block;
margin-bottom: 2rem;
font-size: 1.2rem;
&::after {
@include yellow-gradient-after(10px);
bottom: -10px;
}
}
.agenda-swiper-wrap {
display: flex;
align-items: center;
gap: 0.8rem;
margin-top: 2rem;
}
.agenda-swiper {
flex: 1;
overflow: hidden;
}
.agenda-swiper-prev,
.agenda-swiper-next {
flex-shrink: 0;
background: none;
border: none;
cursor: pointer;
font-size: 1.2rem;
padding: 0.4rem;
color: $dark-gray;
line-height: 1;
&:hover { color: black; }
&.swiper-button-disabled {
opacity: 0.25;
pointer-events: none;
}
}
.agenda-card {
display: flex;
flex-direction: column;
text-decoration: none;
color: inherit;
padding-bottom: 1.5rem;
border-bottom: 1px solid $light-gray;
height: 100%;
position: relative;
transition: transform 0.2s ease-out;
margin-right: 0 !important;
// Timeline line running through the center of the date boxes
&::before {
content: '';
position: absolute;
top: 1.7rem;
left: 0;
right: 0;
height: 1px;
background-color: $less-light-gray;
z-index: 0;
width: calc(100% + 20px);
@media ($tablet) {
width: calc(100% + 24px);
}
@media ($desktop) {
width: calc(100% + 32px);
}
}
&:hover { transform: scale(0.98); }
&__dates {
display: flex;
align-items: flex-start;
gap: 0.5rem;
margin-bottom: 1rem;
}
&__body { flex: 1; }
&__meta {
display: flex;
flex-wrap: wrap;
gap: 0.3rem 0.8rem;
font-family: $font-primary;
font-size: 0.75rem;
text-transform: uppercase;
opacity: 0.65;
margin-bottom: 0.5rem;
}
&__title {
font-family: $font-heading;
font-size: 1rem;
line-height: 1.35;
}
}
// Category-specific accent color on agenda card border + date box gradient
.category--manifestations-scientifiques .agenda-card { border-bottom-color: $manifestations; }
.category--le-laboratoire .agenda-card { border-bottom-color: $laboratoire; }
.category--publications-et-productions .agenda-card { border-bottom-color: $publications; }
.category--mediation-scientifique .agenda-card { border-bottom-color: $mediations; }
.category--ressources .agenda-card { border-bottom-color: $ressources; }
.category--manifestations-scientifiques .agenda-date-box { @include category-gradient($manifestations); }
.category--le-laboratoire .agenda-date-box { @include category-gradient($laboratoire); }
.category--publications-et-productions .agenda-date-box { @include category-gradient($publications); }
.category--mediation-scientifique .agenda-date-box { @include category-gradient($mediations); }
.category--ressources .agenda-date-box { @include category-gradient($ressources); }
.agenda-date-box {
position: relative;
z-index: 1;
background-color: $light-gray;
font-family: $font-primary;
text-transform: uppercase;
text-align: center;
padding: 0.4rem 0.55rem;
flex-shrink: 0;
min-width: 2.6rem;
.agenda-date-day { display: block; font-size: 1.3rem; line-height: 1; }
.agenda-date-month { display: block; font-size: 0.65rem; margin-top: 2px; }
.agenda-date-year { display: block; font-size: 0.6rem; opacity: 0.65; }
sup {
font-size: 0.7rem;
}
}
.agenda-date-arrow {
font-size: 0.85rem;
opacity: 0.5;
}