html {
  font-family: "Lexend", sans-serif;
  font-optical-sizing: auto;
  font-weight: 200;
  font-style: normal;
}

:root {
  --white: #fff;
  --snow: #eee;
  --magenta: #cf359e;
  --orange: #eb5e00;
  --blue: #2a7dea;
  --green: #609237;
  --charcoal: #333;

  --art-hover: 30pt;
  --tech-hover: 30pt;
  --hover: 40pt;
}

@media (min-width: 320px) {
  /* smartphones, iPhone, portrait 480x320 phones */
  :root {
    --sm: 30pt;
    --lg: 60pt;
    --about-size: 55%;
  }
  html {
    font-size: 0.9em;
  }
  div.content {
    min-width: 180pt;
  }
  body.about {
    grid-template-columns: var(--art-hover) auto var(--tech-hover);
    grid-template-rows: var(--about-size) auto var(--sm);
  }
  body.about:has(.contact:hover) {
    grid-template-rows: var(--about-size) auto var(--hover);
  }
  div.contact dl {
    font-size: 0.95em;
  }
}

@media (min-width: 481px) {
  /* portrait e-readers (Nook/Kindle), smaller tablets @ 600 or @ 640 wide. */
  :root {
    --sm: 30pt;
    --lg: 100pt;
    --about-size: 40%;
  }
  html {
    font-size: 1em;
  }
  body.about {
    grid-template-columns: var(--art-hover) auto var(--tech-hover);
    grid-template-rows: var(--about-size) auto var(--sm);
  }
  body.about:has(.contact:hover) {
    grid-template-rows: var(--about-size) auto var(--hover);
  }
}
@media (min-width: 641px) {
  /* portrait tablets, portrait iPad, landscape e-readers, landscape 800x480 or 854x480 phones */
  div.content {
    min-width: 200pt;
  }
  div.contact dl {
    font-size: 1.15em;
  }
}
@media (min-width: 961px) {
  /* tablet, landscape iPad, lo-res laptops ands desktops */
}
@media (min-width: 1025px) {
  /* big landscape tablets, laptops, and desktops */
}
@media (min-width: 1281px) {
  /* hi-res laptops and desktops */
}

body {
  position: absolute;
  overscroll-behavior: none;

  color: var(--white);
  margin: 0;
  width: 100%;
  height: 100%;

  display: grid;
  transition: grid 0.25s ease-out;

  scrollbar-width: thin; /* auto | thin | none */
  scrollbar-color: #888 #f1f1f1; /* thumb color track color */
}

body.art {
  grid-template-columns: calc(100% - var(--lg)) auto var(--sm);
  grid-template-rows: var(--sm) auto var(--sm);
}

body.technology {
  grid-template-columns: var(--sm) auto calc(100% - var(--lg));
  grid-template-rows: var(--sm) auto var(--sm);
}

body.contact {
  grid-template-columns: var(--sm) auto var(--sm);
  grid-template-rows: var(--sm) auto var(--about-size);
}

/* Hover sitch */

body.art:has(.about:hover),
body.technology:has(.about:hover) {
  grid-template-rows: var(--hover) auto var(--sm);
}

body.contact:has(.about:hover) {
  grid-template-rows: var(--hover) auto var(--about-size);
}

body.contact:has(.art:hover),
body.about:has(.art:hover) {
  grid-template-columns: var(--hover) auto var(--sm);
}

body.technology:has(.art:hover) {
  grid-template-columns: var(--hover) auto calc(100% - var(--lg));
}

body.contact:has(.technology:hover),
body.about:has(.technology:hover) {
  grid-template-columns: var(--sm) auto var(--hover);
}

body.art:has(.technology:hover) {
  grid-template-columns: calc(100% - var(--lg)) auto var(--hover);
}

body.art:has(.contact:hover),
body.technology:has(.contact:hover) {
  grid-template-rows: var(--sm) auto var(--hover);
}

body > div {
  overflow: hidden;
}

h1 {
  transition: opacity 0.25s;
  font-family: "Funnel Display", "Lexend", sans-serif;
  font-weight: 300;
}

h1 img {
  height: 0.75em;
  padding: 0;
  margin-top: 6pt;
  align-content: baseline;
}

h2 {
  margin-block-start: 0;
  margin-block-end: 0.4em;
  font-family: "Lexend";
  font-weight: 100;
  font-size: 2em;
}

* + h2 {
  margin-block-start: 1.5em;
}

h3 {
  margin-block-start: 0;
  font-weight: 400;
}

