/* Base styles and content styles */ :root { /* Browser default font-size is 16px, this way 1 rem = 10px */ font-size: 62.5%; color-scheme: var(--color-scheme); } html { font-family: var(--body-font); color: var(--fg); background-color: var(--bg); text-size-adjust: none; -webkit-text-size-adjust: none; } body { margin: 0; font-size: 1.7rem; line-height: 1.7; overflow-x: hidden; } #body-container { position: relative; background-color: var(--bg); } .bg-animation { position: fixed; inset: 0; pointer-events: none; z-index: 0; background: radial-gradient(ellipse at 20% 20%, var(--bg-effect-primary) 0%, transparent 50%), radial-gradient(ellipse at 80% 80%, var(--bg-effect-secondary) 0%, transparent 50%), radial-gradient(ellipse at 50% 50%, var(--bg-effect-tertiary) 0%, transparent 70%); animation: bg-drift 28s ease-in-out infinite alternate; } .grid-overlay { position: fixed; inset: 0; pointer-events: none; z-index: 1; background-image: linear-gradient(var(--grid-overlay-color) 1px, transparent 1px), linear-gradient(90deg, var(--grid-overlay-color) 1px, transparent 1px); background-size: 50px 50px; opacity: 0.7; animation: grid-float 40s linear infinite; } .particles { position: fixed; inset: 0; pointer-events: none; z-index: 2; overflow: hidden; } .particle { position: absolute; width: 4px; height: 4px; background: var(--particle-color); border-radius: 50%; opacity: 0; filter: blur(0.2px); animation: float-particle 16s infinite; } @keyframes bg-drift { 0% { transform: translate3d(0, 0, 0) scale(1); } 100% { transform: translate3d(-2%, 1%, 0) scale(1.04); } } @keyframes grid-float { 0% { background-position: 0 0, 0 0; } 100% { background-position: 60px 30px, 30px 60px; } } @keyframes float-particle { 0% { transform: translate3d(var(--particle-x), 100vh, 0) rotate(0deg); opacity: 0; } 10% { opacity: 0.6; } 90% { opacity: 0.6; } 100% { transform: translate3d(calc(var(--particle-x) * 1.5), -120vh, 0) rotate(720deg); opacity: 0; } } code { font-family: var(--mono-font) !important; font-size: var(--code-font-size); direction: ltr !important; } /* make long words/inline code not x overflow */ main { overflow-wrap: break-word; } /* make wide tables scroll if they overflow */ .table-wrapper { overflow-x: auto; } /* Don't change font size in headers. */ h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { font-size: unset; } .left { float: left; } .right { float: right; } .boring { opacity: 0.6; } .hide-boring .boring { display: none; } .hidden { display: none !important; } h2, h3 { margin-block-start: 2.5em; } h4, h5 { margin-block-start: 2em; } .header + .header h3, .header + .header h4, .header + .header h5 { margin-block-start: 1em; } h1, h2, h3, h4, h5, h6 { font-family: var(--heading-font); letter-spacing: -0.01em; line-height: 1.2; } h1 { font-size: clamp(2.6rem, 2.2rem + 1.5vw, 3.6rem); } h2 { font-size: clamp(2.1rem, 1.8rem + 1vw, 2.8rem); } h3 { font-size: clamp(1.8rem, 1.6rem + 0.6vw, 2.2rem); } h4 { font-size: 1.7rem; } h5 { font-size: 1.5rem; } h1:target::before, h2:target::before, h3:target::before, h4:target::before, h5:target::before, h6:target::before { display: inline-block; content: "»"; margin-inline-start: -30px; width: 30px; } /* This is broken on Safari as of version 14, but is fixed in Safari Technology Preview 117 which I think will be Safari 14.2. https://bugs.webkit.org/show_bug.cgi?id=218076 */ :target { /* Safari does not support logical properties */ scroll-margin-top: calc(var(--menu-bar-height) + 0.5em); } .page { outline: 0; padding: 0 var(--page-padding); margin-block-start: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */ } .page-wrapper { box-sizing: border-box; background-color: transparent; position: relative; z-index: 5; } .no-js .page-wrapper, .js:not(.sidebar-resizing) .page-wrapper { transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ } [dir=rtl] .js:not(.sidebar-resizing) .page-wrapper { transition: margin-right 0.3s ease, transform 0.3s ease; /* Animation: slide away */ } .content { overflow-y: auto; padding: 10px 10px 60px 10px; } .content main { margin-inline-start: auto; margin-inline-end: auto; max-width: var(--content-max-width); } .content nav { margin-inline-start: auto; margin-inline-end: auto; max-width: var(--content-max-width); margin-top: 24px; } .content p, .content ol, .content ul { line-height: 1.7; } .content p { margin: 0 0 1.2em 0; } .content a { text-decoration: none; } .content a:hover { text-decoration: underline; } .content img, .content video { max-width: 100%; } .content .header:link, .content .header:visited { color: var(--fg); } .content .header:link, .content .header:visited:hover { text-decoration: none; } table { margin: 0 auto; border-collapse: collapse; font-size: 0.95em; } table td { padding: 6px 18px; border: 1px var(--table-border-color) solid; } table thead { background: var(--table-header-bg); } table thead td { font-weight: 700; border: none; } table thead th { padding: 3px 20px; } table thead tr { border: 1px var(--table-header-bg) solid; } /* Alternate background colors for rows */ table tbody tr:nth-child(2n) { background: var(--table-alternate-bg); } blockquote { margin: 20px 0; padding: 0 20px; color: var(--fg); background-color: var(--quote-bg); border-block-start: .1em solid var(--quote-border); border-block-end: .1em solid var(--quote-border); } .warning { margin: 20px; padding: 0 20px; border-inline-start: 2px solid var(--warning-border); } .warning:before { position: absolute; width: 3rem; height: 3rem; margin-inline-start: calc(-1.5rem - 21px); content: "ⓘ"; text-align: center; background-color: var(--bg); color: var(--warning-border); font-weight: bold; font-size: 2rem; } blockquote .warning:before { background-color: var(--quote-bg); } kbd { background-color: var(--table-border-color); border-radius: 4px; border: solid 1px var(--theme-popup-border); box-shadow: inset 0 -1px 0 var(--theme-hover); display: inline-block; font-size: var(--code-font-size); font-family: var(--mono-font); line-height: 10px; padding: 4px 5px; vertical-align: middle; } sup { /* Set the line-height for superscript and footnote references so that there isn't an awkward space appearing above lines that contain the footnote. See https://github.com/rust-lang/mdBook/pull/2443#discussion_r1813773583 for an explanation. */ line-height: 0; } :not(.footnote-definition) + .footnote-definition, .footnote-definition + :not(.footnote-definition) { margin-block-start: 2em; } .footnote-definition { font-size: 0.9em; margin: 0.5em 0; } .footnote-definition p { display: inline; } .tooltiptext { position: absolute; visibility: hidden; color: #fff; background-color: #333; transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */ left:35%; /* Half of the width of the icon */ top: -35px; font-size: 12px; text-align: center; border-radius: 6px; padding: 5px 8px; margin: 5px; z-index: 1000; } .tooltipped .tooltiptext { visibility: visible; } .result-no-output { font-style: italic; } /* Cache invalidation test: keep in sync with HackTricks */