@font-face {
  font-family: "Departure Mono";
  src: url("/assets/fonts/departure-mono.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

.case-mobile-header,
.case-mobile-back-row,
.site-footer .footer-mobile-label,
.site-footer .footer-mobile-only { display: none; }

.case-page .case-jump-design {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  width: min(100%, 220px);
  min-height: 44px;
  margin-top: 20px;
  padding: 0 16px;
  border: 1px solid #aebfcb;
  border-radius: 8px;
  background: transparent;
  color: var(--ink);
  font: 400 16px/1.4 "Geist", Arial, sans-serif;
  white-space: nowrap;
  opacity: 1;
  transition: background-color 160ms ease, border-color 160ms ease;
}
.case-page .case-jump-design::after { display: none; }
.case-page .case-jump-design:hover {
  border-color: #9bafbd;
  background: #f1f4f6;
  opacity: 1;
}
.case-page .case-jump-design svg {
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 160ms ease;
}
.case-page .case-jump-design:hover svg { transform: translateX(3px); }
@media (prefers-reduced-motion: reduce) {
  .case-page .case-jump-design,
  .case-page .case-jump-design svg { transition: none; }
}

/* Keep the opening artwork compact enough to reveal the project title in the first view. */
@media (min-width: 1024px) {
  .case-page :is(.lh-cover, .sc-cover, .nl-cover, .cb-hero-image, .mm-hero-image) {
    height: clamp(360px, 52svh, 520px);
  }
  .case-page :is(.lh-cover, .sc-cover, .nl-cover, .cb-hero-image, .mm-hero-image) > img,
  .case-page .sc-cover > picture > img,
  .case-page .mm-hero-image > video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
  }
  .case-page .cb-hero-image > img,
  .case-page .mm-hero-image > img,
  .case-page .mm-hero-image > video {
    object-fit: contain;
  }
}

@media (max-width: 1023px) {
  .case-page {
    --case-directory-height: var(--lh-directory-height, var(--sc-directory-height, var(--hhi-directory-height, var(--nl-directory-height, 56px))));
    --case-bar-fallback: calc(var(--case-directory-height) + 1px + env(safe-area-inset-bottom, 0px));
    --case-bar-clearance: var(--case-bar-height, var(--case-bar-fallback));
  }
  .case-page :is(.lh-toc, .sc-toc, .hhi-toc, .nl-toc, .cb-toc, .mm-toc) { align-items: center; }
  .case-page :is(.lh-sidebar, .sc-sidebar, .hhi-sidebar, .nl-sidebar, .cb-sidebar, .mm-sidebar,
    .lh-toc, .sc-toc, .hhi-toc, .nl-toc, .cb-toc, .mm-toc),
  .case-page :is(.lh-toc, .sc-toc, .hhi-toc, .nl-toc, .cb-toc, .mm-toc) ol { background: var(--paper); }
  .case-page :is(.lh-toc-toggle, .sc-toc-toggle, .hhi-toc-toggle, .nl-toc-toggle, .cb-toc-toggle, .mm-toc-toggle),
  .case-page :is(.lh-toc, .sc-toc, .hhi-toc, .nl-toc, .cb-toc, .mm-toc) ol a {
    min-height: 44px;
    padding: 11px 12px;
    font-size: 14px;
    line-height: 22px;
    box-sizing: border-box;
  }
  .case-page :is(.lh-toc-toggle, .sc-toc-toggle, .hhi-toc-toggle, .nl-toc-toggle, .cb-toc-toggle, .mm-toc-toggle) {
    height: 44px;
    align-self: center;
    border: 0;
    border-radius: 6px;
    background: #f5f5f5;
  }
  .case-page :is(.lh-toc-toggle, .sc-toc-toggle, .hhi-toc-toggle, .nl-toc-toggle, .cb-toc-toggle, .mm-toc-toggle):hover { background: #ededed; }
  .case-page :is(.lh-sidebar, .sc-sidebar, .hhi-sidebar, .nl-sidebar, .cb-sidebar, .mm-sidebar):has(.is-open) { z-index: 85; }
  .case-page .fox-companion .fox-pet-dock {
    bottom: calc(var(--case-bar-clearance) + 12px + var(--fox-keyboard));
  }
  .case-page .fox-companion:not(.is-keyboard) .fox-panel {
    --case-fox-space: 116px;
    bottom: calc(var(--case-bar-clearance) + var(--case-fox-space));
    max-height: calc(var(--fox-view-height) - var(--header-height) - var(--case-bar-clearance) - var(--case-fox-space) - 12px);
  }
  /* When the keyboard covers the directory, retain the chat's keyboard placement. */
  .case-page .fox-companion.is-keyboard .fox-pet-dock { bottom: calc(4px + var(--fox-keyboard)); }
}

@media (max-width: 1023px) {
  html:has(.case-page) {
    --header-height: calc(64px + env(safe-area-inset-top, 0px));
    scroll-padding-top: var(--header-height);
  }
  html.mobile-menu-open,
  .case-page.mobile-menu-open { overflow: hidden; overscroll-behavior: none; }
  .case-page { padding-top: var(--header-height); }
  .case-page .case-mobile-header {
    display: block;
    position: fixed;
    inset: 0 0 auto;
    z-index: 35;
    background: var(--paper);
  }
  .case-page .case-mobile-header .header-inner {
    height: var(--header-height);
    padding: env(safe-area-inset-top, 0px) 0 0 8px;
  }
  .case-mobile-header .brand,
  .case-mobile-header .menu-toggle { position: relative; z-index: 2; }
  .case-page .case-mobile-header .menu-toggle { border: 0; background: transparent; }
  .case-page .case-mobile-header.menu-open { z-index: 100; }
  .case-page .case-mobile-header #primary-navigation {
    position: fixed;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    margin: 0;
    padding: calc(var(--header-height) + 24px) 32px calc(40px + env(safe-area-inset-bottom, 0px));
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 0;
    border-radius: 0;
    background: var(--paper);
    box-shadow: none;
  }
  .case-page .case-mobile-header.menu-open #primary-navigation { display: flex; flex-direction: column; }
  .case-mobile-menu-content {
    display: grid;
    gap: 4px;
    width: 100%;
    max-width: 440px;
    margin: auto;
    flex-shrink: 0;
  }
  .case-page .case-mobile-header .case-mobile-menu-content a {
    min-height: 44px;
    padding: 8px 12px;
    justify-content: flex-start;
    border: 0;
    border-radius: 14px;
    font: 300 22px/1.3 "Averia Serif Libre", Georgia, serif;
    letter-spacing: -.025em;
    text-transform: none;
  }
  .case-mobile-menu-label {
    margin-top: 12px;
    padding: 8px 12px;
    color: #737373;
    font: 300 22px/1.3 "Averia Serif Libre", Georgia, serif;
    letter-spacing: -.025em;
  }
  .case-mobile-menu-other { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 16px; }
  .case-page .case-mobile-header .case-mobile-menu-other a { font: 400 16px/1.5 "Geist", Arial, sans-serif; letter-spacing: 0; }
  .case-mobile-menu-content a[aria-disabled] { color: #526a7b; cursor: default; }
  .case-mobile-menu-content small { display: block; margin-top: 5px; font: 400 12px/1.5 "Geist", Arial, sans-serif; letter-spacing: 0; }
  .case-page .case-mobile-back-row { display: block; padding: 8px 22px 0; }
  .case-mobile-back { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font: 400 14px/1.5 "Geist", Arial, sans-serif; }
}

@media (max-width: 767px) {
  .case-page :is(.lh-intro, .sc-intro, .hhi-intro, .nl-intro, .cb-intro, .mm-intro) { padding-top: 12px; }

  .case-page .site-footer { display: none; }
}

@media print {
  .case-mobile-header,
  .case-mobile-back-row { display: none !important; }
  .case-page { padding-top: 0; }
}
