*, *::before, *::after { box-sizing: border-box; } body { width: 100%; background-color: var(--bg); color: var(--text); font-family: Lexend, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: antialiased; line-height: 1.55; overflow-x: hidden; -webkit-tap-highlight-color: transparent; } *: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: var(--theme-very-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).big { font-size: var(--fonts-md); padding-block: var(--s-2-5); padding-inline: var(--s-6); } :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 !important; } :is(button, .button).tiny > .button-icon { width: 1rem; margin-inline-end: var(--s-1); } /* :not([name="text"]) workaround not to select textarea on map planner */ textarea:not(.plain, [name="text"]) { width: 18rem; max-width: 100%; height: 8rem; padding: var(--s-2-5) var(--s-3); border: 2px solid var(--border); border-radius: var(--rounded-sm); accent-color: var(--theme-secondary); background-color: var(--bg-input); color: var(--text); outline: none; overflow-wrap: normal; overflow-x: auto; } progress { accent-color: var(--theme); } textarea:not(.plain, [name="text"]):focus-within { border-color: transparent; /* TODO: rectangle on Safari */ outline: 2px solid var(--theme); } input:not(.plain, [type="radio"]) { width: var(--input-width, 12rem); } input:not(.plain) { height: 1rem; padding: var(--s-4) var(--s-3); border: 2px solid var(--border); border-radius: var(--rounded-sm); accent-color: var(--theme-secondary); background-color: var(--bg-input); color: var(--text); outline: none; } input:user-invalid { border-color: transparent; outline: 2px solid var(--theme-error); } input:not(.plain, .combobox-input):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-lighter); 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: 2px solid var(--border); border-radius: var(--rounded-sm); background: var(--select-background, var(--bg-input)); /* TODO: Get color from CSS var */ background-image: url('data:image/svg+xml;utf8,'); background-position: center right var(--s-3); background-repeat: no-repeat; cursor: pointer; font-weight: 500; padding-block: 3.5px; padding-inline: var(--s-3) var(--s-8); } select:disabled { cursor: not-allowed; opacity: 0.5; transform: initial; } /* 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,'); } select::selection { overflow: hidden; font-weight: bold; } select:focus { outline: 2px solid var(--theme); } table { width: 100%; border-collapse: collapse; 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); color: var(--text); } 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-vibrant); } .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-sm); font-weight: var(--semi-bold); margin-block-end: 0.125rem; } .input-container { display: flex; border: 2px solid var(--border); border-radius: var(--rounded-sm); accent-color: var(--theme-secondary); background-color: var(--bg-input); 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; margin: auto 0; } /* stylelint-enable no-descending-specificity */ .input-container > input:focus-within { outline: none; } .input-addon { display: grid; border-radius: var(--rounded-sm) 0 0 var(--rounded-sm); 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; gap: var(--s-4); margin-block-end: var(--s-8); margin-block-start: -12px; } .sub-nav__link__container { display: flex; max-width: 105px; flex: 1; flex-direction: column; align-items: center; color: var(--text); gap: var(--s-1-5); } .sub-nav__link__container.active { color: var(--theme-secondary); } .sub-nav__link { width: 100%; padding: var(--s-1) var(--s-4); border-radius: var(--rounded); background-color: var(--bg-lightest); cursor: pointer; font-size: var(--fonts-xs); text-align: center; white-space: nowrap; } .sub-nav__container.compact .sub-nav__link { padding: var(--s-1) var(--s-2); } .sub-nav__border-guy { width: 78%; height: 3px; border-radius: var(--rounded); background-color: var(--bg-lightest); visibility: hidden; } .sub-nav__link__container.active > .sub-nav__border-guy { visibility: initial; } .popover-content { z-index: 1; max-width: 20rem; padding: var(--s-2); border: 2px solid var(--border); border-radius: var(--rounded); background-color: var(--bg-darker); font-size: var(--fonts-sm); font-weight: var(--semi-bold); white-space: pre-wrap; } .articles-list { display: flex; flex-direction: column; padding: 0; gap: var(--s-6); list-style: none; } .articles-list__title { color: var(--theme); font-size: var(--fonts-md); } .combobox-wrapper { position: relative; } .combobox-input { width: var(--input-width, 12rem); } .combobox-input.fullWidth { width: 100%; } .combobox-options { position: absolute; z-index: 2; width: var(--input-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; font-size: var(--fonts-xxs); font-weight: var(--semi-bold); gap: var(--s-1); list-style: none; } .calendar__event__tags > li { display: flex; align-items: center; border-radius: var(--rounded); padding-inline: var(--s-1-5); } .calendar__event__tag { color: var(--black-text); } .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-lightest); } /* Hack to deal with Safari bug when the image is loading. See: https://stackoverflow.com/a/73466877 */ @media not all and (min-resolution: 0.001dpcm) { img[loading="lazy"] { clip-path: inset(0.5px); } } .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.xl { gap: var(--s-12); } .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; column-gap: var(--s-3); grid-template-columns: repeat(auto-fit, 240px); row-gap: var(--s-4); } .builds-buttons { display: flex; justify-content: space-between; } .builds-buttons__link { display: flex; flex-direction: column; gap: var(--s-2); } @media screen and (min-width: 480px) { .builds-buttons__link { flex-direction: row; } } .build__filter { display: flex; flex-direction: column; padding: var(--s-2-5); border-radius: var(--rounded); background-color: var(--bg-lighter); gap: var(--s-2); } @media screen and (min-width: 640px) { .build__filter { flex-direction: row; } } .build__filter__ability { display: flex; width: 32px; align-items: center; } .build__filter__ap-select { width: 75px; } .build { position: relative; display: flex; flex-direction: column; padding: var(--s-3); border-radius: var(--rounded); background-color: var(--bg-lighter); gap: var(--s-3); } .build__private { background-color: var(--bg-lighter-transparent); } .build__private-text { display: flex; justify-content: center; font-weight: var(--semi-bold); gap: var(--s-1); } .build__private-icon { width: 16px; margin-block-end: var(--s-1); stroke-width: 2px; } .build__title { overflow: hidden; height: 2.5rem; font-size: var(--fonts-sm); line-height: 1.25; word-wrap: break-all; } .build__top-row { display: flex; justify-content: space-between; } .build__date-author-row { display: flex; font-size: var(--fonts-xxs); gap: var(--s-1); } .build__modes { position: absolute; right: 0; display: flex; min-width: max-content; margin-top: -21px; gap: var(--s-1); } .build__weapon { position: relative; padding: var(--s-0-5); border-radius: 50%; background-color: var(--bg-darker-very-transparent); } .build__top500 { position: absolute; top: -14px; right: 8px; } .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%); } .colors__grid { display: grid; width: 100%; justify-content: center; font-size: var(--fonts-sm); font-weight: var(--bold); grid-template-columns: 3fr 2fr 1fr; row-gap: var(--s-3); } .playwire__img { display: block; width: 200px; margin-right: auto; margin-left: auto; } .playwire__text { font-size: var(--fonts-sm); text-align: center; } .top-leaderboard { min-height: 110px; margin-block-start: var(--s-20); } .youtube__container { position: relative; width: 100%; height: 0; padding-bottom: 56.25%; } .youtube__iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .divider { display: flex; width: 100%; align-items: center; color: var(--theme); font-size: var(--fonts-lg); text-align: center; } .divider::before, .divider::after { flex: 1; border-bottom: 2px solid var(--theme-transparent); content: ""; } .divider:not(:empty)::before { margin-right: 0.25em; } .divider:not(:empty)::after { margin-left: 0.25em; } #nprogress .bar { margin-top: 3rem !important; background: var(--theme) !important; } #nprogress .spinner { display: none !important; } #nprogress .peg { display: none !important; }