/* By Stephen Paul Hassall (web: https://coderundebug.com) */
/* Theme: mono */
:root, :host {
  /* Only allow dark mode */
  color-scheme: dark;

  /* Icons */
  --ui-icon-mirror: scaleX(1);

  /* Border */
  --ui-border-radius-small: 2px;
  --ui-border-radius-normal: 4px;
  --ui-border-radius-large: 8px;
  --ui-border-width: 2px;
  --ui-border-style: dashed;

  /* Font */
  --ui-font-size-small: 12px;
  --ui-font-size-normal: 16px;
  --ui-font-size-large: 24px;
  --ui-font-weight-normal: normal;
  --ui-font-weight-bold: 600;

  /* Animation duration */
  --ui-animation-duration-slow: 400ms;
  --ui-animation-duration-default: 200ms;
  --ui-animation-duration-quick: 100ms;

  /* Colors */
  --ui-background: rgb(39, 35, 37);
  --ui-midground: rgb(48, 43, 52);
  --ui-foreground: rgb(255, 246, 230);
  --ui-default-background: rgb(58, 52, 68);
  --ui-default-foreground: rgb(255, 246, 230);
  --ui-selected-background: rgb(69, 35, 55);
  --ui-selected-foreground: rgb(255, 128, 205);
  --ui-success-background: hsl(104 50% 30% / 1);
  --ui-success-foreground: hsl(104 50% 90% / 1);  
  --ui-warning-background: hsl(45 50% 30% / 1);
  --ui-warning-foreground: hsl(45 50% 90% / 1);
  --ui-danger-background: hsl(0 50% 30% / 1);
  --ui-danger-foreground: hsl(0 50% 90% / 1);
  --ui-info-background: hsl(190 90% 30% / 1);
  --ui-info-foreground: hsl(190 50% 90% / 1);
  --ui-highlight-background: hsl(302 50% 30% / 1);
  --ui-highlight-foreground: hsl(302 50% 90% / 1);

  /* Module */
  --ui-module-background: rgb(58, 52, 68);
  --ui-module-foreground: rgb(255, 246, 230);
  --ui-module-backdrop: rgba(39, 35, 37, 0.6);
  --ui-module-border-style: none;
  --ui-module-border-width: 0;
  --ui-module-border-color: transparent;
  --ui-module-shadow: rgba(0, 0, 0, 0.75) 0px 8px 16px 0px;

  /* Code */
  --ui-code-foreground: white;

  /* HTML */
  --ui-code-html-comment: #6a9955;
  --ui-code-html-tag-bracket: #808080;
  --ui-code-html-tag-name: #569ccb;
  --ui-code-html-attribute: #9cdcfe;
  --ui-code-html-value: #ce9178;

  /* CSS */
  --ui-code-css-comment: #6a9955;
  --ui-code-css-class: #d7ba7d;
  --ui-code-css-id: #d7ba7d;
  --ui-code-css-tag: #d7ba7d;
  --ui-code-css-attribute: #9cdcfe;
  --ui-code-css-text: #c39178;
  --ui-code-css-function: #d4d4d4;
  --ui-code-css-property: #9cdcfe;
  --ui-code-css-value: #d4d4c9;
  --ui-code-css-variable: #b5ce9b;
  --ui-code-css-constant: #d4d4c9;

  /* JavaScript */
  --ui-code-javascript-comment: #6a9949;
  --ui-code-javascript-keyword: #4a9cd6;
  --ui-code-javascript-declaration: #da70cb;
  --ui-code-javascript-property: #d4d4d4;
  --ui-code-javascript-class: #9cdcfe;
  --ui-code-javascript-function: #d0dcaa;
  --ui-code-javascript-text: #ce9178;
  --ui-code-javascript-numeric: #b5cea8;

  /* SQL */
  --ui-code-sql-comment: #6a993e;
  --ui-code-sql-command: #569cd6;
  --ui-code-sql-text: #ce9178;
  --ui-code-sql-numeric: #b5cea8;
  --ui-code-sql-identifier: #d4d4d4;
  --ui-code-sql-constant: #b5cea8;
  --ui-code-sql-operator: #d4d4d4;

  /* JSON */
  --ui-code-json-property: #9cdcf0;
  --ui-code-json-text: #ce9178;
  --ui-code-json-literal: #b5ce89;
  --ui-code-json-constant: #4a9cd6;
  --ui-code-json-colon: #d4d4d4;
  --ui-code-json-comma: #d4d4d4;
  --ui-code-json-curly-brackets: #d4d4d4;
  --ui-code-json-square-brackets: #d4d4d4;

  /* Group */
  --ui-group-border-color: #6d6077;

  /* Tab */
  --ui-tab-boxed-border-style: dashed;
  --ui-tab-boxed-border-width: 2px;
  --ui-tab-boxed-border-color: #6d6077;
  --ui-tab-bar-color: #6d6077;
}

/* Reduced motion */
@media (prefers-reduced-motion) {
  :root, :host {
    /* Animation duration */
    --ui-animation-duration-slow: 0;
    --ui-animation-duration-default: 0;
    --ui-animation-duration-quick: 0;
  }
}

/* High contrast */
@media (forced-colors: active) or (prefers-contrast: more) {
  :root, :host {
    /* Border */
    --ui-border-radius: 0;
    --ui-border-width: 3px;
    --ui-border-style: solid;

    /* Colors */
    --ui-module-background: var(--ui-background);
    --ui-module-foreground: var(--ui-foreground);
    --ui-default-background: var(--ui-background);
    --ui-default-foreground: var(--ui-foreground);
    --ui-selected-background: var(--ui-background);
    --ui-selected-foreground: var(--ui-foreground);
    --ui-success-background: var(--ui-background);
    --ui-success-foreground: var(--ui-foreground);
    --ui-warning-background: var(--ui-background);
    --ui-warning-foreground: var(--ui-foreground);
    --ui-danger-background: var(--ui-background);
    --ui-danger-foreground: var(--ui-foreground);
    --ui-info-background: var(--ui-background);
    --ui-info-foreground: var(--ui-foreground);
    --ui-highlight-background: var(--ui-background);
    --ui-highlight-foreground: var(--ui-foreground);

    /* Module */
    --ui-module-border-style: solid;
    --ui-module-border-width: 3px;
    --ui-module-border-color: var(--ui-foreground);
    --ui-module-shadow: none;
  }
}

@media ((forced-colors: active) or (prefers-contrast: more)) and (prefers-color-scheme: light) {
  :root, :host {
    /* Colors */
    --ui-background: white;
    --ui-midground: white;
    --ui-foreground: black;
  }
}

@media ((forced-colors: active) or (prefers-contrast: more)) and (prefers-color-scheme: dark) {
  :root, :host {
    /* Colors */
    --ui-background: black;
    --ui-midground: black;
    --ui-foreground: white;
  }
}

/* Hide UI components until they are loaded */
*:not(:defined) {
  display: none;
}

::slotted(*:not(:defined)) {
  display: none;
}

/* Default body properties */
body, :host {
  /* Background and color */
  background-color: var(--ui-background);
  color: var(--ui-foreground);
  --ui-icon-primary-color: var(--ui-foreground);

  /* Text */
  font-family:
    SFMono-Medium,
    "SF Mono",
    "Segoe UI Mono",
    "Roboto Mono",
    "Ubuntu Mono",
    Menlo,
    Consolas,
    'Courier New',
    Courier,
    monospace;
  font-size: var(--ui-font-size-normal);
}
