1
1
mirror of https://github.com/rsms/inter.git synced 2024-11-28 22:13:40 +03:00
inter/docs/lab/lab.css
2022-06-10 11:39:00 -07:00

836 lines
23 KiB
CSS

:root {
/* 1 pixel */
--displayScale: 1;
--pixel: 1px;
--fieldHeight: 24px;
--sidebarWidth: 275px;
--sidebarButtonSize: 24px;
--sidebarWidthToButtonSizeScale: 0.0872; /* 24/275 */
--font-family: Inter;
}
@supports (font-variation-settings: normal) {
:root { --font-family: 'Inter var'; }
}
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5),
only screen and (min-resolution: 1.5dppx) { :root {
--displayScale: 2;
--pixel: 0.5px;
}}
@media only screen and (-webkit-min-device-pixel-ratio: 2.5),
only screen and (min-device-pixel-ratio: 2.5),
only screen and (min-resolution: 2.5dppx) { :root {
--displayScale: 3;
--pixel: 0.34px;
}}
@media only screen and (-webkit-min-device-pixel-ratio: 3.5),
only screen and (min-device-pixel-ratio: 3.5),
only screen and (min-resolution: 3.5dppx) { :root {
--displayScale: 4;
--pixel: 0.25px;
}}
/* basic color ————————————————————————————————————————————————————————————————————————————— */
/* sRGB colors */
:root {
--red: #F03009;
--yellow: #FFE310;
--blue: rgb(3, 102, 214);
}
/* P3 wide gamut colors */
@supports (color: color(display-p3 1 1 1)) { :root {
--red: color(display-p3 0.94 0.19 0.04);
--yellow: color(display-p3 1 0.87 0.05);
}}
/* color scheme ———————————————————————————————————————————————————————————————————————————— */
:root {
/* signal that this document supports both light and dark color schemes */
color-scheme: light dark;
/* Light color scheme */
--bgColor: white;
--fgColor: black;
--fgColorDimmed: rgba(0,0,0,0.4);
--focus-color: #18A0FB;
--input-color-bg: white;
--input-slider-color-bg: rgba(0,0,0,0.2);
--input-slider-color-fg: var(--fgColor);
--input-slider-color-focus: rgb(0, 130, 255);
--input-slider-knob-size: 8px;
--input-slider-track-size: 6px;
--input-slider-track-hit-size: 16px;
--checkbox-bg: var(--input-slider-color-bg);
--checkbox-fg: var(--input-color-bg);
--checkbox-on-bg: var(--fgColor);
--checkbox-on-fg: var(--checkbox-fg);
--surface1-color-bg: #f4f4f4;
--surface1-color-fg: #444;
--surface2-color-bg: white;
--surface2-color-fg: #222;
--surface2-color-bg-hover: var(--surface2-color-bg);
--surface2-color-bg-active: #ddd;
--surface2-shadow-intensity: 0.5;
--surface2-shadow-intensity-hover: 0.75;
--surface2-shadow-intensity-active: 1.5;
--highlight-bg: #ddd;
--guide-color: rgba(255,0,255,0.15);
--icon-minimize: url(icons/minimize-black.svg);
--icon-popup: url(icons/popup-black.svg);
--icon-reset: url(icons/reset-black.svg);
--icon-settings: url(icons/settings-black.svg);
}
:root.color-scheme-dark {
/* Dark color scheme */
--bgColor: #090909;
--fgColor: #fff;
--fgColorDimmed: rgba(255,255,255,0.4);
--input-color-bg: #2c2c2c;
--input-slider-color-bg: rgba(255,255,255,0.3);
--input-slider-color-fg: var(--fgColor);
--checkbox-bg: rgba(255,255,255,0.3);
--checkbox-fg: rgba(0,0,0,0.7);
--checkbox-on-bg: white;
--checkbox-on-fg: black;
--surface1-color-bg: #1b1b1b;
--surface1-color-fg: #aaa;
--surface2-color-bg: #333;
--surface2-color-fg: white;
--surface2-color-bg-hover: #444;
--surface2-color-bg-active: #666;
--surface2-shadow-intensity: 4;
--surface2-shadow-intensity-hover: 4;
--surface2-shadow-intensity-active: 10;
--highlight-bg: #333;
--guide-color: rgba(255,100,255,0.15);
--icon-minimize: url(icons/minimize.svg);
--icon-popup: url(icons/popup.svg);
--icon-reset: url(icons/reset.svg);
--icon-settings: url(icons/settings.svg);
}
/* document ———————————————————————————————————————————————————————————————————————————— */
* { margin:0; padding:0; font-synthesis: none; }
body {
--fgColorMax: var(--fgColor);
background-color: var(--bgColor);
color: var(--fgColor);
font: 11px var(--font-family),-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
font-weight:400; /*300=light, 400=regular, 500=medium, 600=semibold*/
transition: all 168ms cubic-bezier(0.17, 0.65, 0.48, 1);
transition-property: color, background;
}
.robotoFont {
font-family: "Roboto", serif;
}
.systemFont {
font-family: system-ui,-system,-system-ui,-apple-system,sans-serif;
}
.de-emphasize {
color:#555;
}
a {
color:#2984AA;
text-decoration:inherit;
display:inline-block;
padding:0 0.3em;
margin:0 -0.3em;
border-radius:5px;
}
a:hover { color:#30C2FF; }
p {
padding: 24px;
padding-top:12px;
}
h2 {
font-weight:500;
margin: 42px 18px 0 18px;
padding: 6px;
}
i, cite, em, var, address, dfn {
font-style: italic;
}
/*body.varfont i, body.varfont cite, body.varfont em, body.varfont var,
body.varfont address, body.varfont dfn {
font-style: oblique -10deg;
}*/
label {
display: flex;
align-items: center;
margin: 2px 0;
}
input[type="number"], input[type="text"] {
font: inherit;
}
input[type="number"] {
width:50px;
background: none;
/*border: 1px solid rgba(0,0,0,0.2);*/
border: none;
padding: 4px;
border-radius: 2px;
background: var(--input-color-bg);
font-variant-numeric: tabular-nums;
font-feature-settings: "tnum";
}
select {
font:inherit;
line-height:16px;
height: var(--fieldHeight);
box-sizing: border-box;
-webkit-appearance: none;
border: none;
padding: 4px 18px 4px 4px;
border-radius: 2px;
background: var(--input-color-bg);
background-image: var(--icon-popup);
background-repeat: no-repeat;
background-position: right center;
}
/* fix for Firefox issue:; */
select option {
font-family:var(--font-family),Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
}
input[type="number"]:focus,
input[type="text"]:focus,
select:focus {
outline: none;
box-shadow: 0 0 0 2px var(--focus-color);
}
input[type="range"]::-moz-focus-outer {
border: 0;
}
/* checkbox ———————————————————————————————————————————————————————————————————————————— */
input[type="checkbox"] {
--checkbox-size:12px;
--checkbox-handle-size: 10px;
--checkbox-border: 0px;
flex: 0 0 auto;
margin: 4px 0;
appearance: none; -webkit-appearance: none; -moz-appearance: none; -ms-appearance: none;
user-select: none; -moz-user-select: none; -webkit-user-select:none;
background: none;
border: none;
background-color: var(--checkbox-bg);
border: var(--checkbox-border) solid var(--checkbox-bg);
box-sizing: border-box;
width: calc(var(--checkbox-size) * 2);
height:var(--checkbox-size);
border-radius: var(--checkbox-size);
position:relative;
transition: all 168ms ease-out;
}
input[type="checkbox"]:focus {
outline: none;
box-shadow: 0 0 0 2px var(--bgColor), 0 0 0 4px var(--focus-color);
}
input[type="checkbox"]:active {
/* trick to avoid flickering outline */
box-shadow: none;
}
input[type="checkbox"]::after {
--padding: calc(
calc(
calc(var(--checkbox-size) - var(--checkbox-handle-size))
/ 2
)
- var(--checkbox-border)
);
content: "";
background: var(--checkbox-fg);
display:block;
position:absolute;
left: var(--padding);
top: var(--padding);
width:var(--checkbox-handle-size);
height:var(--checkbox-handle-size);
border-radius:var(--checkbox-handle-size);
transform: translate(0, 0);
transition: all 90ms ease-out; /*cubic-bezier(0.09, 0.49, 0.71, 0.98);*/
}
input[type="checkbox"][checked] {
background-color: var(--checkbox-on-bg);
}
input[type="checkbox"][checked]::after {
background-color: var(--checkbox-on-fg);
transform: translate(calc(var(--checkbox-size)), 0);
/*transition: all 168ms cubic-bezier(0.17, 0.65, 0.48, 1);*/
}
input[type="checkbox"][checked] + * {
color: var(--fgColorMax);
}
* + input[type="checkbox"] {
margin-left: 8px;
}
/* range slider ———————————————————————————————————————————————————————————————————————————— */
input[type="range"] {
-webkit-appearance: none;
width: 100%;
background: transparent;
cursor: default;
margin-left: calc(calc(var(--input-slider-track-hit-size) - var(--input-slider-track-size)) / -2);
}
input[type="range"]:focus {
outline: none;
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
border: 0;
height: var(--input-slider-knob-size);
width: var(--input-slider-knob-size);
border-radius: var(--input-slider-knob-size);
background: var(--input-slider-color-fg);
box-shadow: 0 0 0 2px var(--surface1-color-bg);
margin-top: calc(calc(var(--input-slider-knob-size) - var(--input-slider-track-size)) / -2);
}
input[type="range"]::-moz-range-thumb {
border: 0;
height: var(--input-slider-knob-size);
width: var(--input-slider-knob-size);
border-radius: var(--input-slider-knob-size);
background: var(--input-slider-color-fg);
box-shadow: 0 0 0 2px var(--surface1-color-bg);
margin-top: calc(calc(var(--input-slider-knob-size) - var(--input-slider-track-size)) / -2);
}
input[type="range"]::-webkit-slider-runnable-track {
/* Note: hit testing is done on this element so we make it large enough
to easily hit with --input-slider-track-hit-size and a border that matches the
background color. This is not portable, unfortunately. */
box-sizing: border-box;
width: 100%;
height: var(--input-slider-track-hit-size);
background: var(--input-slider-color-bg);
border-radius: var(--input-slider-track-hit-size);
--border-w: calc(calc(var(--input-slider-track-hit-size) - var(--input-slider-track-size)) / 2);
border: var(--border-w) solid var(--surface1-color-bg);
}
input[type="range"]::-moz-range-track {
box-sizing: border-box;
width: 100%;
height: var(--input-slider-track-hit-size);
background: var(--input-slider-color-bg);
border-radius: var(--input-slider-track-size);
--border-w: calc(calc(var(--input-slider-track-hit-size) - var(--input-slider-track-size)) / 2);
border: var(--border-w) solid var(--surface1-color-bg);
}
/*input[type="range"]:focus::-webkit-slider-thumb { background-color: var(--blue) }
input[type="range"]:focus::-moz-range-thumb { background-color: var(--blue) }*/
input[type="range"]:focus::-webkit-slider-runnable-track {
box-shadow: 0 0 0 2px var(--focus-color);
}
input[type="range"]:focus::-moz-range-track {
box-shadow: 0 0 0 2px var(--focus-color);
}
/* TODO: MS Edge
input[type="range"]::-ms-thumb {
height: var(--input-slider-knob-size);
width: var(--input-slider-knob-size);
border-radius: var(--input-slider-knob-size);
background: var(--input-slider-color-fg);
box-shadow: 0 0 0 2px var(--surface1-color-bg);
margin-top: calc(calc(var(--input-slider-knob-size) - var(--input-slider-track-size)) / -2);
}
input[type="range"]::-ms-track {
width: 100%;
height: 8.4px;
background: transparent;
border-color: transparent;
border-width: 16px 0;
color: transparent;
}
input[type="range"]::-ms-fill-lower {
background: #2a6495;
border: 0.2px solid #010101;
border-radius: 2.6px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type="range"]:focus::-ms-fill-lower {
background: #3071a9;
}
input[type="range"]::-ms-fill-upper {
background: #3071a9;
border: 0.2px solid #010101;
border-radius: 2.6px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type="range"]:focus::-ms-fill-upper {
background: #367ebd;
}*/
/* ———————————————————————————————————————————————————————————————————————————— */
/* minimized sidebar button */
#sidebar-button {
--iconSize: 16px;
position: fixed;
z-index: 2;
bottom: 16px;
right: 16px;
opacity: 0.8;
transform-origin:100% 100%;
transform: scale(calc(1 / var(--displayScale)));
width: calc(var(--sidebarButtonSize) * var(--displayScale));
height: calc(var(--sidebarButtonSize) * var(--displayScale));
border-radius: calc(var(--sidebarButtonSize) * var(--displayScale));
color: var(--surface2-color-fg);
background-color: var(--surface2-color-bg);
background-image: var(--icon-minimize);
background-repeat: no-repeat;
background-position: center center;
background-size: calc(var(--iconSize) * var(--displayScale));
--shadowIntensity: var(--surface2-shadow-intensity);
--shadowA1: calc(var(--shadowIntensity) * 0.1);
--shadowA2: calc(var(--shadowIntensity) * 0.2);
box-shadow:
0 0 0 calc(1px * var(--displayScale)) rgba(0,0,0,var(--shadowA1)) ,
0 calc(1px * var(--displayScale)) calc(1px * var(--displayScale)) rgba(0,0,0,var(--shadowA1)) ,
0 calc(2px * var(--displayScale)) calc(3px * var(--displayScale)) rgba(0,0,0,var(--shadowA1)) ,
0 calc(2px * var(--displayScale)) calc(6px * var(--displayScale)) rgba(0,0,0,var(--shadowA2)) ;
user-select: none; cursor: default;
transition: box-shadow 84ms cubic-bezier(0.17, 0.65, 0.48, 1);
}
#sidebar-button:hover {
opacity:1;
--shadowIntensity: var(--surface2-shadow-intensity-hover);
background-color: var(--surface2-color-bg-hover);
}
#sidebar-button:active {
opacity: 1;
--shadowIntensity: var(--surface2-shadow-intensity-active);
background-color: var(--surface2-color-bg-active);
}
body.sidebar-minimized #sidebar-button {
background-image: var(--icon-settings);
}
/* the sidebar */
.options {
--rowBottomMargin: 6px;
--bgColor: var(--surface1-color-bg);
--fgColor: var(--surface1-color-fg);
color: var(--fgColor);
width: var(--sidebarWidth);
box-sizing:border-box;
position:fixed;
top:0; right:0; bottom:0;
background: var(--bgColor);
padding: 16px 24px 24px 24px;
user-select:none; -moz-user-select: none; -webkit-user-select:none;
font-family: var(--font-family),-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
overflow: auto;
letter-spacing:0.012em;
transform-origin:100% 0%;
transform: scale(1, 1);
border: 0 solid transparent;
border-radius: 0;
box-sizing: border-box;
transition: transform 168ms cubic-bezier(0.17, 0.65, 0.48, 1);
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
body.sidebar-minimized .options {
overflow: hidden;
pointer-events: none;
transform: translate(var(--sidebarWidth), 0);
}
.options > * {
display: block;
margin: 0;
margin-bottom: var(--rowBottomMargin);
line-height: 18px;
}
.options .flex-x {
display: flex;
}
.options .flex-x > * {
flex: 1 1 auto;
}
.options small {
opacity: 0.6;
}
.options h3 {
font-weight: 600;
font-size: 12px;
margin: 1rem 0 0.5rem 0;
}
.options input, .options select {
font-family: inherit;
color: inherit;
}
.options select {
min-width:50px;
max-width:100%;
flex: 1 1 auto;
overflow: hidden;
text-overflow: ellipsis;
}
.options input::placeholder {
color: var(--fgColor);
opacity: 0.4;
}
.options input[type="radio"], .options input[type="checkbox"] {
margin-right:4px;
}
.options .label-and-value {
display: flex;
/*flex-wrap: nowrap;*/
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
min-height: var(--fieldHeight);
}
.options .label-and-value > *:first-child {
flex: 0 0 auto;
width:90px;
text-align: left;
margin-right:6px;
}
.options .label-and-value select {
width:90px;
}
.options .label-and-value input {
width: 50px;
max-height: var(--fieldHeight);
box-sizing: border-box;
}
.options .label-and-value.with-slider input[type="number"] {
width: auto;
flex: 1 1 auto;
border: none;
padding: 2px;
margin-left: -2px;
background: transparent;
}
.options label input[type="checkbox"] + * {
display: inline-block;
min-width:50%;
}
.options label.rasterizePhrase {
margin-left:20px;
margin-bottom:20px;
}
.options label.rasterizePhrase input {
width:100%;
}
.options label.style {
display: flex;
align-items: center;
justify-content: space-between;
}
.options input[type="checkbox"] + * {
user-select: none; -moz-user-select: none; -webkit-user-select:none;
}
.options .label-and-value.with-slider {
display: flex;
height: calc(var(--fieldHeight) * 2);
margin-bottom: var(--rowBottomMargin);
}
.options .varfontControl,
.options .staticfontControl {
transition: all 168ms cubic-bezier(0.17, 0.65, 0.48, 1);
transition-property: opacity, height, margin;
}
.options .label-and-value.with-slider.varfontControl,
body.varfont .options .staticfontControl {
display: block;
pointer-events:none;
overflow: hidden;
opacity: 0;
height: 0;
min-height: 0;
margin: 0;
}
body.varfont .options .label-and-value.with-slider.varfontControl {
display: flex;
overflow: visible;
pointer-events:all;
opacity:1;
height: calc(var(--fieldHeight) * 2);
margin-bottom: var(--rowBottomMargin);
}
.options input[type="range"] {
flex: 1 1 auto;
}
.options input[type="number"] + input[type="range"] {
flex: 0 0 100%;
}
.options .label-and-value input + note,
.options .label-and-value select + note {
display: flex;
align-items: center;
height: var(--fieldHeight);
line-height: var(--fieldHeight);
margin-left: 0.5em;
user-select: none; -webkit-user-select: none; -moz-user-select:none;
color: var(--fgColorDimmed);
}
.options .label-and-value input + note .unit,
.options .label-and-value select + note .unit {
flex: 0 0 auto;
display:flex;
width: 18px;
}
.options .italic-setting > span {
font-feature-settings: "cv08" 1;
font-style: italic;
}
.img-button {
display: inline-block;
width: var(--fieldHeight);
height:var(--fieldHeight);
background-size: 16px 16px;
background-position: center center;
background-repeat: no-repeat;
border-radius: 3px;
opacity: 0.8;
outline: none;
}
.img-button:hover {
opacity: 1;
background-color: rgba(0,0,0,0.1);
}
.img-button:hover:active {
opacity: 1;
background-color: rgba(0,0,0,0.2);
}
.img-button:focus {
box-shadow: 0 0 0 2px var(--focus-color);
}
.img-button.disabled {
opacity:0.4;
pointer-events: none;
}
.img-button.reset { background-image: var(--icon-reset); }
.checkbox-group label {
margin: 0;
}
.preview {
display:flex;
margin-right:var(--sidebarWidth); /*width of options sidebar*/
overflow: auto;
}
body.sidebar-minimized .preview {
margin-right:16px;
}
samples, boxes {
display:flex;
}
samples {
display: flex;
width: 100%;
}
body.italic samples {
font-style: italic;
}
sample {
flex: 1 1 50%;
/*margin: 0;*/
/*white-space: pre;*/
margin: calc(0.5em + 1rem);
padding: 0;
min-width:100px;
/*max-width:450px;*/
white-space: pre-wrap;
outline: none;
overflow-wrap: break-word;
color: var(--fgColor);
}
:root.draw-sample-background sample {
background: var(--highlight-bg);
--guide-width: calc(calc(var(--line-height) - var(--font-size)) / 2);
box-shadow: inset 0 var(--guide-width) 0 0 var(--guide-color),
inset 0 calc(var(--guide-width) * -1) 0 0 var(--guide-color);
}
/*body.secondarySampleDisabled sample { flex-basis: auto; }*/
sample p {
white-space: pre-wrap;
}
sample :focus {
outline: 2px solid #30C2FF;
}
sample .glyphlist {
display: flex;
flex-wrap: wrap;
letter-spacing:0;
line-height: normal;
}
sample .glyphlist g {
margin:1px;
background: var(--surface1-color-bg);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
overflow:hidden;
width:2em;
height:2em;
page-break-inside: avoid; break-inside: avoid;
border-radius: 2px;
}
sample .glyphlist g span.glyph {
flex: 1 0 auto;
display: flex;
justify-content: center;
align-items: center;
/*margin-top:16px;*/
/*background:salmon;*/
font-feature-settings: normal !important;
}
sample .glyphlist g span.name {
/*background:lightblue;*/
text-align: center;
flex: 0 0 auto;
font-size:9px;
color: rgba(0,0,0,0.3);
font-weight: 400;
padding-bottom:2px;
/*height: 16px;*/
}
sample .glyphlist.hideNames g span.name {
display:none;
}
body.secondarySampleDisabled .showOnlyWithSecondarySample {
display: none;
}
body.font-weight-400 b {
font-weight: 500;
}
body.font-weight-500 b {
font-weight: 700;
}
body.font-weight-700 b {
font-weight: 500;
}
boxes { display:none; }
/*boxes {
margin:12px;
margin-bottom:0;
}
sep, box {
display:inline-block;
height:24px;
}
sep {
width:1px;
background:rgba(0,0,0,0.1);
margin:12px 0 12px 12px;
}
box {
display:inline-block;
background:#222;
color:white;
line-height:24px;
padding:0 12px;
margin:12px 0 0 12px;
min-width:100px;
border-top: 8px solid rgba(255,30,0,0.1);
border-bottom: 8px solid rgba(255,30,0,0.1);
box-sizing: border-box;
outline: none;
}
box span {
display: block;
margin: -8px 0;
}
box.positive {
background:#eee;
color:black;
}
box.centered {
text-align:center;
}
box.tight {
display: flex;
align-items: center;
line-height: normal;
border-color:rgba(0,30,255,0.1);
}
box.tight span {
margin:0;
display:inline-block;
background:rgba(30,255,30,0.1);;
}*/
canvas {
image-rendering: optimizeSpeed; /* Older versions of FF */
image-rendering: -moz-crisp-edges; /* FF 6.0+ */
image-rendering: -webkit-optimize-contrast; /* Webkit (non standard naming) */
image-rendering: -o-crisp-edges; /* OS X & Windows Opera (12.02+) */
image-rendering: crisp-edges; /* Possible future browsers. */
-ms-interpolation-mode: nearest-neighbor; /* IE (non standard naming) */
}
#renderCanvas {
position: fixed;
top: 0;
left: 0;
pointer-events: none;
visibility: hidden;
}
#displayCanvas {
display: inline-block;
vertical-align: top;
}
#measure {
position:absolute;
left:0; top:0;
background:salmon;
visibility:hidden;
pointer-events:none;
}
@media print {
.options { display:none; }
.preview { margin:0; }
boxes { display:none; }
samples { padding:0; }
}