view website/www/_static/style.css @ 7399:deb8e7e6d66d

Skip redis tests if unable to communicate with the server. If the redis module is in the test environment, the redis tests will not be skipped. If connecting to redis during testing fails with a ConnectionError because there is no redis server at localhost, or if it fails with an AuthenticationError, you would fail a slew of tests. This causes the tests to report as skipped if either of the two errors occurs. It is very inefficient as it fails in setup() for the tests, but at least it does report skipping the tests. Also documented how to pass the redis password to the tests in the test part of the install docs. Future note: running tests needs proper docs in development.txt (including database setup) and a link left to that doc in installation.txt.
author John Rouillard <rouilj@ieee.org>
date Wed, 24 May 2023 12:52:53 -0400
parents 639a926cbb1a
children bd5bebb11695
line wrap: on
line source

/* layout*/

/* Set up fluid type scale. Major third for smaller screens
   and perfect fourth for larger screens.
   Allow override using --font-level-X.

 https://utopia.fyi/type/calculator?c=320,16,1.25,1280,18,1.333,4,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12
*/

:root {
  --_font-level_-2: var(--font-level_-2,
		       clamp(0.63em,
			     0.64rem + -0.01vw,
			     0.64em)
		      );
  --_font-level_-1: var(--font-level_-1,
		       clamp(0.80rem,
			     0.79rem + 0.07vw,
			     0.84rem)
		      );
  --_font-level-0: var(--font-level-0,
		       clamp(1rem,
			     0.96rem + 0.21vw,
			     1.13rem)
		      );
  --_font-level-1: var(--font-level-1,
		       clamp(
			   1.25 * var(--_font-level-0),
			   1.17rem + 0.42vw,
			   1.5rem)
		      );
  --_font-level-2: var(--font-level-2,
		       clamp(
			   1.25 * var(--_font-level-1),
			   1.42rem + 0.73vw,
			   2rem)
		      );
  --_font-level-3: var(--font-level-3,
		       clamp(
			   1.25 * var(--_font-level-2),
			   1.72rem + 1.19vw,
			   2.66rem)
		      );
  --_font-level-4: var(--font-level-4,
		       clamp(
			   1.25 * var(--_font-level-3),
			   2.07rem + 1.85vw,
			   3.55rem)
		      );
}

* + * { margin-block-start: 1.2em;}

/* shrink spacing between list elements in tables of contents,
   badge displays */
div.toctree-wrapper * + *, div.contents * + *, div.release_info * {
    margin-block-start: 0.25em;
}

h1, h2, h3, h4, h5, h6 {
    line-height: 1.25;
    /* Larger spacing before header and smaller after to make
       header part of following section */
    margin-block-end: 0.3em;
}

h1 {
    font-size: var(--_font-level-4);
}

/* remove whitespace at top of main column */ 
main h1 { margin-block-start: 0; }

h2 {
  font-size: var(--_font-level-3);
}

h3 {
  font-size: var(--_font-level-2);
}

h4 {
  font-size: var(--_font-level-1);
}

/* snug header up to first paragraph of it's section. */
:is(h1,h2,h3,h4,h5,h6) + p {
    margin-block-start: 0;
}

body 
{
  background-color: #f5f5f5;
  color: rgb(20,20,20);
  font-family: sans-serif, Arial, Helvetica;
  font-size: var(--_font-level-0);
  margin:0;
  padding: 0 3em 0 14em;
}

/* -14em is size of table of contents/nav */
body > .header { margin: 0 0 0 -14em;}
body > header > div.mobile { display:none; }
body > .header div.label { font-size: 2em; font-weight: bold; margin: 0.67em 0 0.67em 1em;}
body > .footer { margin: 1em 0 1em -14em; clear:both;}
body > .navigation 
{
  margin-left: -14em;
  margin-inline-start: -14em;
  width: 14em;
  float: left;
}
body > .content 
{
  margin: 0;
  width: 100%;
}
body > .header > #searchbox { position: absolute; right: 1em; top: 1em;}
body > .content > #subnav    { position: absolute; right: 1.5em; top: 6em;}

main {
  line-height: calc(1.5 * 1em);
  max-width: 65ch;
}

/* full bleed for highlighted example code. This works for
   highlighted code directly in each section. If the example
   is inside a list, table etc, the list/table is constrained
   to 65ch and we don't get a full bleed example.

div.section *:not(div[class^=highlight-]):not(div[class^=highlight-] *):not(div.section) {
  max-width: 65ch;
}
*/

