X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/1c6039264da1010372c1bcb4688556255becef0d..HEAD:/base.css diff --git a/base.css b/base.css index 9d01449..e4ed58d 100644 --- a/base.css +++ b/base.css @@ -33,6 +33,8 @@ caption aside { margin-left: 1ex; font-weight: normal; display: inline; + font-size: 91%; /* 100% */ + margin-top: .3ex; /* align with 110% baseline */ } hr { @@ -99,8 +101,10 @@ ul { } pre { - display: inline-block; text-align: left; + margin: 2ex auto; + white-space: pre-wrap; + overflow-wrap: break-word; } body > pre { width: 78ch; @@ -109,30 +113,59 @@ body > pre { padding: 0 1em; border-width: 0 1px; border-style: solid; + white-space: pre; + font-size: 1.9vmin; /* cover full width at most */ +} +code { + white-space: nowrap; } +h1 small, h2 small { position: absolute; /* side note; do not influence alignment */ margin-left: 1em; + font-weight: normal; + font-size: 50%; /* 1rem */ + padding-top: 1.75ex; /* align baseline with container */ +} +h2 small { + font-size: 90.9%; + padding-top: .17ex; } -dl > dt { - float: left; - width: 50%; +.section dl { + display: grid; + grid: auto-flow / 1fr 1fr; + clear: both; +} +.section dl > dt { + grid-column: 1; text-align: right; } +dt code { + white-space: normal; +} dl > dd { + grid-column: 2; text-align: left; padding-left: 1em; - overflow: hidden; + margin: 0 0 .5ex; +} +@media (max-width: 42em) { + .section dl { + grid: auto-flow / minmax(8em, 1fr) minmax(20em, 1fr); + } + dl > dd { + margin-bottom: 1ex; /* distinguish rows more as dts can wrap */ + } } /* "keyboard" (list of keys) */ -#rows {margin-top: -5ex} /* top (esc) row fits besides header */ +.row0 {margin-top: -5ex} /* top (esc) row fits besides header */ .row2 {margin-left: 7em} /* row offsets relative to ~6em key width */ .row3 {margin-left: 8em} -.row4 {margin-left: 10em} /* should actually align to next key on row0 */ +.row4 {margin-left: 10em} /* should actually align to next key on row1 */ /* ...however rows>=1 are shifted a bit, to make space */ table.keys tr { @@ -152,20 +185,18 @@ h3 {display: none} /* semantic details (non-css/js) */ table.keys { display: block; - width: 82.5em; /* 12 * td(2px + 1px + 6.2em + 1px + 2px) + 8em */ -// padding-right: 72px; border-spacing: 0; border-collapse: collapse; -} -table.keys > * { - margin-right: -72px; + white-space: nowrap; + text-align: left; } /* individual keys */ dl.legend dt, .keys td { - float: left; + display: inline-block; + white-space: normal; width: 6.2em; line-height: 2.25ex; /* a little terser (seems to be gecko's default anyway) */ height: 4.5ex; /* 2 lines */ @@ -215,6 +246,49 @@ dl.legend dt, font-weight: normal; /* nice and subtle */ } +/* enlarged keys */ + +.keys.big td { + width: 1em; + min-width: auto; + height: 2.25ex; + font-size: 200%; + font-size: calc(7vmin - 4px); /* fit 12 keys to page */ + overflow: visible; + position: relative; + padding: 0; + margin: 0 .2vw -1px; +} + +/* override row alignments */ +.keys.big tbody { + font-size: calc(1.4vmin); /* enlarged td conversion */ +} +.keys.big .row2 {margin-left: 7em} +.keys.big .row3 {margin-left: 8em} +.keys.big .row4 {margin-left: 10em} +.keys.big .row0 { + display: none; /* headerless */ +} + +.keys.big td b { + position: absolute; /* overlay */ + z-index: 1; + top: -1.2ex; /* halfway over shift */ + left: 0; + right: 0; + font-size: 50%; + opacity: .5; + color: #FFF; + line-height: 2.25ex; +} +.keys.big.cmp td b, +.keys.big .ctrl td b, +.keys.big .meta td b, +.keys.big .shift td b { + display: none; +} + /* tables */ table { @@ -243,6 +317,12 @@ td.joinl { border-left: none; } +thead { + position: sticky; + top: 0; + background: #DDD8; +} + /* character table */ .glyphs thead th, .glyphs td { @@ -276,6 +356,10 @@ thead td { .glyphs thead td { width: auto; /* no glyph cells in header */ } +.glyphs caption { + margin-left: 2.2em; /* 1ex + offset head column (1.6em + 0.4em) / 110% */ + /* adjusted insignificant -.2em to fit wide contents on /charset/mac */ +} th { padding: 0 0.2em; } @@ -436,10 +520,10 @@ table.dimap { .u-invalid {background: #BBB} /* invalid, impossible */ /* foreground representation */ -#digraphs .u-l3 {color: #080} /* partial */ -#digraphs .u-l3.ex {color: #4C0} /* experimental */ -#digraphs .u-l2 {color: #A44; color: rgba(128, 0, 0, .6)} /* unofficial proposal */ -#digraphs .u-l1 {color: #D00; color: rgba(255, 0, 0, .8)} /* minimal or invalid */ +#digraphs .u-l4 {color: #080} /* partial */ +#digraphs .u-l5 {color: #4C0} /* experimental */ +#digraphs .u-l2 {color: #A44; color: rgba(128, 0, 0, .6)} /* unofficial */ +#digraphs .u-l1 {color: #D00; color: rgba(255, 0, 0, .8)} /* missing */ /* support percentage (browser cells) */ .p0 {opacity: .6} @@ -464,10 +548,10 @@ table.dimap { /* code syntax */ .sy-comment { color: #888 } .sy-constant { color: #008 } -.sy-type, .sy-identifier { color: #804 } .sy-statement { } .sy-preProc { } +.sy-type, .sy-special { color: #408 } .sy-error { font-weight: bold; background-color: #F00; color: #FFF } .sy-todo { background-color: #FF0 } @@ -511,8 +595,8 @@ table.dimap { .l3:hover {background: #FF8} .l4:hover {background: #CF8} .l5:hover {background: #8F8} -.u-l3:hover {outline: 1px solid #080} -.u-l3.ex:hover {outline: 1px solid #8F0} +.u-l4:hover {outline: 1px solid #080} +.u-l5:hover {outline: 1px solid #8F0} .u-l2:hover {outline: 1px solid #800} .u-l1:hover {outline: 1px solid #F00} @@ -569,12 +653,13 @@ dl.legend dt.more:hover, .keys td.more:hover b { text-shadow: #F20 0 0 0.5em, #FC0 0 0 0.2em; } -dl.legend dt.ext, -.keys td.ext { - border-style: dashed; -} dl.legend dt.new, .keys td.new { + border-style: dashed; +} +.ext, +dl.legend dt.ext, +.keys td.ext { opacity: .6; } @@ -650,6 +735,128 @@ ul.legend-set li { padding: 0 0.2em; } +/* images */ + +figure { + margin: 0; + position: relative; +} +figure img { + vertical-align: bottom; + width: 100%; +} + +@media (min-width: 60em) { + figcaption { + padding: 0 1em; + color: #000; + background: rgba(255, 255, 255, .66); + position: absolute; + right: 0; + bottom: 0; + max-width: 100%; + box-sizing: border-box; + } + .gallery li.parent:hover > figure > figcaption, + .gallery figure:hover > figcaption { + /* highlight title of current and parents */ + font-size: 175%; + right: 50%; + bottom: 50%; + transform: translate(50%, 50%); + margin-left: -60%; /* keep width */ + } +} + +/* image gallery */ + +.gallery { + display: grid; + grid: auto-flow dense / repeat(auto-fit, minmax(200px, 1fr)); + grid-gap: 1px; +} +.gallery li, .gallery ul { + display: contents; +} +.gallery figure { + overflow: hidden; + box-sizing: border-box; + hyphens: auto; + max-width: 900px; +} +.gallery figcaption > small { + display: inline-block; +} + +@media (min-width: 403px) and (min-height: 266px) { + /* able to fit 2 cells of 200x133 */ + .gallery li.large > figure { + grid-row: span 2; + grid-column: span 2; + } +} +@media (min-width: 603px) and (min-height: 400px) { + /* fit 3 cells of 200x133 */ + .gallery > li:first-child > figure, + .gallery li.huge > figure { + grid-row: span 3; + grid-column: span 3; + } +} + +.gallery figure, .gallery figcaption { + transition: all .5s ease-in; +} +.gallery figure:hover ~ ul figcaption { + /* mark all children */ + color: #FFF; + background: rgba(0, 0, 0, .5); +} + +.gallery figure[data-sup]:after { + position: absolute; + right: 0; + content: attr(data-sup); + color: #FFF; + background: #0006; + border-radius: 1em; + padding: .1ex .4em; + margin: .4em; +} +.gallery .expand > figure[data-sup]:after { + content: '+' attr(data-sup); + background: #0008; + font-size: 150%; + border: 2px solid #FFF8; +} + +/* specialised galleries */ + +body#word { + margin: 8px 1px; +} + +table.gallery { + grid-auto-flow: row; + grid-template-columns: repeat(auto-fit, minmax(2em, max-content)); /* 1fr */ +} +table.gallery tbody, +table.gallery tr { + display: contents; +} +table.gallery tr > :first-child { + grid-column: 1; + -grid-row: span 6; + margin: auto; /* vertical-align: middle */ +} +table.gallery tr > :nth-child(2) { + grid-column: 2; /* in case 1st is missing */ +} +table.gallery td { + border: 0; /* does not collapse */ + outline: 1px solid #888; /* over grid-gap */ +} + /* page-specific */ #browser td > a { @@ -713,6 +920,69 @@ nav > .section { margin-top: 1em; } +.units tbody tr:hover:not(.race) { + background: #EEE; +} +.unit-gas { + color: #040; +} +.unit-min, .unit-min a:not(:hover) { + color: #004; +} +.unit-supply { + color: #080; +} +.unit-o {color: #C08} /* organic */ +.unit-u {color: #44C} /* mechanic */ +.unit-p {color: #0A8} /* psionic */ +.unit-composed { + color: #C88; +} +.unit-air { + color: #08C; +} +.unit-x {color: #888} +.unit-s {color: #890} +.unit-m {color: #C70} +.unit-l {color: #D22} +.unit-h {color: #804} +.magic-opt:before, +.magic-opt:after { + color: #000; +} +.hurtrel, .units .hurtrel { + color: #778; +} +tbody .unit-shield { + color: #64A; +} +.unit-pdd { + color: #A8C; +} +.unit-splash { + color: #4A0; +} +.hurt-a { + color: #036; +} +.hurt-g { + color: #063; +} +.unit-massive { + color: #D88; +} +.unit-detect::before { + color: #0A8; +} +.unit-jump { + color: #8A4; +} +body .magic-perma { + text-decoration-color: #8C0; + -moz-text-decoration-color: #8C0; + -webkit-text-decoration-color: #8C0; +} + /* printing hints */ @page { @@ -726,15 +996,24 @@ nav > .section { /* terse optimisation */ +@media (min-height: 112ex) and (min-width: 90em) { + .keys td { + padding: 1ex 0 1ex .1em; + width: 7em; + } +} + @media (max-width: 79em) { .keys td { position: relative; /* hides overflow */ width: 4.5em; + min-width: 6.5vw; + min-width: calc(7.7vw - 8px); } .keys td b, - .keys.meta td b, - .keys.ctrl td b, - .keys.lead td b { /* leading chars always fit */ + .keys .meta td b, + .keys .ctrl td b, + .keys .lead td b { /* leading chars always fit */ position: absolute; /* background */ right: 0; /* least overlap in corner */ font-size: 250%; @@ -742,8 +1021,80 @@ nav > .section { opacity: .5; color: #FFF; } - table.keys { - width: 62.1em; /* 82.5em - 12 * Δtd(6.2em - 4.5em) */ + + .row2 {margin-left: 5.3em} /* 7em / Δtd(6em : 4.5em) */ + .row3 {margin-left: 6em} /* 8em / Δtd */ + .row4 {margin-left: 7.5em} /* 10em / Δtd */ + + /* letter scripts columns to rows */ + .legend .glyphs:first-child td { + display: table-row; + vertical-align: baseline; + } + .legend .glyphs td > table { + width: auto; + display: inline; + margin-left: 1ex; + } + .legend .glyphs:first-child td td { + margin: 2px; + display: inline-block; + width: auto; + } + + @media (max-width: 61em) { + .keys td { + width: 3em; + height: 6.75ex; /* 3 lines */ + font-size: 80%; + } + .keys td b, + .keys .meta td b, + .keys .ctrl td b, + .keys .lead td b { + line-height: 4ex; + } + + .row2 {margin-left: 3.5em} /* 7em / Δtd(6em : 3em) */ + .row3 {margin-left: 4em} /* 8em / Δtd */ + .row4 {margin-left: 5em} /* 10em / Δtd */ + } + + @media (max-width: 42em) { + /* flatten right legend column on mobile */ + .help > * { + display: table-row; + width: auto; + } + ul.legend-set { + clear: left; + } + .right dl.legend { + margin-right: 0; + margin-left: 6.4em; + } + .right dl.legend dt { + margin-right: 0; + margin-left: -6.4em; + float: left; + clear: left; + } + .right dl.legend dd { + float: left; + } } } +/* +@media screen and (orientation: portrait) and (max-width: 62em) { + body table.keys, + #rows { + margin-top: 1ex; + transform: rotate(90deg); + transform-origin: top left; + margin-left: 40em; + margin-bottom: 30em; + font-size: 80%; + } +} +*/