/*
  ds.css — compiled for local/static use
  Source: https://github.com/spiritov/ds.css (Tailwind v4 source)
  This version is hand-converted to plain CSS (no @theme/@apply/build step)
  so it can be dropped into a static site as-is, using local asset paths.
*/

@font-face {
  font-family: 'ds-system';
  src: url('../fonts/nitrods-font.ttf') format('truetype');
  font-display: swap;
}

:root {
  --font-system: 'ds-system', 'system-ui';

  --color-white: #ffffff;
  --color-ds-darkgrey: #494949;
  --color-ds-info-bg: #282828;

  --color-ds-pictochat-bg: #aaaaaa;
  --color-ds-pictochat-border: #bababa;

  --color-ds-grid-border: #c3c3c3;
  --color-ds-grid-bg: #e3e3e3;

  --color-ds-text-focus: #e36100;

  --color-ds-loading: #fbd300;

  --color-ds-theme-slate: #61829a;
  --color-ds-theme-maroon: #ba4900;
  --color-ds-theme-red: #fb0018;
  --color-ds-theme-pink: #fb8afb;
  --color-ds-theme-orange: #fb9200;
  --color-ds-theme-yellow: #f3e300;
  --color-ds-theme-neonyellow: #aafb00;
  --color-ds-theme-lime: #00fb00;
  --color-ds-theme-green: #00a238;
  --color-ds-theme-teal: #49db8a;
  --color-ds-theme-turquoise: #30baf3;
  --color-ds-theme-blue: #0059f3;
  --color-ds-theme-navy: #000092;
  --color-ds-theme-darkpurple: #8a00d3;
  --color-ds-theme-magenta: #d300eb;
  --color-ds-theme-fuschia: #fb0092;
}

/* short theme-color utilities (as named in the ds.css source) */
.ds-slate { background-color: var(--color-ds-theme-slate); }
.ds-maroon { background-color: var(--color-ds-theme-maroon); }
.ds-red { background-color: var(--color-ds-theme-red); }
.ds-pink { background-color: var(--color-ds-theme-pink); }
.ds-orange { background-color: var(--color-ds-theme-orange); }
.ds-yellow { background-color: var(--color-ds-theme-yellow); }
.ds-neonyellow { background-color: var(--color-ds-theme-neonyellow); }
.ds-lime { background-color: var(--color-ds-theme-lime); }
.ds-green { background-color: var(--color-ds-theme-green); }
.ds-teal { background-color: var(--color-ds-theme-teal); }
.ds-turquoise { background-color: var(--color-ds-theme-turquoise); }
.ds-blue { background-color: var(--color-ds-theme-blue); }
.ds-navy { background-color: var(--color-ds-theme-navy); }
.ds-darkpurple { background-color: var(--color-ds-theme-darkpurple); }
.ds-magenta { background-color: var(--color-ds-theme-magenta); }
.ds-fuschia { background-color: var(--color-ds-theme-fuschia); }

/* bg-ds-theme-* utilities (the Tailwind-auto-generated names used on the demo/landing site) */
.bg-ds-theme-slate { background-color: var(--color-ds-theme-slate); }
.bg-ds-theme-maroon { background-color: var(--color-ds-theme-maroon); }
.bg-ds-theme-red { background-color: var(--color-ds-theme-red); }
.bg-ds-theme-pink { background-color: var(--color-ds-theme-pink); }
.bg-ds-theme-orange { background-color: var(--color-ds-theme-orange); }
.bg-ds-theme-yellow { background-color: var(--color-ds-theme-yellow); }
.bg-ds-theme-neonyellow { background-color: var(--color-ds-theme-neonyellow); }
.bg-ds-theme-lime { background-color: var(--color-ds-theme-lime); }
.bg-ds-theme-green { background-color: var(--color-ds-theme-green); }
.bg-ds-theme-teal { background-color: var(--color-ds-theme-teal); }
.bg-ds-theme-turquoise { background-color: var(--color-ds-theme-turquoise); }
.bg-ds-theme-blue { background-color: var(--color-ds-theme-blue); }
.bg-ds-theme-navy { background-color: var(--color-ds-theme-navy); }
.bg-ds-theme-darkpurple { background-color: var(--color-ds-theme-darkpurple); }
.bg-ds-theme-magenta { background-color: var(--color-ds-theme-magenta); }
.bg-ds-theme-fuschia { background-color: var(--color-ds-theme-fuschia); }

:root,
.ds {
  font-family: var(--font-system);
  -webkit-font-smoothing: none;
}