/* trying to full bleed highlighted code section using using
grid layout. Doesn't work as each header level inserts a
div.section, so the grid is applied to main > div > div >
div.section and highlighted code isn't in a grid display
environment anymore.  Subgrid would fix this but....

 main > div > div {
  display: grid;
  grid-template-columns: 65ch 1fr;
}

main > div > div > * {
    grid-column: 1/2;
}

div[class^=highlight] {
  width: 100%;
  grid-column: 1 / 3;
}
*/

/* try full bleed without grid. Make everything except the
   highlight container and its children 65ch in width.
   However need to explicitly set a width for some reason on
   the container and children. 100% or other relative width
   doesn't work. Probably again because of div.section being
   set to 65ch max width. Can use absolute size values, but
   how to calculate them when I don't know where the left
   margin is of the highlight div.

main :not(div[class^=highlight-]):not(div[class^=highlight-] *) {
  position: relative;
  max-width: 65ch;
}

div[class^=highlight-], div[class^=highlight-] * { width:
						   calc(100vw
							- 15em); }
*/

/* style */

:link { color: rgb(220,0,0); text-decoration: none;}
:link:hover {text-decoration: underline;}
:visited { color: rgb(187,0,0); text-decoration: none;}
a.toc-backref { color: #000000; }

.header h1 { margin-left: 1em; }

.menu { padding: 0; margin-right: 1em;}
.menu ul 
{
  padding: 0;
  margin: 0;
}
.menu li
{
  margin: 5pt 0;
}
.menu > ul > li > *
{ 
  display: block;
  padding: 2pt 2pt 2pt 10pt;
  border: solid thin #dadada;
  background-color:#ffffff;
}
.menu > ul > li.current > *
{ 
  background-color:#dddddd;
}

.menu ul li:first-child { margin-top:0;}
.menu ul { list-style-type:none;}

/* sub-menus are indented */ 
.menu > ul > li > ul,
.menu > ul > li.current > ul
{
  border:none;
  background-color: inherit;
}
.menu ul ul 
{
  margin-left: 1em;
  font-size: smaller;
}

/* sub-menu items draw a separator */
.menu ul ul > li 
{  
  margin: 0;
  padding: 0.5em;
  border: none;
  border-top: solid thin #dadada;
  background-color: inherit;
}
.menu ul ul > li:first-child
{  
  border-top: none;
}

.menu ul li.toctree-l2.current {
  background-color: #dddddd;
  pading-block: 0.25em;
}

/* related */
div.related 
{
  width: 100%;
  font-size: 90%;
}
div.related-top { border-bottom: solid thin #dadada;}
div.related-bottom { border-top: solid thin #dadada;}

div.related ul 
{
  margin: 0;
  padding: 0 0 0 10px;
  list-style: none;
}

div.related li { display: inline;}

div.related li.right 
{
  float: right;
  margin-right: 5px;
}

.footer
{
  font-size: small;
  text-align: center;
  color: black;
}

.footer img {
  vertical-align: middle;
}

.content
{ 
  padding: 1em;
  border: solid thin #dadada;
  background-color: #f7f7f7;
}

/* This is a little hack to inject a 'news' block into the title
   page without having to set up a custom directive. */
#roundup-issue-tracker .note
{
  float: right;
  width: auto;
  border: solid thin #dadada;
  background-color:#f5f5f5;
  padding: 1em;
  margin: 1em;
}
#roundup-issue-tracker .note .admonition-title { display: none; }

table
{ 
  border-collapse: collapse;
  border-spacing: 1px;
  background-color: #fafafa;
}

table:has(caption) {
    margin-block: 1em;
}

table caption { font-weight: bold; font-size: smaller; }

table.footnote {
  font-size: var(--_font-level_-1);
  position: relative
}

table.footnote::before {
  border: 1px solid black;
  content: "";
  left: 0;
  position: absolute;
  top: 0;
  width: 25%;
}

table.captionbelow {
  caption-side: bottom;
}

td {
  /* pull text away from borders */
  padding-inline: 0.5em;
}

td > p {
  /* remove top margin on a p inside table cell so that
     columns with paragraphs align at top of cell rather
     than leaving a blank margin */
  margin-block-start: 0px;
}

input, textarea { border-width: 1px; }

a.headerlink {
  font-size: 0.8em;
  margin-left: 0.3em;
  color: #c99;
}

div.admonition {
  padding-inline: 1em;
  padding-block: 0.25em;
  border-inline-start: grey solid 4px;
  background-color: #dfdfdf;
}

div.admonition.caution {
  border-inline-start: red solid 4px;
}

div.admonition.warning {
  border-inline-start: yellow solid 4px;
}

p.admonition-title {
  border-block-end: grey solid 2px;
  font-weight: bold;
  font-size: larger;
  margin-block: 0;
}

div.admonition.caution p.admonition-title {
  border-block-end: red solid 2px;
}

dt { font-weight: bold; margin-block-start: 1em;}
dt + dd { margin-block-start: 0.25em; }
dd p.first { margin-block-start: 0; }
dd > ul:first-child {
    /* reduce indent with list inside dd. I want to reduce
       margin-inline-start on dd but :has(> ul:first-child)
       doesn't work in firefox yet, so use negative margin
       on ul. */
    margin-inline-start: -32px;
}

#skiplink { display: block;
                   margin-block-start: 1em;
                   margin-inline-start: 1em;}
#skiplink a {
  /* force stuff for screenreader off screen */
  position:absolute;
  left:-10000px;
  top:auto;
  width:1px;
  height:1px;
  overflow:hidden;
  padding: 0 0.75em;
  font-weight: bold;
}
#skiplink a:focus { position: static;
                    width: auto;
                    height: auto; }

