| @font-face { | |
| font-family: "Compagnon Light"; | |
| src: url("/fonts/compagnon-light.woff") format("woff"); | |
| font-weight: 300; | |
| font-style: normal; | |
| font-display: swap; | |
| } | |
| @font-face { | |
| font-family: "Terminal Grotesque"; | |
| src: url("/fonts/terminal-grotesque.woff") format("woff"); | |
| font-weight: normal; | |
| font-style: normal; | |
| font-display: swap; | |
| } | |
| :root { | |
| --br-blue: #2b7de0; | |
| --br-grid: #dceeff; | |
| --br-yellow: #dcb045; | |
| --font-pixel: "Terminal Grotesque", sans-serif; | |
| --font-serif: "Compagnon Light", serif; | |
| --br-grid-size: 40px; | |
| } | |
| @keyframes slideDownFade { | |
| 0% { | |
| opacity: 0; | |
| transform: translateY(-30px); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes growBar { | |
| from { transform: scaleX(0); opacity: 0.5; } | |
| to { transform: scaleX(1); opacity: 1; } | |
| } | |
| /** | |
| * Header with the grid pattern background used by the Buildroot LTS | |
| * graphical chart | |
| */ | |
| .br-lts-header { | |
| margin-top: 50px; | |
| position: relative; | |
| width: 100%; | |
| min-height: 400px; | |
| background-color: #ffffff; | |
| overflow: hidden; | |
| border-bottom: 4px solid var(--br-blue); | |
| display: flex; | |
| justify-content: center; | |
| padding: 40px 20px; | |
| } | |
| .br-lts-header-bg { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-image: | |
| linear-gradient(var(--br-grid) 2px, transparent 2px), | |
| linear-gradient(90deg, var(--br-grid) 2px, transparent 2px); | |
| background-size: 120px 120px; | |
| z-index: 1; | |
| pointer-events: none; | |
| } | |
| .br-lts-header-content { | |
| position: relative; | |
| z-index: 10; | |
| max-width: 1200px; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .br-lts-header-title { | |
| color: var(--br-blue); | |
| font-family: var(--font-pixel); | |
| font-size: 8rem; | |
| display: inline-block; | |
| background: white; | |
| padding: 10px; | |
| margin: 10px; | |
| border: 2px solid var(--br-blue); | |
| box-shadow: 6px 6px 0 var(--br-blue); | |
| transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); | |
| opacity: 0; | |
| animation: slideDownFade 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; | |
| } | |
| .br-lts-header-title:nth-of-type(2) { | |
| font-size: 6rem; | |
| line-height: 6rem; | |
| animation-delay: 0.2s; | |
| } | |
| .br-lts-header-title:hover { | |
| background-color: var(--br-blue); | |
| color: #ffffff; | |
| box-shadow: 8px 8px 0 var(--br-grid); | |
| transform: translateY(-2px) translateX(-2px); | |
| } | |
| /** | |
| * <main> wrapper. | |
| */ | |
| .br-lts-main { | |
| max-width: 1200px; | |
| margin: 40px auto; | |
| padding: 0 20px; | |
| } | |
| /** | |
| * Custom dotted separator using the BR-LTS theme. | |
| */ | |
| .br-lts-separator { | |
| width: 100%; | |
| max-width: 900px; | |
| height: 10px; | |
| border-bottom: 2px dotted var(--br-blue); | |
| margin: 10px 0; | |
| } | |
| /** | |
| * Intersection subtitle <div> with grid background | |
| */ | |
| .br-lts-section-header { | |
| position: relative; | |
| width: 40%; | |
| height: calc(var(--br-grid-size) * 3); | |
| background-color: #fff; | |
| display: flex; | |
| align-items: center; | |
| padding-left: var(--br-grid-size); | |
| margin: var(--br-grid-size) 0; | |
| border: 2px solid var(--br-grid); | |
| text-decoration: none; | |
| scroll-margin-top: 20px; /* Offset for jump to anchor */ | |
| } | |
| @media screen and (max-width: 768px) { | |
| .br-lts-section-header { | |
| width: 100%; | |
| } | |
| } | |
| .br-lts-section-header:hover { | |
| border: 2px solid var(--br-blue); | |
| box-shadow: 6px 6px 0 var(--br-blue); | |
| transition: border-color 0.3s ease, box-shadow 0.3s ease; | |
| } | |
| .br-lts-section-header .br-lts-bg-grid { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-image: | |
| linear-gradient(var(--br-grid) 2px, transparent 2px), | |
| linear-gradient(90deg, var(--br-grid) 2px, transparent 2px); | |
| background-size: var(--br-grid-size) var(--br-grid-size); | |
| background-position: -1px -1px; | |
| z-index: 1; | |
| pointer-events: none; | |
| } | |
| .br-lts-section-header .br-lts-title-box { | |
| position: relative; | |
| z-index: 10; | |
| background-color: #fff; | |
| border: 2px solid var(--br-blue); | |
| color: var(--br-blue); | |
| font-family: var(--font-pixel); | |
| font-weight: 400; | |
| font-style: normal; | |
| font-size: 24px; | |
| line-height: 1; | |
| padding: 10px 15px; | |
| } | |
| .br-lts-section-header .br-lts-decoration-dot { | |
| position: absolute; | |
| z-index: 10; | |
| width: 10px; | |
| height: 10px; | |
| background-color: var(--br-yellow); | |
| border-radius: 50%; | |
| bottom: 0; | |
| left: 0; | |
| transform: translate(-50%, 50%); | |
| } | |
| /** | |
| * Numbered titled list. | |
| * The number is spanning on the left. | |
| * The content is on this right. | |
| */ | |
| .br-lts-item-row { | |
| display: flex; | |
| gap: 25px; | |
| max-width: 900px; | |
| position: relative; | |
| } | |
| .br-lts-item-number { | |
| font-family: var(--font-pixel); | |
| color: var(--br-yellow); | |
| font-size: 160px; | |
| line-height: 0.8; | |
| flex-shrink: 0; | |
| user-select: none; | |
| margin-top: 20px; | |
| text-align: center; | |
| width: 60px; | |
| } | |
| .br-lts-item-content { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 15px; | |
| padding-top: 5px; | |
| } | |
| .br-lts-item-title { | |
| font-family: var(--font-serif); | |
| font-style: italic; | |
| font-weight: 300; | |
| font-size: 42px; | |
| line-height: 1.1; | |
| color: var(--br-blue); | |
| letter-spacing: 1px; | |
| } | |
| .br-lts-item-text { | |
| font-family: var(--font-mono); | |
| font-size: 16px; | |
| line-height: 1.4; | |
| color: #333; | |
| max-width: 750px; | |
| } | |
| /** | |
| * 'timeline' grid to represent how tasks are expanding across time. | |
| */ | |
| .br-lts-chart { | |
| display: grid; | |
| grid-template-columns: 120px repeat(12, 1fr); | |
| gap: 0; | |
| width: 100%; | |
| max-width: 1000px; | |
| background-color: #fff; | |
| border: 2px solid var(--br-blue); | |
| box-shadow: 6px 6px 0 var(--br-blue); | |
| position: relative; | |
| overflow-x: auto; | |
| } | |
| .br-lts-chart::before { | |
| content: ""; | |
| position: absolute; | |
| top: 45px; | |
| left: 120px; | |
| right: 0; | |
| bottom: 0; | |
| background-size: calc(100% / 12) 100%; | |
| z-index: 0; | |
| pointer-events: none; | |
| } | |
| .br-lts-chart-head { | |
| grid-column: 1 / -1; | |
| display: grid; | |
| grid-template-columns: 120px repeat(12, 1fr); | |
| border-bottom: 2px solid var(--br-blue); | |
| background-color: color-mix(in srgb, var(--br-blue) 6%, white); | |
| font-weight: bold; | |
| position: relative; | |
| z-index: 2; | |
| } | |
| .br-lts-chart-head-label { | |
| text-align: center; | |
| padding: 10px; | |
| border-left: 2px solid var(--br-grid); | |
| font-family: var(--font-pixel); | |
| font-size: 20px; | |
| color: var(--br-blue); | |
| } | |
| .br-lts-span-year { grid-column: span 4; } | |
| .br-lts-span-day { grid-column: span 2; } | |
| .br-lts-head-spacer { grid-column: span 1; border-right: 2px solid var(--br-blue); } | |
| .br-lts-chart-row { | |
| grid-column: 1 / -1; | |
| display: grid; | |
| grid-template-columns: 120px repeat(12, 1fr); | |
| align-items: center; | |
| height: 50px; | |
| border-bottom: 1px dashed #ddd; | |
| position: relative; | |
| z-index: 1; | |
| transition: background-color 0.2s ease; | |
| } | |
| .br-lts-chart-row:last-child { border-bottom: none; } | |
| .br-lts-chart-row--tall { | |
| height: 100px; | |
| } | |
| .br-lts-chart-row--faded { | |
| color: #999; | |
| font-style: italic; | |
| } | |
| .br-lts-chart-row:hover { | |
| background-color: color-mix(in srgb, var(--br-blue) 8%, transparent); | |
| z-index: 2; | |
| } | |
| .br-lts-chart-label { | |
| padding: 0 15px; | |
| font-weight: bold; | |
| color: #555; | |
| border-right: 2px solid var(--br-blue); | |
| height: 100%; | |
| display: flex; | |
| align-items: center; | |
| background-color: #fff; | |
| font-size: 14px; | |
| transition: color 0.2s ease, background-color 0.2s ease; | |
| } | |
| .br-lts-chart-row:hover .br-lts-chart-label { | |
| background-color: transparent; | |
| color: var(--br-blue); | |
| } | |
| .br-lts-bar { | |
| height: 24px; | |
| border-radius: 4px; | |
| display: flex; | |
| align-items: center; | |
| padding-left: 10px; | |
| font-size: 12px; | |
| color: white; | |
| font-weight: bold; | |
| box-shadow: 2px 2px 0 rgba(0,0,0,0.1); | |
| white-space: nowrap; | |
| overflow: hidden; | |
| position: relative; | |
| background-color: var(--br-blue); | |
| grid-column-end: span 1; | |
| cursor: default; | |
| transform-origin: left center; | |
| animation: growBar 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| opacity: 0; | |
| transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), | |
| box-shadow 0.2s ease, | |
| filter 0.2s ease; | |
| } | |
| .br-lts-chart-row:nth-child(2) .br-lts-bar { animation-delay: 100ms; } | |
| .br-lts-chart-row:nth-child(3) .br-lts-bar { animation-delay: 200ms; } | |
| .br-lts-chart-row:nth-child(4) .br-lts-bar { animation-delay: 300ms; } | |
| .br-lts-chart-row:nth-child(5) .br-lts-bar { animation-delay: 400ms; } | |
| .br-lts-chart-row:nth-child(6) .br-lts-bar { animation-delay: 500ms; } | |
| .br-lts-chart-row:nth-child(7) .br-lts-bar { animation-delay: 600ms; } | |
| .br-lts-chart-row:nth-child(8) .br-lts-bar { animation-delay: 700ms; } | |
| .br-lts-chart-row:nth-child(9) .br-lts-bar { animation-delay: 800ms; } | |
| .br-lts-chart-row:nth-child(10) .br-lts-bar { animation-delay: 900ms; } | |
| .br-lts-chart-row:nth-child(11) .br-lts-bar { animation-delay: 1000ms; } | |
| .br-lts-bar:hover { | |
| transform: scale(1.05) translateY(-2px); | |
| box-shadow: 4px 6px 12px rgba(0,0,0,0.2); | |
| z-index: 10; | |
| filter: brightness(1.1); | |
| } | |
| .br-lts-bar--long { | |
| background-color: var(--br-yellow); | |
| color: color-mix(in srgb, var(--br-yellow), black 45%); | |
| grid-column-end: span 12; | |
| border: 2px solid color-mix(in srgb, var(--br-yellow), white 20%); | |
| } | |
| .br-lts-bar--span-2 { grid-column-end: span 2; } | |
| .br-lts-bar--span-6 { grid-column-end: span 6; } | |
| .br-lts-col-start-2 { grid-column-start: 2; } | |
| .br-lts-col-start-3 { grid-column-start: 3; } | |
| .br-lts-col-start-4 { grid-column-start: 4; } | |
| .br-lts-col-start-5 { grid-column-start: 5; } | |
| .br-lts-col-start-6 { grid-column-start: 6; } | |
| .br-lts-col-start-7 { grid-column-start: 7; } | |
| .br-lts-col-start-8 { grid-column-start: 8; } | |
| .br-lts-col-start-9 { grid-column-start: 9; } | |
| .br-lts-col-start-10 { grid-column-start: 10; } |