sendou.ink/app/styles/common.css
Kalle aea7406586
Map Planner (#1145)
* Initial

* Add images

* Tweaks

* Proper sized bg image and weapons

* Stage bg picker

* Outlined weapon images for planner

* First version

* Lint

* Add alt and title to weapon
2022-11-23 17:38:38 +02:00

943 lines
18 KiB
CSS

*,
*::before,
*::after {
box-sizing: border-box;
}
body {
width: 100%;
background-color: var(--bg);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial,
sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: antialiased;
line-height: 1.55;
overflow-x: hidden;
}
*:focus:not(:focus-visible) {
outline: none !important;
}
a {
color: var(--theme);
font-weight: var(--semi-bold);
text-decoration: none;
}
:is(button, .button) {
display: flex;
width: auto;
align-items: center;
justify-content: center;
border: 2px solid var(--theme);
border-radius: var(--rounded-sm);
appearance: none;
background: var(--theme);
color: var(--button-text);
cursor: pointer;
font-size: var(--fonts-sm);
font-weight: var(--bold);
line-height: 1.2;
outline-offset: 2px;
padding-block: var(--s-1-5);
padding-inline: var(--s-2-5);
user-select: none;
}
:is(button, .button):focus-visible {
outline: 2px solid var(--theme);
}
:is(button, .button):active {
transform: translateY(1px);
}
:is(button, .button):disabled {
cursor: not-allowed;
opacity: 0.5;
transform: initial;
}
:is(button, .button).outlined {
background-color: transparent;
color: var(--theme);
}
:is(button, .button).outlined-success {
border-color: var(--theme-success);
background-color: transparent;
color: var(--theme-success);
}
:is(button, .button).tiny {
font-size: var(--fonts-xs);
padding-block: var(--s-1);
padding-inline: var(--s-2);
}
:is(button, .button).minimal {
padding: 0;
border: none;
background-color: transparent;
color: var(--theme);
outline: initial;
}
:is(button, .button).minimal-success {
padding: 0;
border: none;
background-color: transparent;
color: var(--theme-success);
}
:is(button, .button).success {
border-color: var(--theme-success);
background-color: var(--theme-success);
outline-color: var(--theme-success);
}
:is(button, .button).destructive {
border-color: var(--theme-error);
background-color: transparent;
color: var(--theme-error);
outline-color: var(--theme-error);
}
:is(button, .button).minimal-destructive {
padding: 0;
border: none;
background-color: transparent;
color: var(--theme-error);
outline-color: var(--theme-error);
}
:is(button, .button).loading {
cursor: not-allowed;
opacity: 0.6;
}
.button-icon {
width: 1.25rem;
margin-inline-end: var(--s-1-5);
}
.button-icon.lonely {
margin-inline-end: 0;
}
:is(button, .button).tiny > .button-icon {
width: 1rem;
margin-inline-end: var(--s-1);
}
textarea:not(.plain) {
width: 18rem;
max-width: 100%;
height: 8rem;
padding: var(--s-2-5) var(--s-3);
border: 1px solid var(--border);
border-radius: var(--rounded);
accent-color: var(--theme-secondary);
background-color: transparent;
color: var(--text);
font-size: var(--fonts-sm);
outline: none;
overflow-wrap: normal;
overflow-x: auto;
white-space: pre;
}
progress {
accent-color: var(--theme);
}
textarea:not(.plain):focus-within {
border-color: transparent;
/* TODO: rectangle on Safari */
outline: 2px solid var(--theme);
}
input:not(.plain, [type="radio"]) {
width: 12rem;
}
input:not(.plain) {
height: 1rem;
padding: var(--s-4) var(--s-3);
border: 1px solid var(--border);
border-radius: var(--rounded);
accent-color: var(--theme-secondary);
background-color: transparent;
color: var(--text);
font-size: var(--fonts-sm);
outline: none;
}
input:user-invalid {
border-color: transparent;
outline: 2px solid var(--theme-error);
}
input:not(.plain):focus-within {
border-color: transparent;
/* TODO: rectangle on Safari */
outline: 2px solid var(--theme);
}
input:not(.plain)::placeholder {
color: var(--text-lighter);
font-size: var(--fonts-xxs);
font-weight: var(--semi-bold);
letter-spacing: 0.5px;
}
input:not(.plain).error {
border-color: transparent;
outline: 2px solid var(--theme-error);
}
input[type="checkbox"] {
width: 16px;
height: 16px;
}
[list]::-webkit-calendar-picker-indicator {
display: none !important;
}
label {
display: block;
font-size: var(--fonts-xs);
font-weight: var(--bold);
margin-block-end: var(--label-margin);
}
details summary {
cursor: pointer;
user-select: none;
}
.summary {
border-radius: var(--rounded);
background-color: var(--bg-darker-transparent);
font-size: var(--fonts-xs);
font-weight: var(--semi-bold);
padding-block: var(--s-1);
padding-inline: var(--s-2);
}
fieldset {
border: none;
border-radius: var(--rounded);
background-color: var(--bg-darker-transparent);
font-size: var(--fonts-sm);
padding-block-end: var(--s-3);
padding-inline: var(--s-3);
}
legend {
border-radius: var(--rounded-sm);
background-color: transparent;
font-size: var(--fonts-xs);
font-weight: var(--bold);
}
article {
white-space: pre-wrap;
}
select {
all: unset;
width: 100%;
box-sizing: border-box;
border: 1px solid var(--border);
border-radius: var(--rounded);
background: var(--select-background, var(--bg-lighter));
/* TODO: Get color from CSS var */
background-image: url('data:image/svg+xml;utf8,<svg width="1rem" color="rgb(255 255 255 / 55%)" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>');
background-position: center right var(--s-3);
background-repeat: no-repeat;
cursor: pointer;
font-size: var(--fonts-sm);
font-weight: 500;
padding-block: 3.5px;
padding-inline: var(--s-3) var(--s-8);
}
/* Temporary solution for issue: https://github.com/Sendouc/sendou.ink/issues/1141 */
.light select {
/* TODO: Get color from CSS var */
background-image: url('data:image/svg+xml;utf8,<svg width="1rem" color="rgb(0 0 0 / 55%)" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>');
}
select::selection {
overflow: hidden;
font-weight: bold;
}
select:focus {
outline: 2px solid var(--theme);
}
table {
width: 100%;
border-collapse: separate;
border-spacing: 0 var(--s-1-5);
font-size: var(--fonts-xs);
text-align: left;
}
table > thead {
font-size: var(--fonts-xxs);
}
table > tbody > tr:nth-child(2n) {
background-color: var(--bg);
}
table > thead > tr > th {
padding-inline: var(--s-1);
}
table > tbody > tr > td {
padding-inline: var(--s-1);
}
td > input[type="checkbox"] {
vertical-align: middle;
}
hr {
border-color: var(--theme-transparent);
}
abbr:not([title]) {
text-decoration: none;
}
abbr[title] {
cursor: help;
}
dialog {
width: min(90%, 24rem);
border: 0;
border-radius: var(--rounded);
margin: auto;
background-color: var(--bg);
}
dialog::backdrop {
background: hsla(237deg 98% 1% / 70%);
}
@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) {
dialog::backdrop {
-webkit-backdrop-filter: blur(7px) brightness(70%);
backdrop-filter: blur(7px) brightness(70%);
background-color: transparent;
}
}
dialog[open],
dialog::backdrop {
animation: show 500ms ease;
}
@keyframes show {
0% {
opacity: 0;
}
}
.toggle {
all: unset;
position: relative;
display: inline-flex;
width: var(--s-11);
height: var(--s-6);
align-items: center;
border-radius: var(--rounded);
background-color: var(--theme-transparent);
cursor: pointer;
}
.toggle.tiny {
width: var(--s-6);
height: var(--s-3);
}
.toggle.checked {
background-color: var(--theme);
}
.toggle:active {
transform: initial;
}
.toggle-dot {
display: inline-block;
width: var(--s-4);
height: var(--s-4);
border-radius: 50%;
background-color: white;
transform: translateX(var(--s-1));
transition: transform 0.2s ease;
}
.toggle-dot.tiny {
width: var(--s-3);
height: var(--s-3);
transform: translateX(-0.2rem);
}
.toggle-dot.checked {
transform: translateX(var(--s-6));
}
.toggle-dot.checked.tiny {
transform: translateX(var(--s-4));
}
.button-text-paragraph {
display: flex;
gap: var(--s-1);
}
.button-text-paragraph > button {
font-size: var(--fonts-md);
font-size: var(--fonts-sm);
font-weight: var(--semi-bold);
margin-block-end: 0.125rem;
}
.input-container {
display: flex;
border: 1px solid var(--border);
border-radius: var(--rounded);
accent-color: var(--theme-secondary);
background-color: transparent;
color: var(--text);
font-size: var(--fonts-sm);
outline: none;
}
.input-container:focus-within {
border-color: transparent;
/* TODO: rectangle on Safari */
outline: 2px solid var(--theme);
}
/* stylelint-disable no-descending-specificity */
.input-container > input {
width: 100%;
border: none;
}
/* stylelint-enable no-descending-specificity */
.input-container > input:focus-within {
outline: none;
}
.input-addon {
display: grid;
border-radius: var(--rounded) 0 0 var(--rounded);
background-color: var(--bg-lighter);
color: var(--text-lighter);
font-size: var(--fonts-xs);
font-weight: var(--semi-bold);
padding-inline: var(--s-2);
place-items: center;
}
.sub-nav__container {
display: flex;
flex-wrap: wrap;
justify-content: center;
background-color: var(--bg-lighter);
background-image: url("/svg/background-pattern.svg");
margin-block-end: var(--s-4);
overflow-x: auto;
}
.sub-nav__link {
display: flex;
height: 100%;
flex-direction: column;
align-items: center;
padding: var(--s-4);
background-color: var(--bg-lighter);
color: var(--text);
font-size: var(--fonts-xs);
font-weight: var(--semi-bold);
white-space: nowrap;
}
.sub-nav__active-icon {
height: 1.2rem;
margin-block-end: -1rem;
margin-block-start: -3px;
visibility: hidden;
}
.sub-nav__link.active > .sub-nav__active-icon {
visibility: visible;
}
.popover-content {
z-index: 1;
max-width: 20rem;
padding: var(--s-2);
border-radius: var(--rounded);
background-color: var(--bg-darker-transparent);
font-size: var(--fonts-sm);
font-weight: var(--semi-bold);
white-space: pre-wrap;
}
@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) {
.popover-content {
-webkit-backdrop-filter: blur(10px) brightness(75%);
backdrop-filter: blur(10px) brightness(75%);
background-color: transparent;
}
}
.combobox-wrapper {
position: relative;
}
.combobox-input {
width: 12rem;
}
.combobox-input.fullWidth {
width: 100%;
}
.combobox-options {
position: absolute;
z-index: 2;
width: 12rem;
border-radius: var(--rounded);
margin-top: var(--s-2);
background-color: var(--bg-darker);
color: var(--text);
font-size: var(--fonts-sm);
padding-block: var(--s-3);
padding-inline: 0;
}
.combobox-options.fullWidth {
width: 100%;
}
.combobox-options.empty {
padding-block: var(--s-1-5);
}
.combobox-item {
display: flex;
align-items: center;
padding: var(--s-1) var(--s-3);
gap: var(--s-2);
list-style: none;
}
.combobox-no-matches {
display: flex;
align-items: center;
justify-content: center;
color: var(--text-lighter);
font-size: var(--fonts-xs);
font-weight: var(--bold);
gap: var(--s-1);
}
.combobox-emoji {
color: var(--text);
font-size: var(--fonts-lg);
}
.combobox-item.active {
background-color: var(--theme-transparent);
}
.article > p {
padding-block: var(--s-2-5);
}
.calendar__event__tags {
display: flex;
max-width: var(--tags-max-width, 18rem);
flex-wrap: wrap;
padding: 0;
color: var(--black-text);
font-size: var(--fonts-xxs);
font-weight: var(--semi-bold);
gap: var(--s-1);
list-style: none;
}
.calendar__event__tags > li {
display: flex;
border-radius: var(--rounded);
padding-inline: var(--s-1-5);
}
.calendar__event__badge-tag {
color: var(--badge-text);
}
.calendar__event__tag-delete-button {
margin-left: auto;
}
.calendar__event__tag-badges {
display: flex;
margin-inline-start: var(--s-1);
}
.calendar__event__tag-delete-button > svg {
width: 0.85rem !important;
color: var(--black-text);
margin-inline-end: 0 !important;
margin-inline-start: var(--s-1);
}
.alert {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
border-radius: var(--rounded);
background-color: var(--theme-info-transparent);
color: var(--text);
font-size: var(--fonts-sm);
font-weight: var(--semi-bold);
gap: var(--s-2);
line-height: 0.75;
margin-inline: auto;
padding-block: var(--s-1-5);
padding-inline-end: var(--s-4);
padding-inline-start: var(--s-3);
}
.alert.tiny {
font-size: var(--fonts-xs);
}
.alert.warning {
background-color: var(--theme-warning-transparent);
}
.alert.error {
background-color: var(--theme-error-transparent);
}
.alert.success {
background-color: var(--theme-success-transparent);
}
.avatar {
border-radius: 50%;
background-color: var(--bg-lighter);
background-image: url("/svg/background-pattern.svg");
}
.alert > svg {
height: 1.75rem;
fill: var(--theme-info);
}
.alert.tiny > svg {
height: 1.25rem;
}
.alert.warning > svg {
fill: var(--theme-warning);
}
.alert.error > svg {
fill: var(--theme-error);
}
.alert.success > svg {
fill: var(--theme-success);
}
.form-errors {
font-size: var(--fonts-sm);
}
.form-errors > h4 {
color: var(--theme-error);
}
.section > div {
padding: var(--s-2);
border-radius: var(--rounded);
background-color: var(--bg-darker);
}
.section > h2 {
color: var(--text-lighter);
font-size: var(--fonts-md);
}
.stack {
display: flex;
flex-direction: column;
}
.stack.xxs {
gap: var(--s-1);
}
.stack.xs {
gap: var(--s-1-5);
}
.stack.sm {
gap: var(--s-2);
}
.stack.md {
gap: var(--s-4);
}
.stack.smedium {
gap: var(--s-6);
}
.stack.lg {
gap: var(--s-8);
}
.stack.horizontal {
flex-direction: row;
}
.lock-scroll {
overflow: hidden;
}
/* https://stackoverflow.com/questions/50917016/make-a-hidden-field-required/50917245#comment117565184_50917245 */
.hidden-input-with-validation {
position: absolute;
width: 0;
height: 0;
border: none;
opacity: 0;
pointer-events: none;
}
.label__container {
display: flex;
align-items: flex-end;
gap: var(--s-2);
margin-block-end: var(--label-margin);
}
.label__container > label {
margin: 0;
}
.label__value {
color: var(--text-lighter);
font-size: var(--fonts-xxs);
margin-block-start: -5px;
}
.label__value.warning {
color: var(--theme-warning);
}
.label__value.error {
color: var(--theme-error);
}
.error-message {
display: block;
color: var(--theme-error);
font-size: var(--fonts-xs);
margin-block-start: var(--label-margin);
}
.info-message {
display: block;
color: var(--text-lighter);
font-size: var(--fonts-xs);
margin-block-start: var(--label-margin);
}
.builds-container {
display: grid;
justify-content: center;
gap: var(--s-3);
grid-template-columns: repeat(auto-fit, 240px);
}
.build {
display: flex;
flex-direction: column;
padding: var(--s-2-5);
border-radius: var(--rounded);
background-color: var(--bg-lighter);
gap: var(--s-3);
}
.build__title {
font-size: var(--fonts-sm);
line-height: 1.25;
word-wrap: break-word;
}
.build__top-row {
display: flex;
justify-content: space-between;
}
.build__date-author-row {
display: flex;
font-size: var(--fonts-xxxs);
gap: var(--s-1);
}
.build__modes {
display: flex;
min-width: max-content;
gap: var(--s-1);
}
.build__weapon {
padding: var(--s-0-5);
border-radius: 50%;
background-color: var(--bg-darker-very-transparent);
}
.build__weapon-text {
padding-left: var(--s-1);
color: var(--text-lighter);
font-size: var(--fonts-xxs);
font-weight: var(--semi-bold);
}
.build__weapons {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: var(--s-1);
}
.build__gear-abilities {
display: grid;
column-gap: var(--s-1);
grid-template-columns: repeat(5, max-content);
place-items: center;
row-gap: var(--s-2);
}
.build__gear {
border-radius: 50%;
background-color: var(--bg-darker-very-transparent);
}
.build__ability {
width: var(--ability-size);
height: var(--ability-size);
padding: 0;
border: 2px solid var(--theme-transparent);
border-radius: 50%;
border-right: 0;
border-bottom: 0;
background: var(--bg-ability);
background-size: 100%;
box-shadow: 0 0 0 1px var(--bg-ability);
transform: scale(1);
transition: all 0.1s ease;
user-select: none;
}
.build__ability.is-drag-target {
background: var(--abilities-button-bg);
transform: scale(1.15);
}
.build__ability.drag-started:not(.drop-allowed) {
filter: grayscale(1);
opacity: 0.3;
pointer-events: none;
}
.build__ability.readonly,
.build__ability.readonly:active {
cursor: default;
transform: none;
}
.build__bottom-row {
display: flex;
height: 100%;
align-items: flex-end;
justify-content: center;
gap: var(--s-4);
}
.build__icon {
width: 1.2rem;
height: 1.2rem;
}
.build__small-text {
font-size: var(--fonts-xxs) !important;
}
.ability-selector__container {
display: flex;
width: 100%;
flex-direction: column;
justify-content: center;
gap: var(--s-3);
}
.ability-selector__slots {
display: grid;
margin: 0 auto;
gap: var(--s-2);
grid-template-columns: repeat(4, max-content);
place-items: center;
}
.ability-selector__ability-buttons {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: var(--s-1);
}
.ability-selector__ability-button {
padding: var(--s-0-5);
border-color: var(--abilities-button-bg);
border-radius: 50%;
background-color: var(--abilities-button-bg);
}
.ability-selector__ability-button.is-dragging {
box-shadow: 0 0 100px inset rgb(255 255 255 / 25%);
}
.breadcrumbs {
display: flex;
font-size: var(--fonts-xs);
font-weight: var(--bold);
gap: var(--s-1);
}