@font-face {
  font-family: "IBM Plex Mono";
  src: url("/_next/static/media/d3ebbfd689654d3a-s.p.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
:root {
  color-scheme: light;
  --paper: #f6f4ef;
  --ink: #191a18;
  --muted: #66665f;
  --rule: #dad8d0;
  --rose: #e8b6c3;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: 36px;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
}
.folio * {
  box-sizing: border-box;
}
.folio a {
  color: inherit;
  text-decoration: none;
}
.folio a:focus-visible,
.folio button:focus-visible,
.folio summary:focus-visible {
  outline: 2px solid #191a18;
  outline-offset: 5px;
}
.folio-hero,
.folio-body {
  width: min(1184px, calc(100% - 112px));
  margin: 0 auto;
}
.folio-hero {
  position: relative;
}
.construction-controls {
  height: 43px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.construction-controls button {
  display: flex;
  align-items: center;
  gap: 17px;
  padding: 8px 0 8px 12px;
  font:
    11px "IBM Plex Mono",
    monospace;
  border: 0;
  color: var(--muted);
  background: transparent;
  cursor: pointer;
}
.construction-controls button:hover {
  color: var(--ink);
}
.construction-controls button span {
  font-size: 16px;
}
.construction-canvas {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
  max-width: 100%;
  color: var(--ink);
  user-select: text;
}
.hero-mobile {
  display: none;
}
.semantic-hero {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.construction-pending .construction-canvas {
  visibility: hidden;
}
.construction-pending .folio-body,
[data-construction-running="true"] .folio-body {
  clip-path: inset(0 100% 0 0);
}
.folio-body {
  padding-bottom: 20px;
}
.folio-section {
  position: relative;
  margin: 96px 0 0;
  --build: 1;
  scroll-margin-top: 24px;
}
.selected-work {
  margin-top: 0;
}
.section-build-rule {
  position: relative;
  height: 1px;
  background: var(--rule);
}
.section-build-rule i {
  display: block;
  height: 1px;
  width: calc(var(--build) * 100%);
  background: var(--ink);
}
.section-build-rule svg {
  position: absolute;
  top: 0;
  left: calc(var(--build) * 100%);
  width: 20px;
  height: 26px;
  fill: var(--rose);
  stroke: var(--ink);
  stroke-width: 1;
  display: none;
}
.folio-section[data-building="true"] .section-build-rule svg {
  display: block;
}
.section-heading {
  display: flex;
  gap: 38px;
  align-items: baseline;
  margin: 28px 0 54px;
}
.section-heading > span {
  font:
    12px "IBM Plex Mono",
    monospace;
  color: var(--muted);
}
.section-heading h2 {
  margin: 0;
  font-size: 35px;
  font-weight: 500;
  line-height: 1.16;
  letter-spacing: -1.5px;
}
.section-content {
  clip-path: inset(0 0 0 0);
}
.construction-enabled [data-construction-section] {
  --build: 0;
}
.construction-enabled
  [data-construction-section]:not([data-built="true"])
  .section-content {
  clip-path: inset(0 calc((1 - var(--build)) * 100%) 0 0);
}
.selected-work > .section-heading,
.selected-work > .section-build-rule {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}
.folio-eyebrow {
  display: block;
  font:
    11px/1.55 "IBM Plex Mono",
    monospace;
  color: var(--muted);
  letter-spacing: 0.03em;
}
.folio p {
  font-size: 16px;
  line-height: 1.68;
  color: var(--muted);
  margin: 18px 0 0;
  max-width: 66ch;
}
.folio h3 {
  color: var(--ink);
  font-weight: 500;
  letter-spacing: -1.5px;
  line-height: 1.13;
}
.work-feature {
  display: grid;
  grid-template-columns: 4fr 6fr;
  gap: 70px;
  padding: 32px 0 82px;
  align-items: start;
}
.work-copy h3 {
  font-size: 40px;
  margin: 18px 0 26px;
}
.work-feature figure {
  margin: 0;
  padding: 0;
}
.work-feature img {
  display: block;
  width: 100%;
  aspect-ratio: 1.65;
  object-fit: contain;
  background: #eae7e0;
  border: 1px solid var(--rule);
  padding: 12px;
}
.work-feature figcaption {
  margin-top: 13px;
  font:
    10px/1.6 "IBM Plex Mono",
    monospace;
  color: var(--muted);
  max-width: 60ch;
}
.folio details {
  margin-top: 18px;
}
.folio summary {
  display: inline-flex;
  gap: 16px;
  align-items: center;
  cursor: pointer;
  list-style: none;
  font-size: 12px;
  color: var(--ink);
  border-bottom: 1px solid var(--rule);
  padding-bottom: 6px;
}
.folio summary::-webkit-details-marker {
  display: none;
}
.folio details[open] summary span {
  transform: rotate(45deg);
}
.folio details p {
  font-size: 15px;
}
.evidence-tags {
  padding: 0;
  list-style: none;
  display: flex;
  gap: 8px 16px;
  flex-wrap: wrap;
  margin: 27px 0 0;
  color: var(--muted);
  font:
    10px/1.6 "IBM Plex Mono",
    monospace;
}
.evidence-tags li:before {
  content: "/";
  margin-right: 9px;
  color: #9b9992;
}
.folio-link {
  display: inline-flex;
  gap: 32px;
  align-items: center;
  font-size: 13px;
  margin-top: 31px;
  border-bottom: 1px solid var(--ink);
  padding-bottom: 9px;
}
.folio-link span {
  font-size: 18px;
}
.work-type {
  padding: 66px 0 74px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  border-top: 1px solid var(--rule);
}
.work-type h3 {
  font-size: 80px;
  letter-spacing: -5px;
  margin: 25px 0 0;
}
.work-type h3 span {
  color: #af7586;
}
.work-type > div:nth-child(2) > p {
  margin-top: 0;
  font-size: 18px;
}
.evidence-list {
  list-style: none;
  padding: 0;
  margin: 32px 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 17px 26px;
  font-size: 12px;
  color: var(--muted);
}
.evidence-list span {
  margin-right: 14px;
  color: #a47985;
}
.work-outcome {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 72px;
  padding: 54px 56px 58px;
  background: #eee8e5;
}
.work-outcome h3 {
  font-size: 64px;
  letter-spacing: -3px;
  margin: 23px 0;
}
.outcome-label {
  font-size: 13px;
  display: inline-block;
  border-bottom: 8px solid var(--rose);
  padding-bottom: 2px;
  line-height: 0.2;
}
.work-outcome > div:last-child > p {
  margin-top: 0;
}
.profile-grid {
  display: grid;
  grid-template-columns: 4fr 6fr;
  gap: 96px;
}
.profile-thesis {
  font-size: 30px !important;
  line-height: 1.4 !important;
  letter-spacing: -0.8px;
  color: var(--ink) !important;
  margin: 0 !important;
}
.profile-detail > p {
  margin: 0;
}
.profile-signals {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px;
  margin: 36px 0 0;
}
.profile-signals li {
  border-top: 1px solid var(--rule);
  padding-top: 23px;
}
.profile-signals strong {
  font-size: 14px;
  font-weight: 500;
}
.profile-signals p {
  font-size: 13px;
  line-height: 1.7;
  margin-top: 12px;
}
.experience-ledger article {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 48px;
  border-bottom: 1px solid var(--rule);
  padding: 0 0 37px;
  margin-bottom: 39px;
}
.experience-date {
  font:
    12px/1.6 "IBM Plex Mono",
    monospace;
  color: var(--muted);
  padding-top: 6px;
}
.experience-ledger h3 {
  font-size: 25px;
  line-height: 1.28;
  letter-spacing: -0.8px;
  margin: 0;
  max-width: 760px;
}
.experience-ledger p {
  max-width: 760px;
}
.capabilities-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px 100px;
}
.capabilities-grid h3 {
  font-size: 26px;
  letter-spacing: -0.6px;
  margin: 17px 0 0;
}
.capabilities-grid p {
  font-size: 15px;
}
.skill-tools {
  font-family: "IBM Plex Mono", monospace;
  font-size: 10px !important;
  line-height: 1.8 !important;
}
.working-set {
  margin-top: 46px;
  border-top: 1px solid var(--rule);
  padding-top: 25px;
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 48px;
}
.working-set > span {
  font:
    11px "IBM Plex Mono",
    monospace;
  padding-top: 6px;
}
.working-set p {
  font-size: 14px;
  margin: 0;
  line-height: 2;
  max-width: none;
}
.additional-work {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 45px 86px;
}
.additional-work article {
  border-bottom: 1px solid var(--rule);
  padding-bottom: 36px;
}
.additional-work h3 {
  font-size: 27px;
  margin: 15px 0 0;
  letter-spacing: -0.8px;
}
.additional-work p {
  font-size: 14px;
}
.contact-grid {
  display: grid;
  grid-template-columns: 4fr 6fr;
  gap: 96px;
}
.contact-grid > p {
  font-size: 28px;
  line-height: 1.4;
  letter-spacing: -0.7px;
  color: var(--ink);
  margin: 0;
}
.contact-email {
  font-size: 30px;
  letter-spacing: -0.6px;
  display: flex;
  gap: 25px;
  align-items: baseline;
  border-bottom: 1px solid var(--ink);
  padding: 20px 0;
}
.contact-email span {
  margin-left: auto;
}
.contact-links {
  display: flex;
  gap: 23px;
  flex-wrap: wrap;
  margin-top: 25px;
  font-size: 12px;
}
.folio-footer {
  margin-top: 90px;
  padding: 27px 0;
  border-top: 1px solid var(--rule);
  display: flex;
  gap: 26px;
  align-items: center;
  font:
    10px/1.5 "IBM Plex Mono",
    monospace;
  color: var(--muted);
}
.folio-footer > span:nth-child(2) {
  margin-left: auto;
}
.folio-footer > a {
  white-space: nowrap;
}
@media (max-width: 900px) {
  .folio-hero,
  .folio-body {
    width: calc(100% - 64px);
  }
  .work-feature {
    gap: 38px;
  }
  .profile-grid,
  .contact-grid {
    gap: 48px;
  }
  .work-type {
    gap: 48px;
  }
  .work-outcome {
    gap: 40px;
    padding: 40px;
  }
  .experience-ledger article,
  .working-set {
    grid-template-columns: 150px 1fr;
    gap: 32px;
  }
  .contact-email {
    font-size: 25px;
  }
}
@media (max-width: 700px) {
  .folio-hero,
  .folio-body {
    width: calc(100% - 40px);
  }
  .hero-desktop {
    display: none;
  }
  .hero-mobile {
    display: block;
  }
  .construction-controls {
    height: 34px;
  }
  .construction-controls button {
    font-size: 9px;
    gap: 13px;
  }
  .folio-section {
    margin-top: 64px;
  }
  .selected-work {
    margin-top: 0;
  }
  .section-heading {
    gap: 18px;
    margin: 24px 0 32px;
  }
  .section-heading h2 {
    font-size: 28px;
    letter-spacing: -1px;
  }
  .section-heading > span {
    font-size: 10px;
  }
  .work-feature {
    display: flex;
    flex-direction: column;
    gap: 32px;
    padding: 23px 0 48px;
  }
  .work-copy h3 {
    font-size: 34px;
    letter-spacing: -1.4px;
    margin: 15px 0 0;
  }
  .folio p {
    font-size: 16px;
    line-height: 1.7;
  }
  .work-feature figure {
    width: 100%;
  }
  .work-feature figcaption {
    font-size: 9px;
  }
  .work-type {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 41px 0 45px;
  }
  .work-type h3 {
    font-size: 62px;
    letter-spacing: -3px;
    margin: 14px 0 0;
  }
  .work-type > div:nth-child(2) > p {
    font-size: 16px;
  }
  .work-outcome {
    grid-template-columns: 1fr;
    gap: 29px;
    margin-inline: -20px;
    padding: 35px 20px 40px;
  }
  .work-outcome h3 {
    font-size: 55px;
    margin: 17px 0 26px;
  }
  .profile-grid,
  .contact-grid {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .profile-thesis {
    font-size: 27px !important;
    line-height: 1.4 !important;
  }
  .profile-signals {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .profile-signals p {
    font-size: 14px;
  }
  .experience-ledger article {
    grid-template-columns: 1fr;
    gap: 13px;
    margin-bottom: 28px;
    padding-bottom: 29px;
  }
  .experience-ledger h3 {
    font-size: 23px;
  }
  .experience-date {
    font-size: 11px;
  }
  .capabilities-grid {
    grid-template-columns: 1fr;
    gap: 38px;
  }
  .capabilities-grid p {
    font-size: 15px;
  }
  .working-set {
    grid-template-columns: 1fr;
    gap: 17px;
    margin-top: 37px;
  }
  .working-set p {
    font-size: 13px;
  }
  .additional-work {
    grid-template-columns: 1fr;
    gap: 30px;
  }
  .additional-work p {
    font-size: 15px;
  }
  .contact-grid > p {
    font-size: 26px;
  }
  .contact-email {
    font-size: 23px;
    gap: 10px;
  }
  .contact-links {
    gap: 22px;
    font-size: 13px;
  }
  .folio-footer {
    flex-wrap: wrap;
    gap: 13px;
    margin-top: 60px;
    font-size: 9px;
  }
  .folio-footer > span:nth-child(2) {
    margin: 0;
    order: 3;
    width: 100%;
  }
  .folio-footer > a {
    margin-left: auto;
  }
  .folio summary {
    min-height: 44px;
  }
  .folio-link {
    min-height: 44px;
  }
  .evidence-list {
    gap: 14px;
    font-size: 11px;
  }
  .evidence-tags {
    font-size: 10px;
    gap: 8px 13px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  .construction-controls {
    display: none;
  }
  .construction-canvas,
  .folio-body {
    visibility: visible !important;
    clip-path: none !important;
  }
  .section-content {
    clip-path: none !important;
  }
  .section-build-rule svg {
    display: none !important;
  }
}
@media print {
  html {
    scroll-behavior: auto;
  }
  .construction-controls,
  .construction-canvas,
  .section-build-rule svg,
  .folio-footer {
    display: none !important;
  }
  .semantic-hero {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip-path: none;
    white-space: normal;
    margin: 35px 0;
  }
  .semantic-hero h1 {
    font-size: 42px;
    margin: 10px 0;
  }
  .semantic-hero ul {
    padding-left: 20px;
  }
  .semantic-hero a {
    margin-right: 20px;
  }
  .folio-hero,
  .folio-body {
    width: 100%;
  }
  .folio-body,
  .section-content {
    clip-path: none !important;
    visibility: visible !important;
  }
  .folio-section {
    margin-top: 42px;
  }
  .selected-work > .section-heading {
    position: static;
    width: auto;
    height: auto;
    clip-path: none;
    overflow: visible;
  }
  .work-feature {
    grid-template-columns: 1fr 1fr;
  }
  .section-heading {
    margin-bottom: 24px;
  }
  .work-outcome {
    background: none;
    padding: 25px 0;
    border-block: 1px solid var(--rule);
  }
  .folio details > p {
    display: block;
  }
  article {
    break-inside: avoid;
  }
}
.semantic-hero:focus-within {
  position: absolute;
  inset: 80px 0 auto;
  z-index: 60;
  width: auto;
  height: auto;
  clip-path: none;
  overflow: visible;
  white-space: normal;
  background: var(--paper);
  padding: 32px;
  border: 1px solid var(--ink);
}
.semantic-hero:focus-within h1 {
  font-size: 48px;
  margin: 10px 0;
}
.semantic-hero:focus-within a {
  display: inline-flex;
  padding: 14px 0;
  margin-right: 24px;
}
.semantic-hero:focus-within p {
  max-width: 65ch;
}
.construction-enabled
  [data-construction-section]:not([data-built="true"])
  .section-heading {
  clip-path: inset(
    0 calc((1 - clamp(0, (var(--build) - 0.18) * 3, 1)) * 100%) 0 0
  );
}
.construction-enabled
  [data-construction-section]:not([data-built="true"])
  .section-content {
  clip-path: inset(
    0 calc((1 - clamp(0, (var(--build) - 0.38) * 1.65, 1)) * 100%) 0 0
  );
}
@media (prefers-reduced-motion: reduce), print {
  .section-heading,
  .section-content {
    clip-path: none !important;
  }
}
.hero-semantic-nav {
  position: absolute;
  top: 57px;
  left: 0;
  right: 0;
  height: 44px;
  z-index: 4;
}
.hero-semantic-nav a {
  position: absolute;
  display: block;
  height: 44px;
  padding: 10px 8px;
  min-width: 62px;
}
.hero-semantic-nav a span,
.hero-contact-links a span {
  opacity: 0;
}
.hero-semantic-nav .nav-work {
  right: 348px;
}
.hero-semantic-nav .nav-experience {
  right: 224px;
  width: 106px;
}
.hero-semantic-nav .nav-contact {
  right: 125px;
  width: 83px;
}
.hero-semantic-nav .nav-pdf {
  right: 0;
  width: 88px;
}
.hero-contact-links {
  position: absolute;
  left: 0;
  display: flex;
  gap: 17px;
  height: 46px;
  z-index: 4;
}
.hero-contact-links a {
  display: flex;
  align-items: center;
  padding: 0 20px;
  min-width: 161px;
  min-height: 44px;
}
.hero-contact-links a + a {
  min-width: 198px;
}
.folio-hero[data-compact="true"] .hero-desktop {
  display: none;
}
.folio-hero[data-compact="true"] .hero-mobile {
  display: block;
  max-width: 512px;
  margin: 0 auto;
}
.folio-hero[data-compact="false"] .hero-desktop {
  display: block;
}
.folio-hero[data-compact="false"] .hero-mobile {
  display: none;
}
.folio-hero[data-compact="true"] .hero-semantic-nav {
  max-width: 512px;
  margin: 0 auto;
  top: 48px;
}
.folio-hero[data-compact="true"] .nav-context {
  display: none;
}
.folio-hero[data-compact="true"] .hero-contact-links {
  left: 50%;
  transform: translateX(-50%);
  width: min(100%, 512px);
  gap: 1px;
}
.folio-hero[data-compact="true"] .hero-contact-links a {
  min-width: 145px;
  padding-inline: 18px;
}
.folio-hero[data-compact="true"] .hero-contact-links a + a {
  min-width: 197px;
}
.construction-pending .hero-semantic-nav,
.construction-pending .hero-contact-links {
  pointer-events: none;
}
@media (max-width: 900px) {
  .hero-desktop {
    display: none;
  }
  .hero-mobile {
    display: block;
    max-width: 512px;
    margin: 0 auto;
  }
  .hero-semantic-nav {
    top: 48px;
  }
  .nav-context {
    display: none;
  }
}
@media print {
  .hero-semantic-nav,
  .hero-contact-links {
    display: none;
  }
}
.section-build-rule i {
  width: calc(var(--rule-build, 1) * 100%);
}
.section-cursor {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 8;
  width: 21px;
  height: 26px;
  pointer-events: none;
}
.section-cursor svg {
  width: 100%;
  height: 100%;
  fill: var(--rose);
  stroke: var(--ink);
  stroke-width: 1.2;
}
.section-cursor[hidden],
.section-selection[hidden] {
  display: none;
}
.section-selection {
  position: absolute;
  border: 1px dashed var(--rose);
  z-index: 7;
  pointer-events: none;
}
.construction-enabled
  [data-construction-section]:not([data-built="true"])
  .section-heading {
  clip-path: inset(0 calc((1 - var(--heading-build, 0)) * 100%) 0 0);
}
.construction-enabled [data-construction-section] .section-content {
  clip-path: none !important;
}
.construction-enabled [data-build-unit]:not([data-unit-built="true"]) {
  clip-path: none !important;
  opacity: var(--unit-opacity, 0);
  transform: translate3d(var(--unit-x, 0px), var(--unit-y, 12px), 0);
  transform-origin: top left;
}
[data-unit-building="true"] {
  will-change: transform, opacity;
}
[data-unit-built="true"],
[data-build-unit]:focus-within {
  opacity: 1 !important;
  transform: none !important;
  clip-path: none !important;
}
@media (prefers-reduced-motion: reduce), print {
  [data-build-unit] {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }
}
@media (prefers-reduced-motion: reduce), print {
  .section-cursor,
  .section-selection {
    display: none !important;
  }
  [data-build-unit],
  .section-heading {
    clip-path: none !important;
  }
}
@media (max-width: 379px) {
  .folio-hero[data-compact="true"] .hero-contact-links {
    display: flex;
    flex-direction: column;
    gap: 16px;
    height: auto;
  }
  .folio-hero[data-compact="true"] .hero-contact-links a {
    width: 100%;
    height: 46px;
    flex-shrink: 0;
  }
  .folio-hero[data-compact="true"] .hero-contact-links a + a {
    width: 100%;
    height: 44px;
  }
}
.folio-hero[data-compact="false"] .hero-semantic-nav .nav-context {
  display: block;
}
/* Five composition systems share content and a single construction controller. */
@font-face {
  font-family: "Resume Serif";
  src: url("/fonts/resume-serif.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
.folio {
  background: var(--paper);
  color: var(--ink);
  min-height: 100vh;
  padding-top: 1px;
}
.folio a:focus-visible,
.folio button:focus-visible,
.folio summary:focus-visible {
  outline-color: var(--ink);
}
.theme-picker {
  width: min(1184px, calc(100% - 112px));
  margin: 24px auto 20px;
  display: flex;
  align-items: center;
  gap: 32px;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 20px;
}
.theme-picker-label {
  font:
    11px/1.5 "IBM Plex Mono",
    monospace;
  max-width: 85px;
  color: var(--muted);
}
.theme-options {
  display: flex;
  gap: 8px;
  flex: 1;
  flex-wrap: wrap;
}
.theme-options button {
  border: 1px solid transparent;
  background: none;
  color: var(--muted);
  font:
    13px "Resume Sans",
    sans-serif;
  min-height: 44px;
  padding: 10px 15px;
  cursor: pointer;
  border-radius: 2px;
}
.theme-options button[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
}
.theme-options button:hover {
  border-color: var(--muted);
}
.theme-number {
  font:
    10px "IBM Plex Mono",
    monospace;
  margin-right: 10px;
  opacity: 0.65;
}
.construction-controls {
  justify-content: space-between;
}
.construction-controls > span {
  font:
    10px "IBM Plex Mono",
    monospace;
  color: var(--muted);
  letter-spacing: 0.03em;
}
.folio-hero[data-compact="true"] .hero-semantic-nav {
  margin: 0;
  max-width: none;
}
.folio-hero[data-compact="true"] .hero-contact-links {
  margin: 0;
  max-width: none;
}
.hero-contact-links a {
  flex-shrink: 0;
  height: 46px;
  padding: 0 18px;
}
.selected-work > .section-heading,
.selected-work > .section-build-rule {
  position: static;
  width: auto;
  height: auto;
  overflow: visible;
  clip-path: none;
}
.first-section {
  margin-top: 0;
}
.first-section > .section-heading,
.first-section > .section-build-rule {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}
.case-study {
  display: grid;
  position: relative;
  border-bottom: 1px solid var(--rule);
  padding: 45px 0 52px;
  gap: 28px 50px;
  grid-template-columns: 38px 1fr 1.3fr;
}
.case-index {
  font:
    11px "IBM Plex Mono",
    monospace;
  color: var(--muted);
  padding-top: 4px;
}
.case-study h3 {
  font-size: 34px;
  margin: 15px 0 0;
  letter-spacing: -1.2px;
  overflow-wrap: anywhere;
}
.case-study .case-detail > p {
  margin-top: 0;
}
.case-study .case-kind {
  display: block;
  font:
    11px "IBM Plex Mono",
    monospace;
  color: var(--muted);
  margin-top: 24px;
}
.case-study figure {
  margin: 0;
  grid-column: 2/-1;
}
.case-study img {
  width: 100%;
  display: block;
  aspect-ratio: 1.8;
  object-fit: contain;
  padding: 18px;
  background: var(--wash);
  border: 1px solid var(--rule);
}
.case-study figcaption {
  font:
    11px/1.7 "IBM Plex Mono",
    monospace;
  color: var(--muted);
  margin-top: 14px;
}
.case-product {
  grid-template-columns: 1fr 1.1fr;
  gap: 34px 80px;
  padding: 38px 0 65px;
}
.case-product .case-index {
  display: none;
}
.case-product h3 {
  font-size: 52px;
  letter-spacing: -2px;
}
.case-product.case-with-image {
  grid-template-columns: 4fr 6fr;
  gap: 28px 60px;
}
.case-product.case-with-image header {
  grid-column: 1;
  grid-row: 1;
}
.case-product.case-with-image .case-detail {
  grid-column: 1;
  grid-row: 2;
}
.case-product.case-with-image figure {
  grid-column: 2;
  grid-row: 1/3;
}
.case-product:not(.case-with-image):last-child {
  background: var(--wash);
  padding: 48px;
  margin-top: 34px;
}
.case-platform {
  grid-template-columns: 110px 1fr 1.35fr;
  padding: 48px 0 56px;
  border-left: 1px solid var(--rule);
}
.case-platform .case-index {
  padding-left: 22px;
  font-size: 28px;
  color: var(--rose);
}
.case-platform h3 {
  font-size: 39px;
  letter-spacing: -1.5px;
}
.theme-platform .profile-grid {
  grid-template-columns: 1fr 1.8fr;
}
.theme-platform .capabilities-grid {
  grid-template-columns: repeat(2, 1fr);
  gap: 0;
}
.theme-platform .capabilities-grid article {
  border: 1px solid var(--rule);
  margin: -1px 0 0 -1px;
  padding: 30px;
}
.theme-platform .experience-ledger article {
  grid-template-columns: 200px 1fr;
  border-left: 1px solid var(--rule);
  padding-left: 24px;
}
.theme-platform .work-type h3 span {
  color: var(--rose);
}
.theme-security h2,
.theme-security h3,
.theme-security .profile-thesis,
.theme-security .contact-grid > p {
  font-family: "Resume Serif", "Liberation Serif", Georgia, serif;
  font-weight: 400;
  letter-spacing: -0.4px;
}
.theme-security .folio-body {
  max-width: 1080px;
}
.theme-security .experience-ledger article {
  grid-template-columns: 155px 1fr;
  gap: 52px;
  padding: 28px 0 38px;
  margin-bottom: 0;
}
.theme-security .experience-ledger h3 {
  font-size: 30px;
}
.theme-security .section-heading h2 {
  font-size: 40px;
}
.case-security {
  grid-template-columns: 50px 1fr 1.2fr;
  border-top: 1px solid var(--rule);
  border-bottom: 0;
}
.case-security h3 {
  font-size: 35px;
}
.theme-security .additional-work {
  grid-template-columns: 1fr 1fr;
  column-gap: 80px;
}
.theme-security .additional-work h3 {
  font-size: 30px;
}
.case-field {
  grid-template-columns: 64px 1fr 1.3fr;
  background: var(--wash);
  margin-bottom: 22px;
  padding: 36px 34px;
  border: 0;
}
.case-field .case-index {
  font-size: 26px;
  color: var(--ink);
}
.case-field h3 {
  font-size: 30px;
  letter-spacing: -0.9px;
}
.theme-field .experience-ledger article {
  grid-template-columns: 155px 1fr;
}
.theme-field .capabilities-grid {
  grid-template-columns: 1fr 1fr;
  gap: 36px;
}
.theme-field .capabilities-grid article {
  border-top: 3px solid var(--rule);
  padding-top: 22px;
}
.theme-field .profile-grid {
  grid-template-columns: 1fr 1.6fr;
}
.theme-enterprise .folio-body {
  display: grid;
  grid-template-columns: 170px 1fr;
  gap: 40px;
}
.report-contents {
  position: sticky;
  top: 36px;
  align-self: start;
  margin-top: 20px;
  display: grid;
  gap: 12px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--muted);
}
.report-contents a {
  display: flex;
  gap: 14px;
  min-height: 38px;
  padding: 6px 0;
}
.report-contents span {
  font:
    10px "IBM Plex Mono",
    monospace;
  padding-top: 4px;
}
.theme-enterprise .folio-sections {
  min-width: 0;
}
.theme-enterprise .folio-footer {
  grid-column: 1/-1;
}
.theme-enterprise .profile-grid {
  grid-template-columns: 1fr;
  gap: 30px;
}
.theme-enterprise .profile-thesis {
  font-size: 31px !important;
  max-width: 800px;
}
.theme-enterprise .profile-signals {
  grid-template-columns: 1fr 1fr;
  gap: 36px;
}
.case-enterprise {
  grid-template-columns: 30px 0.8fr 1.2fr;
  gap: 26px;
  padding: 32px 0 38px;
}
.case-enterprise h3 {
  font-size: 26px;
  letter-spacing: -0.7px;
}
.theme-enterprise .experience-ledger article {
  grid-template-columns: 125px 1fr;
  gap: 28px;
}
.theme-enterprise .additional-work {
  grid-template-columns: 1fr;
  gap: 22px;
}
.theme-enterprise .additional-work article {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 10px 30px;
}
.theme-enterprise .additional-work h3 {
  grid-column: 1;
  grid-row: 2;
}
.theme-enterprise .additional-work p,
.theme-enterprise .additional-work details,
.theme-enterprise .additional-work .folio-link {
  grid-column: 2;
  margin-top: 0;
}
.theme-enterprise .additional-work > .folio-eyebrow {
  grid-column: 1;
}
.theme-enterprise .contact-grid {
  grid-template-columns: 1fr;
  gap: 26px;
}
@media (max-width: 1000px) {
  .case-platform {
    grid-template-columns: 56px 1fr 1.1fr;
    gap: 25px;
  }
  .theme-enterprise .folio-body {
    display: block;
  }
  .report-contents {
    position: static;
    display: flex;
    flex-wrap: wrap;
    gap: 14px 25px;
    margin: 0 0 32px;
  }
  .theme-enterprise .first-section > .section-heading {
    position: static;
    width: auto;
    height: auto;
    clip-path: none;
  }
  .theme-enterprise .case-study {
    gap: 24px;
  }
}
@media (max-width: 900px) {
  .theme-picker {
    width: calc(100% - 64px);
    gap: 18px;
  }
  .theme-picker-label {
    display: none;
  }
  .theme-options button {
    padding: 8px 11px;
  }
  .case-product h3 {
    font-size: 42px;
  }
  .case-product.case-with-image {
    gap: 26px 34px;
  }
}
@media (max-width: 700px) {
  .theme-picker {
    width: calc(100% - 40px);
    margin-top: 16px;
    margin-bottom: 12px;
    padding-bottom: 14px;
  }
  .theme-options {
    gap: 5px;
  }
  .theme-options button {
    font-size: 12px;
    padding: 8px 10px;
    min-height: 44px;
  }
  .theme-number {
    display: none;
  }
  .construction-controls {
    height: 43px;
  }
  .construction-controls button {
    font-size: 10px;
  }
  .construction-controls > span {
    font-size: 9px;
  }
  .case-study,
  .case-product.case-with-image,
  .case-platform,
  .case-security,
  .case-field,
  .case-enterprise {
    display: block;
    padding: 28px 0 38px;
  }
  .case-study header {
    margin-top: 15px;
  }
  .case-study .case-detail {
    margin-top: 24px;
  }
  .case-study h3,
  .case-product h3 {
    font-size: 33px;
    letter-spacing: -1px;
  }
  .case-study figure {
    margin-top: 30px;
  }
  .case-study figcaption {
    font-size: 10px;
  }
  .case-study .case-index {
    padding: 0;
    font-size: 12px;
  }
  .case-product:not(.case-with-image):last-child {
    padding: 28px 22px;
    margin-inline: -20px;
  }
  .case-platform {
    border-left: 0;
  }
  .case-field {
    padding: 28px 22px;
    margin-inline: -20px;
  }
  .case-field .case-index {
    font-size: 20px;
  }
  .theme-platform .capabilities-grid,
  .theme-field .capabilities-grid,
  .theme-security .additional-work {
    grid-template-columns: 1fr;
  }
  .theme-platform .profile-grid,
  .theme-field .profile-grid,
  .theme-platform .experience-ledger article,
  .theme-security .experience-ledger article,
  .theme-field .experience-ledger article,
  .theme-enterprise .experience-ledger article {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .theme-platform .experience-ledger article {
    padding-left: 0;
    border-left: 0;
  }
  .theme-security .experience-ledger h3 {
    font-size: 28px;
  }
  .theme-security .section-heading h2 {
    font-size: 33px;
  }
  .theme-enterprise .profile-signals {
    grid-template-columns: 1fr;
  }
  .theme-enterprise .additional-work article {
    display: block;
  }
  .theme-enterprise .additional-work p {
    margin-top: 18px;
  }
  .theme-enterprise .additional-work .folio-link {
    margin-top: 24px;
  }
  .report-contents {
    display: none;
  }
  .theme-enterprise .first-section > .section-heading {
    position: absolute;
    width: 1px;
    height: 1px;
    clip-path: inset(50%);
  }
  .contact-email {
    font-size: clamp(18px, 5.7vw, 27px);
  }
}
@media print {
  .theme-picker,
  .report-contents {
    display: none !important;
  }
  .folio {
    --paper: #fff !important;
    --ink: #111 !important;
    --muted: #444 !important;
    --rule: #aaa !important;
    color: #111;
    background: #fff;
  }
  .theme-enterprise .folio-body {
    display: block;
  }
  .first-section > .section-heading {
    position: static;
    width: auto;
    height: auto;
    clip-path: none;
  }
  .case-study {
    break-inside: avoid;
  }
  .case-study details > p {
    display: block;
  }
}

@font-face {
  font-family: Resume Sans;
  src: url(/fonts/resume-sans-400.ttf) format("truetype");
  font-weight: 300 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: Resume Sans;
  src: url(/fonts/resume-sans-600.ttf) format("truetype");
  font-weight: 550 700;
  font-style: normal;
  font-display: swap;
}

@media (prefers-reduced-motion: reduce) {
  .folio-hero .construction-controls {
    display: none;
  }
}

.hero-rail {
  position: absolute;
  left: 0;
  display: grid;
  z-index: 4;
}
.hero-rail a {
  height: 42px;
  display: flex;
  align-items: center;
  font:
    11px "IBM Plex Mono",
    monospace;
}
.hero-rail span {
  opacity: 0;
}
.construction-pending .hero-rail {
  pointer-events: none;
}
@media print {
  .hero-rail {
    display: none !important;
  }
}
.theme-platform {
  color-scheme: dark;
}
@media (prefers-reduced-motion: reduce) {
  .theme-picker ~ .folio-hero .construction-canvas {
    visibility: visible !important;
  }
}
@media (max-width: 1000px) {
  .theme-enterprise .report-contents {
    display: none;
  }
  .theme-enterprise .first-section > .section-heading {
    position: absolute;
    width: 1px;
    height: 1px;
    clip-path: inset(50%);
    overflow: hidden;
  }
}

.folio {
  font-family: "Resume Sans", Arial, sans-serif;
}
/* The shared real-DOM tour takes over after the typed hero. Legacy wipes stay off. */
.folio-body[data-shared-tour] [data-build-unit] {
  clip-path: none !important;
  transform: none !important;
  opacity: 1;
}
.folio-body[data-shared-tour] .section-heading,
.folio-body[data-shared-tour] .section-content {
  clip-path: none !important;
}
.folio-body[data-shared-tour] .section-build-rule i {
  width: 100%;
}
.folio-body[data-shared-tour] .section-cursor,
.folio-body[data-shared-tour] .section-selection {
  display: none !important;
}

/* Each theme keeps its composition while every supplied project image remains available. */
.additional-work .work-image { margin:20px 0 0; overflow:hidden; border:1px solid var(--folio-line,#d4d8d4); }
.additional-work .work-image img { display:block; width:100%; max-height:240px; object-fit:contain; background:#fff; }
.theme-platform .work-image { border-radius:4px; }
.theme-security .work-image { border-width:2px; }
.theme-field .work-image { border-radius:12px; }
.theme-enterprise .work-image { max-width:360px; }
.case-study:not(.case-product) figure { grid-column:2 / -1; max-width:520px; }
@media(max-width:600px){.case-study:not(.case-product) figure{grid-column:1 / -1;}}
