/* Lukenya Marathon — shared left sidebar. * Loaded once on every Desk page (see hooks.py: app_include_css). * Matches the markup from public/js/lukenya_navigation.js (lukenya.nav.render). * Do not copy these rules into individual page .css files — if the sidebar * needs to change, change it here and every page picks it up. */ .lm-side, .lm-side * { box-sizing: border-box; } .lm-side :where(button) { font: inherit; color: inherit; cursor: pointer; } .lm-side .lm-ico { flex: none; } .lm-side { --lm-primary: #0f9818; --lm-primary-ink: #ffffff; --lm-side-top: #06381c; --lm-side-bottom: #0a5c2a; --lm-side-ink: #c9d4ea; --lm-radius: 14px; --lm-radius-sm: 10px; position: sticky; top: var(--navbar-height, 48px); height: calc(100vh - var(--navbar-height, 48px)); width: 248px; flex: none; display: flex; flex-direction: column; gap: 8px; padding: 20px 14px; background: linear-gradient(180deg, var(--lm-side-top), var(--lm-side-bottom)); color: var(--lm-side-ink); } .lm-brand { display: flex; align-items: center; gap: 10px; padding: 0 8px 18px; color: #fff; } .lm-brand__mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: transparent; color: #fff; } .lm-brand__mark img { width: 100%; height: 100%; object-fit: contain; } .lm-brand__name { font-size: 15px; white-space: nowrap; font-weight: 700; letter-spacing: 0.1px; } .lm-nav { display: flex; flex-direction: column; gap: 4px; } .lm-nav__item { display: flex; align-items: center; gap: 12px; width: 100%; padding: 11px 14px; border: 0; border-radius: var(--lm-radius-sm); background: transparent; color: var(--lm-side-ink); font-size: 14px; font-weight: 500; text-align: left; transition: background-color 0.15s ease, color 0.15s ease; } .lm-nav__item:hover { background: rgba(255, 255, 255, 0.07); color: #fff; } .lm-nav__item.is-active { background: var(--lm-primary); color: var(--lm-primary-ink); box-shadow: 0 6px 16px rgba(15, 152, 24, 0.35); } .lm-nav__item.is-soon { opacity: 0.55; cursor: not-allowed; } .lm-nav__item.is-soon:hover { background: transparent; color: var(--lm-side-ink); } .lm-side__workspace { margin: auto 0 0; padding: 9px 14px; border: 1px solid rgba(255, 255, 255, 0.16); border-radius: var(--lm-radius-sm); background: transparent; color: var(--lm-side-ink); font-size: 13px; transition: background-color 0.15s ease; } .lm-side__workspace:hover { background: rgba(255, 255, 255, 0.07); } .lm-side__promo { display: flex; align-items: flex-end; min-height: 120px; padding: 14px; border-radius: var(--lm-radius); background: linear-gradient(180deg, rgba(6, 56, 28, 0) 30%, rgba(6, 56, 28, 0.9)), linear-gradient(160deg, #1c7a3a 0%, #0a3d1e 100%); color: #fff; } .lm-side__promo p { margin: 0; font-size: 14px; font-weight: 700; line-height: 1.3; max-width: 9em; } .lm-side :is(button):focus-visible { outline: 2px solid #fff; outline-offset: 2px; } @media (max-width: 900px) { .lm-side { position: static; height: auto; width: 100%; flex-direction: row; flex-wrap: wrap; align-items: center; padding: 12px; } .lm-brand { padding: 0 8px 0 0; } .lm-nav { flex-direction: row; flex-wrap: wrap; } .lm-nav__item span { display: none; } .lm-nav__item { width: auto; padding: 10px; } .lm-side__workspace, .lm-side__promo { display: none; } }