/* input & button elements */

button,
input[type='text'] {
  border-style: solid;
  border-width: 2px;
  padding-inline: 0.25rem;
  text-wrap: nowrap;
}

input[type='text'] {
  height: calc(0.25rem * 8.5);
  width: calc(0.25rem * 80.5);
  border-color: black;
  color: white;
  outline-style: none;
  background: url('../svg/input.svg') -1px;
}
input[type='text']::selection,
input[type='text'] *::selection {
  background-color: var(--color-ds-text-focus);
}

input[type='radio'] {
  height: calc(0.25rem * 15.5);
  width: calc(0.25rem * 48);
  appearance: none;
  border-style: solid;
  border-width: 2px;
  border-color: var(--color-ds-darkgrey);
  background-image: url('../svg/button_radio.svg');
}

input[type='radio']:checked {
  background-blend-mode: hard-light;
}

button {
  height: calc(0.25rem * 9);
  width: calc(0.25rem * 40);
  cursor: pointer;
  border-color: var(--color-ds-darkgrey);
  padding-inline: calc(0.25rem * 0.5);
  background-blend-mode: hard-light;
  background-image: url('../svg/button.svg');
  clip-path: polygon(
    2px 100%,
    2px calc(100% - 2px),
    0 calc(100% - 2px),
    0 2px,
    2px 2px,
    2px 0,
    calc(100% - 2px) 0,
    calc(100% - 2px) 2px,
    100% 2px,
    100% calc(100% - 2px),
    calc(100% - 2px) calc(100% - 2px),
    calc(100% - 2px) 100%
  );
}

label {
  display: flex;
  flex-direction: column;
  -webkit-user-select: none;
  user-select: none;
}

button:active {
  background-image: url('../svg/button_active.svg');
}

details > summary {
  height: calc(0.25rem * 8.5);
  width: calc(0.25rem * 111.5);
  border-style: solid;
  border-width: 2px;
  padding-top: 1px;
  text-align: center;
  background-image: url('../svg/details_head.svg');
  list-style: none;
}

details:open > p {
  height: calc(0.25rem * 23.5);
  width: calc(0.25rem * 111);
  border-inline-style: solid;
  border-inline-width: 2px;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  padding-inline: calc(0.25rem * 0.5);
  padding-top: 1px;
  text-align: center;
  background-image: url('../svg/details.svg');
}

label > span,
legend {
  height: calc(0.25rem * 7.5);
  padding-left: 0.25rem;
  vertical-align: text-bottom;
}

/* classes */

.alert {
  display: flex;
  height: calc(0.25rem * 33.5);
  width: calc(0.25rem * 103);
  align-content: center;
  align-items: center;
  justify-content: space-between;
  gap: calc(0.25rem * 5.5);
  border-style: solid;
  border-width: 16px;
  padding-inline: calc(0.25rem * 5);
  text-align: center;
  color: var(--color-white);
  border-image: url('../svg/alert_border.svg') 15;
  background: repeating-linear-gradient(
    black,
    black 2px,
    var(--color-ds-darkgrey) 2px,
    var(--color-ds-darkgrey) 4px
  );
  background-size: 100% 4px;
  clip-path: polygon(
    10px 100%, 10px calc(100% - 2px), 8px calc(100% - 2px), 8px calc(100% - 4px),
    6px calc(100% - 4px), 6px calc(100% - 6px), 4px calc(100% - 6px), 4px calc(100% - 8px),
    2px calc(100% - 8px), 2px calc(100% - 10px), 0 calc(100% - 10px),
    0 10px, 2px 10px, 2px 8px, 4px 8px, 4px 6px, 6px 6px, 6px 4px, 8px 4px, 8px 2px, 10px 2px, 10px 0,
    calc(100% - 10px) 0, calc(100% - 10px) 2px, calc(100% - 8px) 2px, calc(100% - 8px) 4px,
    calc(100% - 6px) 4px, calc(100% - 6px) 6px, calc(100% - 4px) 6px, calc(100% - 4px) 8px,
    calc(100% - 2px) 8px, calc(100% - 2px) 10px, 100% 10px,
    100% calc(100% - 10px), calc(100% - 2px) calc(100% - 10px), calc(100% - 2px) calc(100% - 8px),
    calc(100% - 4px) calc(100% - 8px), calc(100% - 4px) calc(100% - 6px), calc(100% - 6px) calc(100% - 6px),
    calc(100% - 6px) calc(100% - 4px), calc(100% - 8px) calc(100% - 4px), calc(100% - 8px) calc(100% - 2px),
    calc(100% - 10px) calc(100% - 2px), calc(100% - 10px) 100%
  );
}
.alert *::selection,
.alert::selection {
  background-color: var(--color-ds-text-focus);
}