/* remove solid black border when focus is around the main section
   due to activation of skip-link. Page jumps there, that's enough. */
#main:focus-visible {outline: none;}

/* Prevent examples from extending outside the viewport */
/*div.highlight > pre {
    overflow-wrap: anywhere;
    white-space: break-spaces;
}*/

/* Forcing wrap in a pre leads to some confusing line breaks.
   Use a horizontal scroll. Indicate the scroll by using
   rounded scroll shadows.

  https://css-tricks.com/books/greatest-css-tricks/scroll-shadows/
  https://blogit.create.pt/pedrolopes/2022/03/24/css-scroll-shadows/
 */
div.highlight > pre {
    overflow-wrap: normal;
    overflow-x: auto;
    /* Shadows */
    background-image:
       /* Shadow covers */
       linear-gradient(to right, #f5f4d8, #f5f4d8),
       linear-gradient(to right, #f5f4d8, #f5f4d8),
       /* Shadow */
       radial-gradient(farthest-side at 0px 50%,
		       rgba(0, 0, 20, 0.5), rgba(255, 255, 255, 0)),
       radial-gradient(farthest-side at 100% 50%,
		       rgba(0, 0, 20, 0.5), rgba(255, 255, 255, 0));
    /* square shadows */
    /*
    linear-gradient(to right, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0)),
    linear-gradient(to left, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0));
    */
    background-position: left center, right center,
                         left center, right center;
    background-repeat: no-repeat;
    background-color: #f5f4d8;
    background-size: 20px 100%, 20px 100%, 16px 100%, 16px 100%;
    background-attachment: local, local, scroll, scroll;
}

/* website only */
/* assume desktop reader for local html files, also no contact
   page for local doc files */

@media only screen and (max-width:960px) {
    /* setup for layout/page frame */
    body { padding-inline-start: unset; /* remove space for float menu */}
    body > .header { margin-inline-start: unset;
	             margin-block-start: 3em; /* move down from search */}
    body > .navigation { margin-inline-start: unset;
			 width: unset;
			 float: none;}
    body > .navigation li > ul > li { padding-block: 1em;
    /* move links away from each other */ }
    #roundup-issue-tracker .note { float: none; /* download box */}
    body > header > div.label.mobile { /* constrain nav label div */
	display: block;
	margin-inline-start: 0.5em;
	max-width: 48%;
    }

    /* activate jump link and hide default label at top of stacked sidebar */
    body > header > div.mobile span.jumplabel {
	display: block;
	font-size: small;
    }
    body > header > div.non_mobile { display: none; }

    body > .footer { margin-inline-start: 1em; }

    /* changes for content */
    /* stop paths and things from overflowing the viewport. */
    div.content { overflow-wrap: break-word; }

    /* add space between items in TOC to make hitting the links easier */
    li[class^=toctree] { margin-block: 1em; }
    li[class^=toctree] > ul { margin-top: 1em; }

    div.contents ul.simple li { padding-block: .5em; }

    h1 + div.contents > ul:first-child {
	/* reduce wasted whitespace to left in TOC */
	padding-inline-start: 1em;
    }
    #subnav {
	margin-block-end: 1em;
	min-height: 48px;
    }

    /* use for table of links to increase space between
    links on small devices */
    table.linkspacing tr {height: 48px;}
}

@media only screen and (max-width:512px) {
    /* prevent searchbox bleed into jumplink@top left. */
    #searchbox { max-width: 48%; }
    #searchbox > form {
	align-items: flex-end;
	display: inline-flex;
	flex-direction: column;
    }
    #searchbox > form > input[type=submit] { margin-block: 0.75em; }
}
/* Contact page */
div#contact table td {
  white-space: nowrap;
  padding: 1pt 1em;
}


Roundup Issue Tracker: http://roundup-tracker.org/