/* commissioner-regular - latin */
@font-face {
  font-display: swap;
  font-family: 'Commissioner';
  font-style: normal;
  font-weight: 400;
  src: url('fonts/Commissioner-Regular.ttf') format('truetype');
}

/* commissioner-500 - latin */
@font-face {
  font-display: swap;
  font-family: 'Commissioner';
  font-style: normal;
  font-weight: 500;
  src: url('fonts/Commissioner-Medium.ttf') format('truetype');
}

/* commissioner-700 - latin */
@font-face {
  font-display: swap;
  font-family: 'Commissioner';
  font-style: normal;
  font-weight: 700;
  src: url('fonts/Commissioner-Bold.ttf') format('truetype');
}



:root {
  color-scheme: light dark;

  --size-pad-heading: clamp(0.875rem, 2.75vw, 1.25rem);
  --size-pad-block: clamp(0.875rem, 4vw, 2.5rem);
  --size-gap-xs: clamp(0.875rem, 2.5vw, 1.5rem);
  --size-gap-sm: clamp(0.875rem, 3vw, 2rem);
  --size-gap-md: clamp(1rem, 4vw, 2.5rem);
  --size-gap-lg: clamp(1.5rem, 6vw, 3rem);
  --size-gap-xl: clamp(2rem, 8vw, 3.5rem);
  --size-font-sm: clamp(1.0625rem, 2.75vw, 1.1875rem);
  --size-font-md-sm: clamp(1.25rem, 3.25vw, 1.375rem);
  --size-font-md: clamp(1.375rem, 3.75vw, 1.625rem);
  --size-font-lg: clamp(1.75rem, 4.8vw, 2rem);
  --size-font-xl: clamp(2.5rem, 7.2vw, 3rem);

  --color-blue-0: #e3eeff;
  --color-blue-1: #acf;
  --color-blue-2: #8bf;
  --color-blue-3: #5af;
  --color-blue-4: #29f;
  --color-blue-5: #27d;
  --color-blue-6: #25b;
  --color-blue-7: #238;
  --color-blue-8: #226;
  --color-blue-9: #113;

  --color-veg-lt: #ce9;
  --color-veg-dk: #131;
	--color-gray: #888;
  --color-white-tr: #fffa;
  --color-dk-tr: #0007;

  --color-bg-top: var(--color-blue-1);
  --color-bg-btm: var(--color-veg-lt);
  --color-bg-top-block: var(--color-blue-0);
  --color-bg-block: var(--color-white-tr);
  --color-text-base: var(--color-blue-9);
  --color-text-block-base: var(--color-blue-8);
  --color-text-link: var(--color-blue-6);
  --color-text-link-1: var(--color-blue-5);
  --color-text-link-2: var(--color-blue-4);
  --color-text-link-rev-1: var(--color-blue-7);
  --color-text-link-rev-2: var(--color-blue-9);
  --color-border-section: var(--color-blue-9);
  --color-border-kbd: var(--color-gray);
  --color-outline: var(--color-blue-7);
  --color-list-line: var(--color-blue-1);
}

:root[data-color-mode=dark] {
  color-scheme: dark;

  --color-bg-top: var(--color-blue-8);
  --color-bg-btm: var(--color-veg-dk);
  --color-bg-top-block: var(--color-blue-9);
  --color-bg-block: var(--color-dk-tr);
  --color-text-base: var(--color-blue-0);
  --color-text-block-base: var(--color-blue-0);
  --color-text-link: var(--color-blue-2);
  --color-text-link-1: var(--color-blue-4);
  --color-text-link-2: var(--color-blue-5);
  --color-text-link-rev-1: var(--color-blue-1);
  --color-text-link-rev-2: var(--color-blue-0);
  --color-border-section: var(--color-blue-0);
  --color-outline: var(--color-blue-4);
  --color-list-line: var(--color-blue-8);
}

@media (prefers-color-scheme: dark) {
  :root[data-color-mode=os] {
    --color-bg-top: var(--color-blue-8);
    --color-bg-btm: var(--color-veg-dk);
    --color-bg-top-block: var(--color-blue-9);
    --color-bg-block: var(--color-dk-tr);
    --color-text-base: var(--color-blue-0);
    --color-text-block-base: var(--color-blue-0);
    --color-text-link: var(--color-blue-2);
    --color-text-link-1: var(--color-blue-4);
    --color-text-link-2: var(--color-blue-5);
    --color-text-link-rev-1: var(--color-blue-1);
    --color-text-link-rev-2: var(--color-blue-0);
    --color-border-section: var(--color-blue-0);
    --color-outline: var(--color-blue-4);
    --color-list-line: var(--color-blue-8);
  }
}



* {
  box-sizing: border-box;
}

html {
  /*background: linear-gradient(to bottom, #8bf, #bd8) fixed;*/
  background: linear-gradient(to bottom, var(--color-bg-top), var(--color-bg-btm)) fixed;
  height: 100vh;
}

