@charset "UTF-8"; /* ----------------- */ /* Custom Properties */ /* ----------------- */ /* This values are to be overridden after being injected into the global scope. */ /* colors */ /* Black */ /* Gray */ /* White */ /* font */ /* Sizes divided by 16 so values given in px */ /* --------------- */ /* Utility Classes */ /* --------------- */ /* Layouts */ .container { padding-inline: 4rem; margin-inline: auto; max-width: 80rem; } .flex { display: flex; gap: 2rem; } .column { justify-content: center; align-items: center; flex-direction: column; align-content: center; } .row { flex-direction: row; flex-wrap: wrap; justify-content: space-evenly; align-content: baseline; max-width: 100%; } .two-columns { display: grid; /* Will shrink to one column, never exceed two! * The `max` in `minmax` asks that the columns * be no smaller */ grid-template-columns: repeat(auto-fit, minmax(max(30rem, 40%), 1fr)); column-gap: 1rem; justify-content: space-evenly; } .lock-bottom { position: fixed; bottom: 0%; } /* Other */ .hr::after { /* Add fake hr after header */ content: ""; position: absolute; display: block; clear: both; width: 100%; height: 0.15rem; background-color: black; } /* Color Classes */ .bg-dark { background-color: #504d49; } .bg-light { background-color: hsl(190, 80%, 30%); } .bg-white { background-color: hsl(30, 5%, 90%); } .text-dark { color: #504d49; } .text-light { color: hsl(190, 80%, 30%); } .text-white { color: hsl(30, 5%, 90%); } /* Font Classes */ .fs-900 { font-size: 6.25rem; } .fs-800 { font-size: 4.6875rem; } .fs-700 { font-size: 3.5rem; } .fs-600 { font-size: 2rem; } .fs-500 { font-size: 1.75rem; } .fs-400 { font-size: 1.5rem; } .fs-300 { font-size: 1.125rem; } .fs-200 { font-size: 1rem; } .ff-serif { font-family: "Inconsolata", monospace; } .ff-sans-cond { font-family: sans-serif; } .ff-sans { font-family: "Jost", sans-serif; } .uppercase { text-transform: uppercase; } .lowercase { text-transform: lowercase; } /* Semantic Tags and Their Classes */ header { margin-bottom: 3vh; } section:not(:last-of-type) { margin-bottom: 3vh; } footer { margin-top: 3vh; } /* ----- */ /* Reset */ /* ----- */ *, *::before, *::after { box-sizing: border-box; } body, h1, h2, h3, h4, h5, h6, p { margin: 0; } h1, h2, h3, h4, h5, h6, p { font-weight: 400; } h1, h2, h3 { line-height: 1.1; } body { font-family: "Jost", sans-serif; font-size: 1.5rem; color: #504d49; background-color: hsl(30, 5%, 90%); line-height: 1.5; min-height: 100vh; } main { margin-left: 1vw; margin-top: 1vh; } main * { z-index: 2; } footer { z-index: 2; } img, picture { max-width: 100%; display: block; } input, button, textarea, select { font: inherit; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behaviour: auto !important; } } /* -------------------- */ /* Non-Reusable Classes */ /* -------------------- */ /* meant for these pages * only, not to be used * in practice */ .colors--block { padding: 3rem 1rem 1rem; border: 1px solid black; } @font-face { font-family: "Inconsolata"; src: url("/fonts/Inconsolata.ttf"); font-display: swap; font-variation-settings: "wdth" 85; } @font-face { font-family: "Jost"; src: url("/fonts/Jost.ttf"); font-display: swap; } body { overflow: hidden; height: 100%; } div.main_container { height: 97vh; width: 98vw; margin-top: 2.5vh; margin-left: 1vw; display: grid; grid-template-columns: [left] minmax(min-content, 1fr) [right] 2fr; grid-template-rows: [upper] 2fr [lower] 1fr; column-gap: 1vw; row-gap: 1vh; } .dialog { padding: 1em; } .dialog::backdrop { background: rgba(0, 125, 255, 0.3); } div.plate_container { display: flex; flex-direction: column; justify-content: space-evenly; align-items: center; border: 2px solid #504d49; grid-column: right/right; grid-row: upper/3; } div.plate_container h2 { margin-bottom: 1%; text-align: center; } div.plate_container > div { display: grid; grid-template-rows: auto auto; grid-template-rows: auto auto; } div.plate_container > div > h2:nth-of-type(1) { grid-column: 2; grid-row: 1; } div.plate_container > div > h2:nth-of-type(2) { grid-column: 1; grid-row: 2; writing-mode: vertical-rl; transform: rotate(-180deg); } div.plate_container > div > div { grid-column: 2; grid-row: 2; } div.source_plate, div.dest_plate { padding: 3px 3px 3px 3px; } div.source_plate { border: 2px solid blue; } div.dest_plate { border: 2px solid red; } table, tr, td { user-select: none; /* Prevents dragging issue */ border-spacing: 0px; } th { font-family: monospace; } td.plate_cell { background: none; } div.plate_cell_inner { aspect-ratio: 1/1; height: 90%; border-radius: 50%; border: 1px solid black; } td.plate_cell:hover div.plate_cell_inner { background: black !important; } td.plate_cell.in_transfer div.plate_cell_inner::after { content: ""; width: 100%; height: 100%; display: block; border-radius: 50%; background-image: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8) 2px, transparent 2px, transparent 5px); } td.current_select div.plate_cell_inner { border: 3px solid black; } .W1536 th { font-size: 0.9rem; } .W3456 th { font-size: 0.9rem; line-height: 0px; padding-bottom: 0.4rem; } div.tree { position: relative; grid-column: left/left; grid-row: upper/upper; width: 100%; height: 100%; border: 2px solid #504d49; } div.tree h3 { margin-left: 0.5rem; } div.tree div#controls { position: absolute; bottom: 2%; right: 2%; } div.tree ul { width: 80%; margin-left: 10%; padding: 0; display: flex; flex-direction: column; align-items: stretch; overflow: scroll; } div.tree li { display: inline; margin-left: 0; margin-bottom: 0.4rem; border: 2px solid transparent; user-select: none; list-style: none; line-height: 1em; } div.tree li:hover { background: rgba(15, 117, 138, 0.08); border: 2px solid rgba(15, 117, 138, 0.3); } div.tree li.selected { background: rgba(15, 117, 138, 0.2); } div.transfer_menu { position: relative; width: 100%; height: 100%; grid-column: left/left; grid-row: lower/lower; border: 2px solid #504d49; padding-left: 0.5rem; } div.transfer_menu form { padding-top: 3%; padding-bottom: 1%; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; } div.transfer_menu form label { display: inline; } div.transfer_menu form label * { display: inline; } div.transfer_menu input:invalid { background-color: #faa; } div.transfer_menu div#controls { align-self: flex-end; } div.transfer_menu div#controls input { padding: 2px 3px 2px 3px; margin-left: 0; } input { text-align: center; margin-left: 0.5em; margin-right: 0.5em; margin-top: 1%; margin-bottom: 1%; line-height: 1em; padding: 0; } input[type=text] { width: 4em; } input[name=name] { width: 6em; } input[type=number] { width: 2em; -webkit-appearance: none; -moz-appearance: textfield; } input.volume_input { width: 4em; } div.upper_menu { position: absolute; top: 0px; left: 0px; height: min(2.5vh, 25px); padding-left: 1vw; visibility: inherit; display: flex; } div.upper_menu div.dropdown { margin-right: 2px; position: relative; display: flex; flex-direction: column; } div.upper_menu div.dropdown button { vertical-align: top; border: none; padding: 0px 0.4em 0px 0.4em; margin: 0; cursor: pointer; font-size: calc(min(2.5vh, 25px) * 0.7); } div.upper_menu div.dropdown * { visibility: hidden; } div.upper_menu div.dropdown > *:first-child { outline: 1px solid #504d49; visibility: visible; } div.upper_menu div.dropdown:hover { outline: 2px solid #504d49; z-index: 2; } div.upper_menu div.dropdown:hover * { visibility: visible; outline: 1px solid #504d49; box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.4); z-index: 1; } div.upper_menu div.dropdown-sub { position: relative; height: min(2.5vh, 25px); } div.upper_menu div.dropdown-sub * { visibility: hidden; } div.upper_menu div.dropdown-sub div { display: none; visibility: hidden; } div.upper_menu div.dropdown-sub > *:first-child { visibility: inherit; } div.upper_menu div.dropdown-sub:hover { visibility: visible; } div.upper_menu div.dropdown-sub:hover div { position: absolute; left: 100%; top: 0; visibility: hidden; display: flex; flex-direction: column; width: max-content; } dialog { border: 3px solid #504d49; border-radius: 2%; color: #504d49; background: hsl(30, 5%, 90%); } dialog > form[method=dialog] { position: absolute; top: 0; right: 0; line-height: 0px; } dialog > form[method=dialog] button { padding-top: 6px; padding-left: 3px; font-size: 150%; line-height: 0px; color: #504d49; border: 0; background: transparent; } dialog > form[method=dialog] button::before { text-align: center; vertical-align: middle; content: "×"; } dialog > form[method=dialog] button:hover { color: black; transition: color 0.1s; } .close_button { color: red; position: absolute; top: 5%; right: 2%; background: rgba(0, 0, 0, 0.1); } .close_button:hover { color: rgb(0, 255, 255); background: rgba(0, 0, 0, 0.8); } .fs-900 { font-size: 6.25rem; font-weight: 400; } .fs-800 { font-size: 4.6875rem; font-weight: 300; } .fs-700 { font-size: 3.5rem; font-weight: 250; } .fs-600 { font-size: 2rem; font-weight: 300; } .fs-500 { font-size: 1.75rem; font-weight: 200; } .fs-400 { font-size: 1.5rem; font-weight: 200; } html { font-size: 1vmin; }