.bar {
  height: calc(0.25rem * 8);
  border-bottom-style: solid;
  border-bottom-width: 2px;
  background-blend-mode: hard-light;
  background-image: url('../svg/top_bar.svg');
}

.bar-lg {
  height: calc(0.25rem * 11.5);
  border-bottom-style: solid;
  border-bottom-width: 2px;
  background-blend-mode: hard-light;
  background-image: url('../svg/bottom_bar_top.svg');
}

.bar-lg-reverse {
  height: calc(0.25rem * 11.5);
  border-top-style: solid;
  border-top-width: 2px;
  background-blend-mode: hard-light;
  background-image: url('../svg/bottom_bar_bottom.svg');
  background-position-y: -2px;
}

.button-lg {
  width: 13.75rem; /* Tailwind w-55 */
  background-image: url('../svg/button_lg.svg');
}

.button-square {
  width: 2.25rem; /* Tailwind size-9 */
  height: 2.25rem;
  background-image: url('../svg/button_square.svg');
}

.button-square:active {
  background-image: url('../svg/button_square_active.svg');
}

.button-lg:active {
  background-image: url('../svg/button_lg_active.svg');
}

button:active:not(:hover),
.button-lg:active:not(:hover),
.button-square:active:not(:hover) {
  background-blend-mode: normal;
}

.ds-grid {
  background:
    repeating-linear-gradient(
      transparent, transparent 30px, var(--color-ds-grid-border) 30px, var(--color-ds-grid-border) 32px
    ),
    repeating-linear-gradient(
      to right, transparent, transparent 30px, var(--color-ds-grid-border) 30px, var(--color-ds-grid-border) 32px
    ),
    repeating-linear-gradient(
      white, white 2px, var(--color-ds-grid-bg) 2px, var(--color-ds-grid-bg) 4px
    );
}

.ds-grid-lg {
  background-image: url('../svg/grid_lg.svg');
}

.info {
  display: flex;
  height: calc(0.25rem * 24);
  width: 32rem; /* Tailwind container-lg equivalent */
  gap: calc(0.25rem * 0.5);
  border-top-style: solid;
  border-top-width: 2px;
  padding-block: calc(0.25rem * 0.5);
  padding-left: 0.25rem;
  background-blend-mode: hard-light;
  background-image: url('../svg/info.svg');
}

.info-container {
  height: calc(0.25rem * 22.5);
  width: calc(0.25rem * 104);
}

.info-label {
  height: calc(0.25rem * 6.5);
  padding-right: 0.25rem;
  padding-left: calc(0.25rem * 2);
}

.info-square {
  display: grid;
  width: calc(0.25rem * 22.5);
  height: calc(0.25rem * 22.5);
  place-items: center;
  border-style: solid;
  border-width: 2px;
  background-blend-mode: hard-light;
  background-image: url('../svg/info_square.svg');
}

.info-text {
  height: calc(0.25rem * 16);
  border-style: solid;
  border-width: 4px;
  background-color: var(--color-ds-info-bg);
  padding-inline: 0.25rem;
  color: var(--color-white);
  border-image: url('../svg/info_border.svg') 4;
  clip-path: polygon(
    4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0px calc(100% - 4px),
    0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0px,
    calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, calc(100% - 0px) 4px,
    100% calc(100% - 4px), calc(100% - 2px) calc(100% - 4px), calc(100% - 2px) calc(100% - 2px),
    calc(100% - 4px) calc(100% - 2px), calc(100% - 4px) calc(100% - 0px)
  );
}

.input-lg {
  width: calc(0.25rem * 104.5);
}

.input-wrapper {
  display: flex;
  align-items: center;
  gap: calc(0.25rem * 0.5);
}

.input-before {
  height: calc(0.25rem * 7.5);
  width: calc(0.25rem * 7);
  background-repeat: no-repeat;
  background-image: url('../svg/input_before.svg');
}

.input-after {
  height: 1.875rem; /* Tailwind h-7.5 */
  width: 1.75rem; /* Tailwind w-7 */
  background-repeat: no-repeat;
  background-image: url('../svg/input_after.svg');
}

