| // Copyright (C) 2020 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // ----------------------------------------------------------------------------- |
| // Common + CSS reset |
| // ----------------------------------------------------------------------------- |
| :root { |
| --site-header-height: 50px; |
| --home-highlights-height: 128px; |
| --content-max-width: 1100px; |
| --anim-ease: cubic-bezier(0.4, 0, 0.2, 1); |
| |
| // This is set to 1 by JS after onload. This is to prevent flickering on |
| // page load on the nav bar and other entries while transitioning in their |
| // initial state. |
| --anim-enabled: 0; |
| |
| --anim-time: calc(0.15s * var(--anim-enabled)); |
| } |
| |
| $wide: "(max-width: 1100px)"; |
| $mobile: "(max-width: 768px)"; |
| |
| @mixin minimal-scrollbar { |
| &::-webkit-scrollbar { |
| width: 8px; |
| background-color: transparent; |
| } |
| &::-webkit-scrollbar-thumb { |
| background-color: #ccc; |
| border-radius: 8px; |
| } |
| } |
| |
| @media (max-aspect-ratio: 1/1) { |
| :root { |
| --home-highlights-height: 256px; |
| } |
| } |
| |
| * { |
| box-sizing: border-box; |
| -webkit-tap-highlight-color: none; |
| } |
| |
| html { |
| font-family: Roboto, sans-serif; |
| -webkit-font-smoothing: antialiased; |
| } |
| |
| html, |
| body { |
| padding: 0; |
| margin: 0; |
| } |
| |
| h1, |
| h2, |
| h3 { |
| font-family: inherit; |
| font-size: inherit; |
| font-weight: inherit; |
| padding: 0; |
| margin: 0; |
| } |
| |
| // ----------------------------------------------------------------------------- |
| // Site header |
| // ----------------------------------------------------------------------------- |
| .site-header { |
| background-color: hsl(210, 30%, 16%); |
| color: hsl(210, 17%, 98%); |
| position: sticky; // Sticky so the .docs element below doesn't start @ 0. |
| top: 0; |
| width: 100%; |
| --sh-padding-y: 5px; |
| max-height: var(--site-header-height); |
| padding: var(--sh-padding-y) 30px; |
| box-shadow: rgba(0, 0, 0, 0.3) 0 3px 3px 0; |
| overflow: hidden; |
| display: flex; |
| z-index: 10; |
| transition: max-height var(--anim-ease) var(--anim-time); |
| &.expanded { |
| max-height: 100vh; |
| } |
| .brand { |
| img { |
| height: 40px; |
| vertical-align: bottom; |
| } |
| font-weight: 200; |
| font-size: 28px; |
| flex-grow: 1; |
| .brand-docs { |
| text-transform: uppercase; |
| font-size: 14px; |
| color: #ecba2a; |
| vertical-align: bottom; |
| line-height: 30px; |
| font-weight: 400; |
| } |
| } |
| > *:not(:first-child) { |
| line-height: calc(var(--site-header-height) - var(--sh-padding-y) * 2); |
| font-family: "Source Sans Pro", sans-serif; |
| font-weight: 400; |
| font-size: 1.1rem; |
| margin: 0 20px; |
| color: hsl(210, 17%, 85%); |
| } |
| a { |
| text-decoration: none; |
| &:hover { |
| color: hsl(210, 17%, 100%); |
| } |
| } |
| .menu { |
| visibility: hidden; |
| font-family: "Material Icons Round"; |
| font-size: 24px; |
| text-align: center; |
| position: absolute; |
| right: 0; |
| top: 0; |
| line-height: var(--site-header-height); |
| } |
| |
| @media #{$mobile} { |
| flex-direction: column; |
| > *:not(:first-child) { |
| margin-left: 40px; |
| } |
| .menu { |
| visibility: visible; |
| } |
| } |
| } |
| |
| #search { |
| position: relative; |
| flex-grow: 0; |
| transition: flex-grow cubic-bezier(1, 0.01, 1, 1) var(--anim-time), |
| background-color ease var(--anim-time); |
| padding: 0; |
| &::before { |
| visibility: hidden; |
| user-select: none; |
| content: ""; |
| position: fixed; |
| left: 0; |
| right: 0; |
| top: var(--site-header-height); |
| bottom: 0; |
| z-index: -100; |
| background-color: rgba(255, 255, 255, 0.8); |
| backdrop-filter: blur(3px); |
| opacity: 0; |
| transition: opacity ease var(--anim-time), visibility 0s; |
| } |
| &:focus-within { |
| flex-grow: 1000; |
| &::before { |
| display: block; |
| opacity: 1; |
| visibility: visible; |
| } |
| #search-res { |
| display: block; |
| } |
| } |
| |
| @media #{$mobile} { |
| display: none; |
| } |
| |
| #search-box { |
| width: 100%; |
| height: 32px; |
| font-size: 1rem; |
| color: #333; |
| background-color: rgba(255, 255, 255, 0.9); |
| border: 1px solid #eee; |
| border-radius: 2px; |
| background-image: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M39.8 41.95 26.65 28.8q-1.5 1.3-3.5 2.025-2 .725-4.25.725-5.4 0-9.15-3.75T6 18.75q0-5.3 3.75-9.05 3.75-3.75 9.1-3.75 5.3 0 9.025 3.75 3.725 3.75 3.725 9.05 0 2.15-.7 4.15-.7 2-2.1 3.75L42 39.75Zm-20.95-13.4q4.05 0 6.9-2.875Q28.6 22.8 28.6 18.75t-2.85-6.925Q22.9 8.95 18.85 8.95q-4.1 0-6.975 2.875T9 18.75q0 4.05 2.875 6.925t6.975 2.875Z"/></svg>'); |
| background-repeat: no-repeat; |
| background-size: contain; |
| padding-left: 40px; |
| outline: none; |
| &:hover, |
| &:focus { |
| background-color: rgba(255, 255, 255, 0.95); |
| } |
| } |
| |
| #search-res { |
| display: none; |
| background-color: rgba(255, 255, 255, 1); |
| border: 1px solid #eee; |
| box-shadow: #aaa 0px 1px 5px; |
| color: #333; |
| line-height: initial; |
| margin-top: -4px; |
| overflow-x: auto; |
| position: fixed; |
| top: var(--site-header-height); |
| max-height: calc(100vh - var(--site-header-height)); |
| z-index: 10; |
| > div { |
| padding: 10px; |
| margin: 0; |
| &:hover { |
| background-color: #f0f0f0; |
| } |
| } |
| .sr-title { |
| color: #333; |
| font-weight: bold; |
| } |
| .sr-snippet { |
| color: #444; |
| font-size: 0.9rem; |
| } |
| |
| a { |
| text-decoration: none; |
| } |
| a:hover { |
| color: initial; |
| } |
| |
| &:empty { |
| visibility: hidden; |
| } |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| // Site footer |
| // ----------------------------------------------------------------------------- |
| |
| // Footer in the index page. |
| .site-footer { |
| background-color: hsl(210, 30%, 16%); |
| padding: 1em 0; |
| font-size: 14px; |
| color: #fff; |
| text-align: center; |
| ul { |
| list-style: none; |
| margin: 0; |
| padding: 0; |
| li { |
| display: inline; |
| padding: 0 10px; |
| &:not(:last-child) { |
| border-right: solid 1px #fff; |
| } |
| } |
| } |
| a, |
| a:visited { |
| text-decoration: none; |
| color: inherit; |
| } |
| .docs-footer-notice { |
| display: none; |
| } |
| } |
| |
| // Footer overrides for the /docs/ page. |
| .docs .site-footer { |
| grid-area: footer; |
| background: transparent; |
| color: #666; |
| text-align: left; |
| margin: 0 20px; |
| padding: 12px 0; |
| |
| .docs-footer-notice { |
| padding: 0; |
| margin: 0; |
| display: block; |
| } |
| |
| ul { |
| display: none; |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| // Site content |
| // ----------------------------------------------------------------------------- |
| .site-content { |
| .section-wrapper { |
| border-bottom: solid 1px #eee; |
| &:nth-child(2n + 1) { |
| background-color: hsl(210, 17%, 98%); |
| } |
| } |
| section { |
| display: block; |
| position: relative; |
| overflow: hidden; |
| padding: 0 20px; |
| margin: 0 auto; |
| max-width: calc(var(--content-max-width) + 2 * 20px); |
| } |
| |
| .banner { |
| height: calc( |
| 100vh - var(--home-highlights-height) - var(--site-header-height) |
| ); |
| @media (max-height: 639px) { |
| // If the screen is too short (e.g. smartphone in landscape mode) |
| // move the highlights sections (the four tiles) out of the visible |
| // viewport. |
| height: calc(100vh - var(--site-header-height)); |
| } |
| min-height: 25vw; |
| display: grid; |
| grid-template-columns: 1fr; |
| grid-template-rows: 1fr 1fr 5fr; |
| h1, |
| h2 { |
| margin: auto; |
| font-family: "Source Sans Pro", sans-serif; |
| text-align: center; |
| color: hsl(0, 0, 35%); |
| span { |
| white-space: nowrap; |
| } |
| } |
| h1 { |
| font-size: 2.5rem; |
| font-size: calc(min(4rem, 8vw, 6vh)); |
| font-weight: 400; |
| padding-top: calc(max(1rem, 2vh)); |
| } |
| h2 { |
| font-size: 1.25rem; |
| font-size: calc(min(2rem, 6vw, 4vh)); |
| font-weight: 200; |
| padding-top: 10px; |
| } |
| .home-img { |
| padding: 1rem 0; |
| overflow: hidden; |
| position: relative; |
| display: flex; |
| img { |
| max-height: 100%; |
| max-width: 100%; |
| margin: auto; |
| display: block; |
| } |
| } |
| } |
| |
| .home-highlights { |
| &:before { |
| border-top: 1px solid hsl(210, 17%, 90%); |
| } |
| height: var(--home-highlights-height); |
| display: grid; |
| grid-template-columns: repeat(4, 1fr); |
| grid-template-rows: 1fr; |
| background-color: #fff; |
| z-index: 2; |
| @media (max-aspect-ratio: 1/1) { |
| grid-template-columns: repeat(2, 1fr); |
| } |
| > a { |
| color: hsl(0, 0, 20%); |
| font-size: 22px; |
| font-weight: 400; |
| text-align: center; |
| padding: 20px 0; |
| font-family: "Source Sans Pro", sans-serif; |
| text-decoration: none; |
| .icon { |
| background-image: url("/assets/sprite.png"); |
| background-repeat: no-repeat; |
| width: 64px; |
| height: 64px; |
| margin: auto; |
| background-size: 256px 128px; |
| filter: grayscale(1); |
| transition: filter ease var(--anim-time); |
| } |
| &:nth-child(1) .icon { |
| background-position: 0 -64px; |
| } |
| &:nth-child(2) .icon { |
| background-position: -64px -64px; |
| } |
| &:nth-child(3) .icon { |
| background-position: -128px -64px; |
| } |
| &:nth-child(4) .icon { |
| background-position: -192px -64px; |
| } |
| &:hover { |
| background-color: hsl(210, 17%, 90%); |
| .icon { |
| filter: grayscale(0); |
| } |
| } |
| } |
| } |
| .home-section { |
| min-height: calc(min(100vh - var(--site-header-height), 800px)); |
| padding: 5% 20px; |
| display: grid; |
| grid-template-rows: 1fr; |
| grid-column-gap: 4vw; |
| > img { |
| grid-area: img; |
| max-width: 100%; |
| max-height: 55vh; |
| margin: auto; |
| margin-top: 40px; |
| } |
| h2, |
| > div { |
| grid-area: content; |
| } |
| h2 { |
| font-family: "Source Sans Pro", sans-serif; |
| font-weight: 600; |
| font-size: 2.5rem; |
| color: #333; |
| text-align: center; |
| } |
| &:nth-child(2n) { |
| grid-template-columns: 5fr 4fr; |
| grid-template-areas: "content img"; |
| h2 { |
| padding: 0 0 0 50px; |
| text-align: left; |
| } |
| } |
| &:nth-child(2n + 1) { |
| grid-template-columns: 4fr 5fr; |
| grid-template-areas: "img content"; |
| h2 { |
| padding: 0 50px 0 0; |
| text-align: left; |
| } |
| } |
| @media (max-aspect-ratio: 1/1) { |
| padding: 5vh 20px; |
| &:nth-child(n) { |
| grid-template-rows: auto auto; |
| grid-template-columns: 1fr; |
| grid-template-areas: "img" "content"; |
| grid-row-gap: 30px; |
| h2 { |
| padding: 0; |
| text-align: center; |
| } |
| } |
| > img { |
| padding: 0 10vw; |
| } |
| } |
| div { |
| grid-area: content; |
| .button { |
| display: inline-block; |
| background: #337ab7; |
| font-weight: 500; |
| color: #fff; |
| border-radius: 6px; |
| font-size: 18px; |
| padding: 10px 16px; |
| transition: background-color ease var(--anim-time); |
| text-decoration: none; |
| &:hover { |
| background: #286090; |
| } |
| } |
| } |
| .home-item { |
| display: grid; |
| grid-template-rows: auto auto; |
| grid-template-columns: 50px auto; |
| grid-template-areas: "img title" "img label"; |
| grid-column-gap: 20px; |
| padding: 20px 30px; |
| margin: 10px 0; |
| // border: 1px solid #eee; |
| font-family: "Source Sans Pro", sans-serif; |
| color: #111111; |
| transition: filter var(--anim-ease) var(--anim-time), |
| background-color var(--anim-ease) var(--anim-time), |
| transform var(--anim-ease) var(--anim-time), |
| box-shadow linear var(--anim-time); |
| border-radius: 6px; |
| filter: opacity(0.6); |
| &:hover { |
| background-color: hsla(0, 0, 0, 0.02); |
| filter: opacity(1); |
| transform: scale(1.01); |
| } |
| > img, |
| > i { |
| grid-area: img; |
| margin: auto; |
| font-size: 50px; |
| } |
| > h3 { |
| grid-area: title; |
| font-size: 1.25rem; |
| line-height: 20px; |
| font-weight: 600; |
| } |
| > p { |
| grid-area: label; |
| font-size: 1rem; |
| font-weight: 400; |
| margin: 1em 0; |
| } |
| } |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| // Docs |
| // ----------------------------------------------------------------------------- |
| .docs { |
| min-height: 100vh; |
| display: grid; |
| --nav-width: 240px; |
| --toc-width: 180px; |
| |
| // 1665px is the clientWidth on a macbook pro. Adjust the layout so that |
| // the max-width of the central .doc fits precisely when the browser is |
| // full-screen on a macbook. |
| --max-doc-width: calc(1665px - var(--toc-width) - var(--nav-width)); |
| |
| grid-template-columns: var(--nav-width) minmax(auto, var(--max-doc-width)) var( |
| --toc-width |
| ); |
| grid-template-rows: 1fr max-content; |
| grid-template-areas: "nav doc toc" "nav footer toc"; |
| |
| background-color: hsl(210, 10%, 97%); |
| .nav { |
| grid-area: nav; |
| border-right: 1px solid hsl(210, 30%, 90%); |
| background-color: #fefefe; |
| padding: 20px 0; |
| padding-right: 16px; |
| |
| position: sticky; |
| top: var(--site-header-height); |
| height: calc(100vh - var(--site-header-height)); |
| overflow-y: auto; |
| @include minimal-scrollbar; |
| |
| a { |
| color: inherit; |
| text-decoration: none; |
| line-height: 24px; |
| display: flex; |
| transition: background-color var(--anim-ease) var(--anim-time), |
| visibility linear var(--anim-time); |
| border-radius: 0 10px 10px 0; |
| -webkit-tap-highlight-color: transparent; |
| &[href] { |
| &:hover { |
| color: #000; |
| background-color: #f1f3f4; |
| } |
| &.selected { |
| background-color: #ecba2a; |
| } |
| } |
| } |
| |
| ul { |
| list-style: none; |
| margin: 0; |
| padding: 0; |
| overflow: hidden; |
| li { |
| font-size: 1rem; |
| font-weight: 400; |
| font-family: "Source Sans Pro", sans-serif; |
| color: #4a4a4a; |
| max-width: 100%; |
| margin: 3px 0; |
| } |
| p { |
| margin: 0; |
| } |
| } |
| |
| // Applies only to outer-level submenus. |
| > ul { |
| position: static; // Otherwise gets v-centered in the middle. |
| > li { |
| padding-bottom: 10px; |
| margin-bottom: 10px; |
| font-weight: 600; |
| color: #111; |
| |
| &:not(:last-child) { |
| border-bottom: 1px solid #eee; |
| } |
| |
| &.compressible { |
| > p > a::after { |
| content: "keyboard_arrow_up"; |
| font-family: "Material Icons Round"; |
| font-size: 24px; |
| width: 24px; |
| transition: transform var(--anim-ease) var(--anim-time); |
| margin: 0 0 0 auto; |
| font-weight: 200; |
| color: #666; |
| } |
| > ul { |
| transition: max-height var(--anim-ease) var(--anim-time), |
| opacity var(--anim-ease) var(--anim-time); |
| opacity: 1; |
| } |
| &.compressed { |
| // The JS will compute and set the maxHeight on each |
| // element depending on the size of their children. |
| // !important is needed to override the element-inline |
| // max-height property set by JS, which is prioritary. |
| > ul { |
| max-height: 0 !important; |
| visibility: hidden; |
| opacity: 0; |
| } |
| > p > a::after { |
| transform: scaleY(-1); |
| } |
| } |
| } // .compressible |
| } |
| } |
| |
| li a { |
| padding-left: 16px; |
| } |
| li li a { |
| padding-left: 30px; |
| } |
| li li li a { |
| padding-left: 44px; |
| } |
| .expanded a::after { |
| transform: rotate(180deg); |
| } |
| } |
| .doc { |
| grid-area: doc; |
| background-color: #fff; |
| margin: 20px; |
| padding: 30px 40px; |
| font-family: Roboto, sans-serif; |
| font-size: 1rem; |
| font-weight: 400; |
| line-height: 24px; |
| -webkit-font-smoothing: antialiased; |
| color: #4a4a4a; |
| position: relative; |
| box-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.1), |
| 0 1px 3px 1px rgba(60, 64, 67, 0.15); |
| overflow: hidden; |
| |
| a { |
| text-decoration: none; |
| &:link { |
| color: #007b83; |
| } |
| &:visited { |
| color: #8e3317; |
| } |
| &:hover { |
| color: #009da8; |
| } |
| &[href^="http"] { |
| // External link. |
| &:after { |
| content: "open_in_new"; |
| font-family: "Material Icons Round"; |
| color: #666; |
| text-decoration: none; |
| margin-left: 2px; |
| margin-right: 4px; |
| vertical-align: bottom; |
| } |
| } |
| } |
| |
| h1, |
| h2, |
| h3 { |
| margin: 10px 0; |
| padding: 0; |
| padding-top: 30px; |
| } |
| h1 { |
| font-size: 2.25rem; |
| line-height: 2.25rem; |
| margin: 0; |
| padding: 0; |
| margin-bottom: 1.5rem; |
| font-family: "Source Sans Pro", sans-serif; |
| } |
| h2 { |
| font-size: 1.5rem; |
| border-bottom: 1px solid #e8eaed; |
| padding-bottom: 6px; |
| } |
| h3 { |
| font-size: 1.25rem; |
| } |
| * { |
| max-width: 100%; |
| } |
| |
| img[alt$="screenshot"] { |
| box-shadow: 0 0 10px 2px #eee; |
| } |
| |
| code:not(.code-block) { |
| background: hsla(210, 17%, 90%, 0.2); |
| border: 1px solid #e8eaed; |
| border-radius: 6px; |
| padding: 1px 4px; |
| } |
| .code-block { |
| overflow-x: auto; |
| white-space: pre; |
| border-radius: 6px; |
| box-shadow: 1px 1px 6px #999; |
| border-top: 5px solid #8bc34a; |
| } |
| // Hide mermaid graphs until they are rendered, this is to avoid showing |
| // the mermaid source while the renderer generates the SVG. |
| .mermaid { |
| transition: opacity var(--anim-ease) var(--anim-time); |
| &:not(.rendered) { |
| opacity: 0; |
| } |
| } |
| .anchor { |
| margin-left: -29px; |
| padding-right: 5px; |
| text-decoration: none; |
| position: absolute; |
| padding-top: var(--site-header-height); |
| margin-top: calc(-1 * var(--site-header-height)); |
| outline: none; |
| opacity: 0; |
| transition: opacity var(--anim-ease) var(--anim-time); |
| &::before { |
| content: "insert_link"; |
| font-family: "Material Icons Round"; |
| color: #333; |
| font-size: 24px; |
| } |
| } |
| *:hover .anchor { |
| opacity: 1; |
| } |
| code { |
| font-family: "Roboto Mono", monospace; |
| font-size: 14px; |
| } |
| table { |
| width: 100%; |
| font-size: 14px; |
| border-spacing: 0; |
| border-collapse: collapse; |
| th, |
| td { |
| padding: 8px; |
| border: 0 solid #dadce0; |
| border-top-width: 1px; |
| border-bottom-width: 1px; |
| } |
| tr { |
| height: 20px; |
| } |
| tr:target { |
| background-color: #ecba2a; |
| } |
| thead { |
| text-align: left; |
| background-color: #e8eaed; |
| color: #202124; |
| } |
| } |
| |
| &[data-md-file^="/docs/reference/"] { |
| h1, |
| h2, |
| h3 { |
| code { |
| margin-left: 20px; |
| color: #666; |
| } |
| } |
| table { |
| width: 100%; |
| font-size: 14px; |
| border-spacing: 0; |
| border-collapse: collapse; |
| th, |
| td { |
| padding: 8px; |
| border: 0 solid #dadce0; |
| border-top-width: 1px; |
| border-bottom-width: 1px; |
| } |
| tr { |
| height: 20px; |
| } |
| thead { |
| text-align: left; |
| background-color: #e8eaed; |
| color: #202124; |
| } |
| td { |
| &:first-child { |
| background: #f7f7f7; |
| } |
| |
| /* Not really 100% but makes sure that the description |
| * column takes most of the width */ |
| &:last-child { |
| width: 80%; |
| } |
| } |
| } |
| } |
| |
| .callout { |
| padding: 0.5rem 0.5rem 0.5rem 2rem; |
| border: none; |
| border-radius: 2px; |
| margin-left: auto; |
| margin-right: auto; |
| width: 90%; |
| border-left: 3px solid transparent; |
| box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), |
| 0 0 0.05rem rgba(0, 0, 0, 0.1); |
| |
| &:before { |
| font-family: "Material Icons Round"; |
| position: absolute; |
| font-size: 1.5rem; |
| margin-left: -1.75rem; |
| margin-top: -2px; |
| } |
| |
| &.note { |
| background-color: #e8f0fe; |
| border-color: #1967d2; |
| color: #1967d2; |
| &:before { |
| content: "bookmark"; |
| } |
| } |
| |
| &.summary { |
| background-color: #e4f7fb; |
| border-color: #129eaf; |
| color: #129eaf; |
| &:before { |
| content: "sms"; |
| } |
| } |
| |
| &.tip { |
| background-color: #e6f4ea; |
| border-color: #188038; |
| color: #188038; |
| &:before { |
| content: "star"; |
| } |
| } |
| |
| &.todo { |
| background-color: #f1f3f4; |
| border-color: #5f6368; |
| color: #5f6368; |
| &:before { |
| content: "error"; |
| } |
| } |
| |
| &.warning { |
| background-color: #fce8e6; |
| border-color: #c5221f; |
| color: #c5221f; |
| &:before { |
| content: "warning"; |
| } |
| } |
| } |
| } |
| .toc { |
| grid-area: toc; |
| padding: 20px 16px 20px 0; |
| |
| position: sticky; |
| top: var(--site-header-height); |
| height: calc(100vh - var(--site-header-height)); |
| overflow-y: auto; |
| @include minimal-scrollbar; |
| |
| font-family: "Source Sans Pro", sans-serif; |
| word-break: break-word; |
| a { |
| text-decoration: none; |
| } |
| a, |
| a:visited { |
| color: #333; |
| } |
| a.highlighted { |
| font-weight: 500; |
| color: hsl(45, 100%, 40%); |
| } |
| font-size: 0.875rem; |
| ul { |
| list-style: none; |
| margin: 0; |
| padding: 0; |
| li { |
| margin: 5px 0; |
| /* This make it so that a single word gets elided but if there |
| * are multiple words they span across lines. */ |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: break-spaces; |
| word-break: normal; |
| } |
| } |
| > ul { |
| border-left: 4px solid #ecba2a; |
| padding-left: 10px; |
| position: static; // Otherwise gets v-centered in the middle. |
| top: calc(var(--site-header-height) + 25px); |
| } |
| } |
| |
| @media #{$wide} { |
| grid-template-columns: var(--nav-width) auto 0; |
| .toc { |
| display: none; |
| } |
| } |
| @media #{$mobile} { |
| display: block; |
| .doc { |
| margin: 0; |
| padding: 20px; |
| } |
| .nav { |
| // JS will persistently toggle to .after_first_click. This is to |
| // avoid spurious transitions on page load. |
| display: none; |
| |
| --nav-width-mobile: calc(min(90vw, 360px)); |
| width: var(--nav-width-mobile); |
| position: fixed; |
| z-index: 2; |
| height: 100vh; |
| overflow-y: auto; |
| top: var(--site-header-height); |
| transition: transform var(--anim-ease) var(--anim-time), |
| box-shadow var(--anim-ease) var(--anim-time), |
| visibility ease var(--anim-time); |
| transform: translateX(calc(-1 * var(--nav-width-mobile))); |
| visibility: hidden; |
| > ul { |
| position: static; |
| top: 0; |
| } |
| &.after_first_click { |
| display: block; |
| } |
| &.expanded { |
| visibility: visible; |
| transform: translateX(0); |
| box-shadow: 0 1px 0 100vw rgba(0, 0, 0, 0.4); |
| } |
| } |
| } |
| } |