.hero-header { display: flex; flex-direction: column-reverse; position: relative; @media ($tablet) { flex-direction: row; } } .hero-logos { position: absolute; top: 2.5vh; display: inline-flex; height: 3rem; gap: 1rem; padding: 0.5rem; align-items: start; background-color: $light_gray; @media ($tablet) { position: unset; top: unset; } > a { height: 100%; > img { height: 100%; } &:nth-of-type(2) { mix-blend-mode: darken; } } } .color-changer { transition: color 0.3s ease-out; } .hero-presentation { font-family: $font-heading; font-size: 1.6rem; line-height: 1.1; @media ($tablet) { margin-top: 2rem; font-size: 2.6rem; } } .hero-presentation-detail { margin-top: 1.5rem; width: 90%; } .hero-content > .link-button { margin-top: 2.5rem; } .hero-content { @media ($tablet) { width: 75%; } } // ==================================== // SKETCH // ==================================== #sketch { z-index: 0; position: relative; display: block; height: 200px; // background-color: white; @media ($tablet) { height: unset; width: 25%; margin-top: 0 !important; } } // Floating shapes (DOM-based implementation) .floating-shape { position: absolute; top: 0; left: 0; transform-origin: top left; will-change: transform; pointer-events: none; svg { overflow: visible; } path, polyline, polygon, line, circle, ellipse, rect { transition: fill-opacity 0.5s ease-in-out; } } .thalim-text { position: absolute; pointer-events: none; transition: opacity 0.3s ease-out; display: flex; gap: 0; z-index: 20; font-family: 'NewsCycle', sans-serif; font-size: 26px; @media ($tablet) { font-size: 48px; } } // ==================================== // END SKETCH // ==================================== // ==================================== // SWIPER SECTIONS (annonces, publications…) // ==================================== .swiper-section { margin-top: 3rem; position: relative; .section-title { font-family: NewsCycle; text-transform: uppercase; position: relative; display: inline-block; margin-bottom: 2rem; &::after { @include yellow-gradient-after(10px); bottom: -10px; } } .swiper_content_controls { display: flex; gap: 0.8rem; align-items: center; margin-top: 2rem; .swiper { overflow: hidden; flex: 1; } .swiper-button-prev, .swiper-button-next { position: static; width: 2.4rem; height: 2.4rem; aspect-ratio: 1; margin: 0; background-color: $light-gray; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: $dark-gray; transition: background-color 0.2s ease-out; cursor: pointer; flex-shrink: 0; &::after { display: none; // hide Swiper default arrow } &:hover { background-color: $less-light-gray; } i { font-size: 1.1rem; line-height: 1; } } } .button-annonces { display: flex; justify-content: center; margin-top: 1.2rem; } } // ==================================== // END SWIPER SECTIONS // ==================================== // ==================================== // MESSAGE DU LABORATOIRE + AGENDA // ==================================== .message-agenda-section { display: flex; flex-direction: column; width: 100%; gap: 2rem; margin-top: 3rem; @media ($tablet) { flex-direction: row; } } .message-du-labo, .agenda { position: relative; padding: 2.5vh 5vw; padding-bottom: 6vh; background-color: white; display: flex; flex-direction: column; align-items: flex-start; &::after { @include yellow-gradient-after; } .section-title { font-family: $font-primary; text-transform: uppercase; position: relative; display: inline-block; margin-bottom: 3rem; &::after { @include yellow-gradient-after(10px); bottom: -10px; } } @media ($tablet) { padding: 3vh 3vw; padding-bottom: 8vh; } } .message-du-labo { @media ($tablet) { flex: 4; } } .messages-list { width: 100%; @media ($tablet) { flex: 1; overflow: hidden; } } .agenda { @media ($tablet) { flex: 3; // border-left: 1px solid $light-gray; } } .message-date { font-size: 0.75rem; color: $less-dark-gray; display: block; margin-bottom: 0.3rem; } .message-item { & + .message-item { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid $light-gray; } } .message-content { margin-bottom: 1.5rem; padding-right: 2rem; position: relative; > p { margin: 0.7rem 0; } p { margin-bottom: 1rem; line-height: 1.6; strong { font-weight: bold; } em { font-style: italic; } } 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; } @media ($tablet) { overflow: hidden; &.is-overflowing::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 8rem; background: linear-gradient(to bottom, transparent 0%, white 70%); pointer-events: none; } } } .button-messages, .button-agenda { align-self: center; margin-top: auto; } .message-read-more { display: none; position: absolute; bottom: 1rem; left: 0; z-index: 1; font-size: 0.85rem; text-decoration: none; font-family: $font-primary; text-transform: uppercase; .is-overflowing & { display: inline-block; } } .agenda-content { width: 100%; .agenda-item { display: flex; align-items: center; gap: 1.5rem; transform: scale(1); transition: transform 0.2s ease-out; margin-bottom: 2rem; text-decoration: none; color: inherit; &:hover { transform: scale(0.97); } } .date-container { background-color: $light-gray; text-transform: uppercase; font-family: $font-primary; text-align: center; padding: 0.5rem; position: relative; flex-shrink: 0; min-width: 3rem; > p { position: relative; z-index: 1; &:first-of-type { font-size: 1.3rem; } &:last-of-type { margin-bottom: 3px; } } &::after { content: ''; display: block; position: absolute; height: 10px; width: 100%; bottom: 0; left: 0; background: linear-gradient(to bottom, $light-gray 0%, $manifestations 100%); z-index: 0; } } .event-content { padding-bottom: 1rem; border-bottom: 1px solid $manifestations; flex: 1; .meta { font-family: $font-primary; display: flex; gap: 1rem; padding-bottom: 0.5rem; text-transform: uppercase; font-size: 0.8rem; flex-wrap: wrap; opacity: 0.7; } .event-title { font-family: $font-heading; font-size: 1.1rem; } } } // ==================================== // END MESSAGE DU LABORATOIRE + AGENDA // ==================================== // ==================================== // NUAGE DE MOTS-CLÉS // ==================================== .keyword-cloud { margin-top: 4rem; margin-bottom: 3rem; width: 100%; @media ($tablet) { margin-bottom: 0; } .section-title { font-family: $font-primary; text-transform: uppercase; position: relative; display: inline-block; margin-bottom: 2rem; &::after { @include yellow-gradient-after(10px); bottom: -10px; } } } #keyword-container { position: relative; width: 100%; min-height: 120px; } .keyword { position: absolute; font-family: $font-primary; font-size: 0.7rem; text-transform: uppercase; white-space: nowrap; text-decoration: none; color: $dark-gray; opacity: 0; cursor: pointer; @media ($tablet) { font-size: 0.95rem; } &.keyword--visible { animation: keywordFadeIn 0.7s ease-out forwards; } } @keyframes keywordFadeIn { from { opacity: 0; transform: scale(0.92); } to { opacity: 1; transform: scale(1); } } // ==================================== // END NUAGE DE MOTS-CLÉS // ==================================== // Quick links widget .quick-links { position: fixed; display: block; background-color: $light-light-gray; right: 0; top: 35vh; z-index: 3; font-family: $font-primary; max-width: 2.2rem; overflow: hidden; transition: max-width 0.9s ease-out, top 0.2s ease; text-decoration: none; z-index: 10; @media ($tablet) { right: 2vw; } @media ($desktop) { right: 4vw; } > ul { display: flex; flex-direction: column; align-items: end; gap: 0.8rem; padding: 0.8rem 0.6rem; > li > a { display: flex; align-items: center; gap: 0.8rem; text-decoration: none; white-space: nowrap; &:hover { font-weight: bold; } } } &:hover { max-width: 40vw; } &::after { content: ""; display: block; position: absolute; height: 10px; width: 100%; bottom: 0; left: 0; background: linear-gradient(to bottom, transparent 0%, $yellow 100%); z-index: 2; } }