p,
.pictochat-window,
.pictochat-message,
.pictochat-status,
.pictochat-board {
  clip-path: polygon(
    8px 100%, 8px calc(100% - 2px), 6px calc(100% - 2px), 6px calc(100% - 4px), 4px calc(100% - 4px),
    4px calc(100% - 6px), 2px calc(100% - 6px), 2px calc(100% - 8px), 0 calc(100% - 8px),
    0 8px, 2px 8px, 2px 6px, 4px 6px, 4px 4px, 6px 4px, 6px 2px, 8px 2px, 8px 0px,
    calc(100% - 8px) 0, calc(100% - 8px) 2px, calc(100% - 6px) 2px, calc(100% - 6px) 4px,
    calc(100% - 4px) 4px, calc(100% - 4px) 6px, calc(100% - 2px) 6px, calc(100% - 2px) 8px, 100% 8px,
    100% calc(100% - 8px), calc(100% - 2px) calc(100% - 8px), calc(100% - 2px) calc(100% - 6px),
    calc(100% - 4px) calc(100% - 6px), calc(100% - 4px) calc(100% - 4px), calc(100% - 6px) calc(100% - 4px),
    calc(100% - 6px) calc(100% - 2px), calc(100% - 8px) calc(100% - 2px), calc(100% - 8px) 100%
  );
}

.pictochat-window {
  display: flex;
  flex-direction: column;
  border-style: solid;
  border-width: 8px;
  gap: calc(0.25rem * 2);
  background: repeating-linear-gradient(
    var(--color-ds-pictochat-bg), var(--color-ds-pictochat-bg) 6px,
    var(--color-ds-pictochat-border) 6px, var(--color-ds-pictochat-border) 8px
  );
  border-image: url('../svg/pictochat_border.svg') 8;
}

.pictochat-window > div {
  margin-inline: 0.125rem;
}

p,
.pictochat-message {
  border-style: solid;
  border-width: 8px;
  background-color: white;
  padding-inline: 0.25rem;
  border-image: url('../svg/pictochat_message_border.svg') 8;
}

.pictochat-status {
  border-style: solid;
  border-width: 8px;
  background-color: black;
  color: white;
  padding-inline: 0.25rem;
  border-image: url('../svg/pictochat_status.svg') 8;
}

.radio-button {
  position: relative;
  height: calc(0.25rem * 15.5);
  width: calc(0.25rem * 48);
  background-clip: border-box;
}

.radio-button > label {
  position: absolute;
  top: 50%;
  z-index: 10;
  width: 100%;
  translate: 0 -50%;
  text-align: center;
}

/* loading animation */

.loading-container {
  display: grid;
  width: fit-content;
  height: fit-content;
  flex-shrink: 0;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: calc(0.25rem * 0.5);
}

.loading-container > div {
  background-color: var(--color-ds-loading);
  width: calc(0.25rem * 1.5);
  height: calc(0.25rem * 1.5);
}

@keyframes loading-1 { 12.5%, 37.5% { opacity: 1; } 37.51%, 75% { opacity: 0; } 75.01%, 100% { opacity: 1; } }
@keyframes loading-2 { 0%, 50% { opacity: 1; } 50.01%, 87.5% { opacity: 0; } 87.51%, 100% { opacity: 1; } }
@keyframes loading-3 { 0%, 62.5% { opacity: 1; } 62.51%, 100% { opacity: 0; } }
@keyframes loading-6 { 0%, 12.5% { opacity: 0; } 12.51%, 75% { opacity: 1; } 75.01%, 100% { opacity: 0; } }
@keyframes loading-9 { 0%, 25% { opacity: 0; } 25.51%, 87.5% { opacity: 1; } 87.51%, 100% { opacity: 0; } }
@keyframes loading-8 { 0%, 37.5% { opacity: 0; } 37.51%, 100% { opacity: 1; } }
@keyframes loading-7 { 0%, 12.5% { opacity: 1; } 12.51%, 50% { opacity: 0; } 50.01%, 100% { opacity: 1; } }
@keyframes loading-4 { 0%, 25% { opacity: 1; } 25.01%, 62.5% { opacity: 0; } 62.51%, 100% { opacity: 1; } }

.loading-1 { animation: 533.33ms infinite loading-1; }
.loading-2 { animation: 533.33ms infinite loading-2; }
.loading-3 { animation: 533.33ms infinite loading-3; }
.loading-4 { animation: 533.33ms infinite loading-4; }
.loading-6 { animation: 533.33ms infinite loading-6; }
.loading-7 { animation: 533.33ms infinite loading-7; }
.loading-8 { animation: 533.33ms infinite loading-8; }
.loading-9 { animation: 533.33ms infinite loading-9; }