body {
  color: var(--color-text-base);
  font-family: 'Commissioner', sans-serif;
  line-height: 1.6;
  margin: 0 auto;
  max-width: 92rem;
  padding: var(--size-gap-xs);
}

h1, h2, h3, h4, h5, h6 {
  font-weight: 500;
  line-height: 1.2;
}

h2, h3, h4, h5, h6, p {
  margin-block: 0.75em;
}

h1 {
  font-size: var(--size-font-xl);
  margin-block-end: 0;
}

h2 {
  font-size: var(--size-font-lg);
}

main > :is(h1, h2) {
  border-block-start: solid 2px var(--color-border-section);
  padding-block-start: var(--size-pad-heading);
}
main > :is(h1, h2:first-child) {
  margin-block-start: var(--size-gap-xs);
}
main > * + h2 {
  margin-block-start: var(--size-gap-md);
}

h3 {
  font-size: var(--size-font-md);
}

h4 {
  font-size: var(--size-font-md-sm);
}

p, li, summary {
  font-size: var(--size-font-sm);
}

a, .color-mode-panel summary {
  border-radius: 1px; /* to make outlines rounded */
  outline-offset: 3px;
}

:is(a, .color-mode-panel summary):focus-visible {
  outline: solid 3px var(--color-outline);
}

b {
  font-weight: 500;
}

ol > li + li {
  margin-block-start: 0.625em;
}

:is(main, .toc, .site-footer) a {
  color: var(--color-text-link);
}
:is(main, .toc, .site-footer) a:is(:hover, :focus-visible) {
  color: var(--color-text-link-1);
}
:is(main, .toc, .site-footer) a:active {
  color: var(--color-text-link-2);
}



.site-header {
  display: grid;
  position: relative;
}

@media (max-width: 31rem) {
  .site-header {
    /* needed in order for color-mode-form to layer above the TOC: */
    z-index: 2;
  }
}
@media not all and (max-width: 31rem) {
  .site-header {
    z-index: 0;
  }
}

@media (max-width: 44rem) {
  .site-header {
    grid-template-areas: 'logo' 'tagline' 'menu';
    grid-template-columns: 100%;
    row-gap: 1rem;
  }
}
@media (max-width: 68rem) {
  @media not all and (max-width: 44rem) {
    .site-header {
      align-items: end;
      grid-template-areas: 'logo tagline' 'menu menu';
      grid-template-columns: 1fr max-content;
      row-gap: 1rem;
    }
    .site-tagline {
      text-align: end;
      transform: translateY(-0.75rem);
    }
  }
}
@media not all and (max-width: 68rem) { /* 59rem 56rem 55rem */
  .site-header {
    align-items: end;
    gap: 0 2rem; /* 0 1rem; 0.5rem 3rem; 1rem 4rem;*/
    grid-template-areas: 'logo tagline toc' 'logo menu menu';
    grid-template-columns: 1fr max-content;
  }
  .site-nav {
    transform: translateY(-0.375rem);
  }
}

.site-logo-heading {
  grid-area: logo;
  max-width: 100%;
  width: max-content;
}

.site-logo-link {
  display: block;
}

.site-logo {
  fill: var(--color-text-base);
  height: auto;
  max-width: 100%;
  width: 264px; /* = 3/8 of orig 704px // 270px; 346px; old orig 692px */
}
.site-logo-link:is(:hover, :focus-visible) .site-logo {
  fill: var(--color-text-link-rev-1);
}
.site-logo-link:active .site-logo {
  fill: var(--color-text-link);
}

.site-logo-heading, .site-header p {
  margin: 0;
}

.site-header nav a {
  color: var(--color-text-link);
  text-decoration: none;
}
.site-header nav a:hover {
  text-decoration: underline;
}
.site-header nav a:is(:hover, :focus-visible) {
  color: var(--color-text-link-rev-1);
}
.site-header nav a:active {
  color: var(--color-text-link-rev-2);
  text-decoration: underline;
}

.site-nav {
  grid-area: menu;
  position: sticky;
  top: 0;
}

.site-menu {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: 0 2em; /*1.5em;*/
  list-style: '';
  margin: 0;
  padding: 0;
}

.site-menu li {
  font-size: var(--size-font-md);
  font-weight: 500;
  padding: 0;
}

.site-tagline {
  font-weight: 500;
  grid-area: tagline;
  line-height: 1.2;
  max-width: 36ch; /*34.5ch; 38ch; 40ch;*/
}

.color-mode-panel {
  font-weight: normal;
  position: relative;
}

.color-mode-form {
  font-size: var(--size-font-sm);
  left: 0;
  padding: 0.5rem;
  position: absolute;
  top: 100%;
  width: max-content;
}

.color-mode-form label {
  display: block;
}

.color-mode-form input {
  transform: translateY(-0.0625em);
  margin-inline-end: 0.25em;
}



