<div class="light">
  <div class="box">Light</div>
  <pre class="language-css">
<code>
.light {
  --primary-hue: 250;
  --primary-saturation: 100%;
  --primary-lightness: 90%;
  --primary-light: hsl(
    var(--primary-hue) var(--primary-saturation) var(--primary-lightness)
  );
  --on-primary-light: hsl(var(--primary-hue) var(--primary-saturation) 10%);

  --surface1-light: hsl(var(--primary-hue) 40% 90%);
  --surface2-light: hsl(var(--primary-hue) 30% 99%);
  --surface3-light: hsl(var(--primary-hue) 30% 92%);
  --surface4-light: hsl(var(--primary-hue) 30% 85%);

  --surface-shadow-light: var(--primary-hue) 40% 10%;
  --shadow-strength-light: 0.25;
}
</code>
</pre>
</div>

<div class="dark">
  <div class="box">dark</div>
  <pre class="language-css">
<code>
.dark {
  --primary-hue: 256;
  --primary-saturation: 34%;
  --primary-lightness: 48%;
  --primary-dark: hsl(
    var(--primary-hue) var(--primary-saturation) var(--primary-lightness)
  );
  --on-primary-dark: hsl(var(--primary-hue) var(--primary-saturation) 90%);

  --surface1-dark: hsl(var(--primary-hue) 40% 50%);
  --surface2-dark: hsl(var(--primary-hue) 38% 46%);
  --surface3-dark: hsl(var(--primary-hue) 36% 41%);
  --surface4-dark: hsl(var(--primary-hue) 34% 30%);
  --surface-shadow-dark: var(--primary-hue) 40% 20%;
  --shadow-strength-dark: 0.25;
}
</code>
</pre>
</div>
@import url("https://fonts.googleapis.com/css2?family=Exo:wght@600&display=swap");

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  width: 100vw;
  min-height: 100vh;
  font-family: "Exo", Arial, sans-serif;
  background-color: #557;

  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

body > div {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  min-width: 0;
}

.light {
  --primary-hue: 250;
  --primary-saturation: 100%;
  --primary-lightness: 90%;
  --primary-light: hsl(
    var(--primary-hue) var(--primary-saturation) var(--primary-lightness)
  );
  --on-primary-light: hsl(var(--primary-hue) var(--primary-saturation) 10%);

  --surface1-light: hsl(var(--primary-hue) 40% 90%);
  --surface2-light: hsl(var(--primary-hue) 30% 99%);
  --surface3-light: hsl(var(--primary-hue) 30% 92%);
  --surface4-light: hsl(var(--primary-hue) 30% 85%);

  --surface-shadow-light: var(--primary-hue) 40% 10%;
  --shadow-strength-light: 0.25;
}

.dark {
  --primary-hue: 256;
  --primary-saturation: 34%;
  --primary-lightness: 48%;
  --primary-dark: hsl(
    var(--primary-hue) var(--primary-saturation) var(--primary-lightness)
  );
  --on-primary-dark: hsl(var(--primary-hue) var(--primary-saturation) 90%);

  --surface1-dark: hsl(var(--primary-hue) 40% 50%);
  --surface2-dark: hsl(var(--primary-hue) 38% 46%);
  --surface3-dark: hsl(var(--primary-hue) 36% 41%);
  --surface4-dark: hsl(var(--primary-hue) 34% 30%);
  --surface-shadow-dark: var(--primary-hue) 40% 20%;
  --shadow-strength-dark: 0.25;
}

.box {
  width: 40vmin;
  aspect-ratio: 1 / 1;
  border-radius: 20px;
  margin: 0 auto;
  display: flex;
  justify-content: center;
  align-items: center;
}

.light .box {
  background-color: var(--primary-light);
  color: var(--on-primary-light);
  box-shadow: 0 0 2px 4px
    hsl(var(--surface-shadow-light) / var(--shadow-strength-light));
}

.dark .box {
  background-color: var(--primary-dark);
  color: var(--on-primary-dark);
  box-shadow: 0 0 2px 4px
    hsl(var(--surface-shadow-dark) / var(--shadow-strength-dark));
}

pre {
  flex: 1;
  width: 100%;
}

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/prism/0.0.1/prism.min.js