@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); } /** *
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
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; }