.toc {
  /* so that it doesn't cover up pointer events for color-mode-form at narrow viewport: */
  max-width: max-content;

  right: calc(var(--size-gap-md) + 3px);
  top: var(--size-gap-md);
}

@media (max-width: 31rem) {
  .toc {
    margin: 1.25em 3px -0.25em;
    position: sticky;
  }
  .toc > details {
    display: inline-block;
    margin: 0 auto;
  }
}
@media not all and (max-width: 31rem) {
  .toc {
    margin: 0 0 var(--size-gap-md) var(--size-gap-md);
    position: fixed;
  }
  .toc summary {
    text-align: end;
  }
}

@media (max-width: 68rem) {
  .toc > details {
    max-height: calc(100vh - 2 * var(--size-gap-md));
  }
}
@media not all and (max-width: 68rem) {
  .toc {
    top: 2.125rem;
  }
  .toc > details {
    max-height: calc(100vh - 4.25rem);
  }
}

.toc > details, .color-mode-form {
  background-color: var(--color-bg-top-block);
  border-radius: 0.5rem;
  border: solid 2px var(--color-text-link);
  overflow: auto;
}

.toc > details {
  overflow: auto;
  padding: 0.5rem 1rem;
  /* needed b/c otherwise email-link SVGs appear over the TOC: */
  z-index: 1;
}

.toc summary {
  padding: 0.5rem 1rem;
  margin: -0.5rem -1rem;
}

.toc summary:focus-visible {
  background-color: var(--color-outline);
  color: var(--color-bg-top-block);
  outline: none;
}

kbd {
	border: solid var(--color-border-kbd);
	border-radius: 3px;
	border-width: 1.5px 1.5px 3px;
	font-family: inherit;
	min-width: 1.5em;
	padding: 0 0.375em 0.125em;
	text-align: center;
}

.toc summary kbd {
  margin-inline-start: 0.25em;
}

.toc ul {
  list-style: '';
  padding-inline-start: 0;
}

.toc ul ul {
  border-inline-start: solid 2px var(--color-list-line);
  padding-inline-start: 0.75em;
  margin-inline-start: 0.375em;
}

.toc li {
  line-height: 1.25;
  margin: 0.375em;
}

.toc a {
  text-decoration: none;
}
.toc a:is(:hover, :active) {
  text-decoration: underline;
}



.grid {
  display: grid;
  gap: var(--size-gap-sm);
  grid-template-columns: repeat(auto-fill, minmax(min(30rem, 100%), 1fr));
}

ul.grid {
  list-style: '';
  padding: 0;
}

.blocks > *, .block {
  background-color: var(--color-bg-block);
  /*border: solid 0.25rem #fff;*/
  border-radius: 0.25rem;
  color: var(--color-text-block-base);
  padding: var(--size-pad-block);
}

.block {
  margin-block: var(--size-gap-sm);
}

:is(.blocks > *, .block) > :first-child {
  margin-block-start: 0;
}

.subgrid {
  display: grid;
  gap: var(--size-gap-md) var(--size-gap-xl);
  grid-template-columns: repeat(auto-fill, minmax(min(22rem, 100%), 1fr));
  margin-block-start: var(--size-gap-lg);
}

.subgrid.wide {
  grid-template-columns: repeat(auto-fill, minmax(min(28.5rem, 100%), 1fr));
}

.subgrid > * > :first-child {
  margin-block-start: 0;
}



.site-footer {
  margin-block-start: var(--size-gap-lg);
}



.services_intro {
  max-width: 59em;
}

.why-purslane {
  display: grid;
  gap: var(--size-gap-md) var(--size-gap-sm);
}

@media (max-width: 45rem) {
  .why-purslane {
    grid-template-columns: 1fr;
    grid-template-areas: 'h' 'img0' 'img1' 'text';
  }
}
@media not all and (max-width: 45rem) {
  .why-purslane {
    grid-template-columns: repeat(2, 1fr);
    grid-template-areas: 'h h' 'img0 img1' 'text text';
  }
}

.why_h {
  grid-area: h;
  margin: 0;
}
.why_i0 {
  grid-area: img0;
}
.why_i1 {
  grid-area: img1;
}
.why_text {
  grid-area: text;
  max-width: 60em;
}

.why_text > :first-child {
  margin-block-start: 0.2ch;
}

.why_img {
  max-width: 100%;
  height: auto;
}



.portfolio {
  margin-block-start: var(--size-gap-sm);
}

.portfolio_intro {
  max-width: 57em;
}

.portfolio h2 a {
  text-decoration: none;
}

.portfolio li img {
  height: auto;
  max-width: 100%;
}

.img-link {
  border: solid 3px var(--color-text-link);
  border-radius: 3px;
  display: block;
}
.img-link:is(:hover, :focus-visible) {
  border-color: var(--color-text-link-1);
}
.img-link:active {
  border-color: var(--color-text-link-2);
}

.img-link img {
  display: block;
}