dl {
  display: grid;
  gap: 0.25em 1em;
}

dt {
  grid-column: 1;
}

dd {
  grid-column: 2;
}

div.content dl {
  grid-template-columns: max-content auto;
}

div.content dt {
  font-weight: 500;
}

div.content dd {
  margin-inline-start: 0;
}

div.contact dl {
  float: right;
  grid-template-columns: repeat(2, max-content);
}

body .collapsed {
  opacity: 1;
}

body .expanded {
  opacity: 0;
}

body.about div.about .collapsed,
body.contact div.about .collapsed,
body.contact div.contact .collapsed,
body.about div.contact .collapsed {
  opacity: 0;
}

body.about div.about .expanded,
body.contact div.about .expanded,
body.contact div.contact .expanded,
body.about div.contact .expanded {
  opacity: 1;
}

div {
  padding: 5pt;
}

h1 {
  font-weight: 100;
  margin-block: 0;
}

a {
  color: var(--white);
}

a:hover {
  color: var(--charcoal);
  background: var(--snow);
}

div.scroll-container {
  position: absolute;
  top: 30pt;
  margin: 0;
  padding: 0;
  margin-block-start: 0;
}

div.scroll {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  overflow-x: hidden;
}

@supports selector(::-webkit-scrollbar) {
  div.scroll::-webkit-scrollbar {
    -webkit-appearance: none;
  }

  div.scroll::-webkit-scrollbar:vertical {
    width: 10px;
  }

  div.scroll::-webkit-scrollbar:horizontal {
    height: 10px;
  }

  div.scroll::-webkit-scrollbar-thumb {
    border: 0; /* should match background, can't be transparent */
    background-color: rgba(0, 0, 0, 0.5);
  }
}

div.content {
  margin: 5pt;
  max-width: 450pt;
  margin-block-start: 0;
}

div.about .content,
div.contact .content {
  font-size: 1.15em;
}

div.about {
  background: var(--orange);
  grid-column: 2;
  grid-row: 1;
  position: relative;
  padding: 0;
}

div.about div.scroll-container {
  top: 30pt;
  width: calc(100vw - 2 * var(--sm));
  height: calc(100vh - 2 * var(--sm));
}

div.about h1 {
  position: absolute;
  top: -1pt;
  left: 8pt;
  width: calc(100vw - 2 * var(--sm));
}

div.about .content,
div.technology .content {
  margin-right: 10pt;
}

.content p {
  margin-block-start: 0;
}

div.center {
  grid-column: 2 / 3;
  grid-row: 2 / 3;
  position: relative;
  margin: 0;
  padding: 0;
  align-items: center;
  display: flex;
  justify-content: center;
  background-image: url("/thumbnails/eye.png");
  background-repeat: no-repeat;
  background-position: center center;
  background-size: cover;
  background-attachment: fixed;
}

div.art {
  background: var(--magenta);
  grid-column: 1;
  grid-row: 2;
  position: relative;
  padding: 0;
}

div.art div.scroll-container {
  top: 0;
  right: 30pt;
  width: calc(100vw - var(--sm) - var(--lg));
  height: calc(100vh - 2 * var(--sm));
}

div.art h1 {
  transform: rotate(-90deg);
  position: absolute;
  transform-origin: right bottom;
  top: -22pt;
  right: 2pt;
}

div.technology {
  background: var(--blue);
  grid-column: 3;
  grid-row: 2;
  position: relative;
  padding: 0;
}

div.technology div.scroll-container {
  top: 0;
  left: 30pt;
  width: calc(100vw - var(--sm) - var(--lg));
  height: calc(100vh - 2 * var(--sm));
}

div.technology h1 {
  transform: rotate(90deg);
  position: absolute;
  transform-origin: bottom left;
  top: -22pt;
  left: 2pt;
}

div.contact {
  background: var(--green);
  grid-column: 2;
  grid-row: 3;
  position: relative;
}

div.contact div.scroll-container {
  top: 30pt;
  right: 0;
  width: calc(100vw - 2 * var(--sm));
  height: calc(100vh - 2 * var(--sm));
}

div.contact h1 {
  position: absolute;
  top: -1pt;
  right: 8pt;
}

div.contact .content {
  text-align: right;
  float: right;
  margin-left: 0pt;
  width: calc(100% - 10pt);
}

div.contact .content p {
  clear: both;
}

div.contact dt {
  text-align: left;
}

div.contact dt strong {
  font-weight: 400;
}

div.contact dd {
  margin-inline-start: 0;
}
