/* ─────────────────────────────────────────
   Sarah Hall Portfolio — sarahhall.design
   Stack: plain HTML/CSS/JS
   Typeface: Geist (Google Fonts)
   ───────────────────────────────────────── */

/* ── TOKENS ── */
:root {
  --bg:         #F6F3EE;
  --bg-warm:    #EDEBE5;
  --bg-white:   #FAFAF7;
  --ink:        #1A1916;
  --ink-mid:    #5A5448;
  --ink-faint:  #6B6252;
  --ink-ghost:  #8C8070;
  --accent:     #AC6603;
  --accent-bg:  #FAF0EA;
  --rule:       rgba(26, 25, 22, 0.09);
  --font:       'Geist', system-ui, -apple-system, sans-serif;
  --ease:       cubic-bezier(0.16, 1, 0.3, 1);
  --ease-back:  cubic-bezier(0.34, 1.56, 0.64, 1);
  --radius:     8px;
}

/* ── RESET ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  line-height: 1;
  min-height: 100vh;
  cursor: none;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { font-family: var(--font); cursor: none; border: none; background: none; }

/* ── CUSTOM CURSOR ── */
.cursor {
  position: fixed;
  width: 10px;
  height: 10px;
  background: var(--accent);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9999;
  transform: translate(-50%, -50%);
  transition: width 0.2s var(--ease), height 0.2s var(--ease), background 0.2s;
  mix-blend-mode: multiply;
}

.cursor.hovering {
  width: 36px;
  height: 36px;
  background: var(--accent);
  opacity: 0.25;
}

/* ── LAYOUT WRAPPER ── */
.site-wrap {
  max-width: min(80vw, 1200px);
  margin: 0 auto;
}

/* ── NAV ── */
.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.375rem 0;
  border-bottom: 0.5px solid var(--rule);
  position: sticky;
  top: 0;
  background: var(--bg);
  z-index: 100;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.logo {
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--ink);
  text-transform: uppercase;
  transition: color 0.2s;
}

.logo:hover { color: var(--accent); }

.nav-links {
  display: flex;
  gap: 2.25rem;
}

.nav-links a {
  font-size: 14px;
  font-weight: 400;
  color: var(--ink-faint);
  letter-spacing: 0.01em;
  position: relative;
  padding-bottom: 2px;
  transition: color 0.2s;
}

.nav-links a::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--accent);
  transition: width 0.25s var(--ease);
}

.nav-links a:hover,
.nav-links a.active {
  color: var(--ink);
}

.nav-links a:hover::after,
.nav-links a.active::after {
  width: 100%;
}

.nav-menu-btn {
  display: none;
  flex-direction: column;
  gap: 5px;
  width: 20px;
  padding: 2px 0;
}

.nav-menu-btn span {
  display: block;
  height: 1px;
  background: var(--ink);
  transition: all 0.2s;
}

/* ── HERO ── */
.hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  padding: 5rem 0 4.5rem;
  border-bottom: 0.5px solid var(--rule);
  align-items: end;
}

.kicker {
  font-size: 11px;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin-bottom: 1.25rem;
  opacity: 0;
  animation: fadeUp 0.5s var(--ease) 0.1s both;
}

h1 {
  font-size: clamp(40px, 5vw, 58px);
  font-weight: 300;
  line-height: 1.02;
  overflow: hidden;
  letter-spacing: -0.04em;
  color: var(--ink);
  opacity: 0;
  animation: fadeUp 0.6s var(--ease) 0.2s both;
}

h1 strong {
  white-space: nowrap;
}

.hero-accent {
  color: var(--accent);
  font-weight: 400;
  font-style: italic;
}

.hero-right {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
  padding-bottom: 4px;
  opacity: 0;
  animation: fadeUp 0.6s var(--ease) 0.3s both;
}

.hero-body {
  font-size: 15px;
  line-height: 1.75;
  color: var(--ink-mid);
  font-weight: 300;
  max-width: 400px;
}

.hero-stats {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.stat {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  padding: 0.875rem 0;
  border-top: 0.5px solid var(--rule);
  transition: background 0.2s;
}

.stat:last-child {
  border-bottom: 0.5px solid var(--rule);
}

.stat-num {
  font-size: 18px;
  font-weight: 500;
  letter-spacing: -0.025em;
  color: var(--ink);
  min-width: 80px;
  flex-shrink: 0;
  transition: color 0.2s;
}

.stat:hover .stat-num { color: var(--accent); }

.stat-label {
  font-size: 12px;
  color: var(--ink-faint);
  line-height: 1.5;
  font-weight: 300;
}

/* ── WORK SECTION ── */
.work-section {
  padding: 0;
}

.section-header {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  padding: 2.25rem 0 1.75rem;
}

.section-label {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-ghost);
  white-space: nowrap;
}

.section-rule {
  flex: 1;
  height: 0.5px;
  background: var(--rule);
}

/* ── WORK LIST ── */
.work-list {
  display: flex;
  flex-direction: column;
}

.entry {
  border-top: 0.5px solid var(--rule);
  opacity: 0;
  animation: fadeUp 0.5s var(--ease) both;
}

.entry:nth-child(1) { animation-delay: 0.35s; }
.entry:nth-child(2) { animation-delay: 0.45s; }
.entry:nth-child(3) { animation-delay: 0.55s; }

.entry:last-child {
  border-bottom: 0.5px solid var(--rule);
}

.entry-link {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  padding: 1.75rem 0;
  align-items: start;
  transition: padding-left 0.25s var(--ease);
}

.entry-link:hover {
  padding-left: 8px;
}

.entry-link:hover .entry-arrow {
  transform: translateX(4px);
  color: var(--accent);
}

.entry-link:hover .entry-title {
  color: var(--accent);
}

.entry-link:hover .entry-thumb {
  transform: scale(1.03);
}

/* Thumbnail */
.entry-thumb {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius);
  overflow: hidden;
  position: relative;
  flex-shrink: 0;
  transition: transform 0.35s var(--ease);
  object-fit: cover;
  object-position: top;
}

.thumb-res,
.thumb-task,
.thumb-apti {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  padding: 12px;
}

.thumb-res::before {
  content: '';
  display: block;
  width: 100%;
  height: 40%;
  background: rgba(255,255,255,0.45);
  border-radius: 4px;
}

.thumb-res::after {
  content: '';
  position: absolute;
  top: 12px;
  left: 12px;
  right: 12px;
  height: 5px;
  background: rgba(255,255,255,0.3);
  border-radius: 3px;
}

.thumb-task::before {
  content: '';
  display: block;
  width: 46%;
  height: 50%;
  background: rgba(255,255,255,0.5);
  border-radius: 4px;
  margin-right: 8%;
}

.thumb-task::after {
  content: '';
  display: block;
  width: 46%;
  height: 50%;
  background: rgba(255,255,255,0.3);
  border-radius: 4px;
}

.thumb-apti::before {
  content: '';
  position: absolute;
  top: 14px;
  left: 12px;
  right: 12px;
  height: 18px;
  background: rgba(255,255,255,0.45);
  border-radius: 10px;
}

.thumb-apti::after {
  content: '';
  display: block;
  width: 75%;
  height: 4px;
  background: rgba(255,255,255,0.35);
  border-radius: 2px;
}

/* Entry body */
.entry-body {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}

.entry-meta {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.entry-company {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-faint);
}

.entry-dot { color: var(--ink-ghost); font-size: 11px; }

.entry-year {
  font-size: 12px;
  color: var(--ink-ghost);
  letter-spacing: 0.04em;
}

.entry-lock {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--ink-ghost);
  margin-left: 4px;
}

.entry-title {
  font-size: 24px;
  font-weight: 400;
  letter-spacing: -0.025em;
  color: var(--ink);
  line-height: 1.2;
  transition: color 0.2s;
}

.entry-desc {
  font-size: 14px;
  line-height: 1.7;
  color: var(--ink-mid);
  font-weight: 300;
  max-width: 520px;
}

.entry-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 4px;
}

.entry-tags li {
  font-size: 11px;
  padding: 8px 12px;
  border: 0.5px solid var(--rule);
  border-radius: 4px;
  color: var(--ink-faint);
  letter-spacing: 0.03em;
  transition: border-color 0.2s, color 0.2s;
  background: #EFEBE7;
}

.entry-link:hover .entry-tags li {
  border-color: rgba(196, 98, 45, 0.25);
  color: var(--accent);
}

.entry-arrow {
  color: var(--ink-ghost);
  margin-top: 6px;
  transition: transform 0.25s var(--ease), color 0.2s;
  flex-shrink: 0;
}

/* ── PLAYGROUND STRIP ── */
.playground-strip {
  margin: 3rem 0;
  background: var(--bg-warm);
  border-radius: 12px;
  border: 0.5px solid var(--rule);
  overflow: hidden;
  opacity: 0;
  animation: fadeUp 0.5s var(--ease) 0.6s both;
  transition: border-color 0.2s;
}

.playground-strip:hover {
  border-color: rgba(196, 98, 45, 0.3);
}

.pg-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2.5rem;
  gap: 2rem;
  flex-wrap: wrap;
}

.pg-kicker {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin-bottom: 0.4rem;
}

.pg-title {
  font-size: 22px;
  font-weight: 300;
  letter-spacing: -0.03em;
  color: var(--ink);
  margin-bottom: 0.5rem;
}

.pg-sub {
  font-size: 13px;
  color: var(--ink-mid);
  line-height: 1.6;
  font-weight: 300;
  margin-bottom: 1.25rem;
}

.pg-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 500;
  color: var(--accent);
  border-bottom: 0.5px solid var(--accent);
  padding-bottom: 1px;
  transition: gap 0.2s var(--ease);
}

.pg-link:hover { gap: 10px; }

.pg-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}

.chip {
  font-family: 'Courier New', monospace;
  font-size: 11px;
  padding: 5px 10px;
  background: rgba(26,25,22,0.06);
  border-radius: 4px;
  color: var(--ink-mid);
  letter-spacing: 0.02em;
  white-space: nowrap;
  transition: background 0.2s, color 0.2s;
}

.chip:hover {
  background: var(--accent-bg);
  color: var(--accent);
}

/* ── FOOTER ── */
.footer {
  border-top: 0.5px solid var(--rule);
  padding: 2rem 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
}

.footer-name {
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink);
}

.footer-links {
  display: flex;
  gap: 1.75rem;
}

.footer-links a {
  font-size: 13px;
  color: var(--ink-faint);
  transition: color 0.2s;
}

.footer-links a:hover { color: var(--accent); }

.footer-built {
  font-size: 11px;
  color: var(--ink-ghost);
  letter-spacing: 0.03em;
  font-style: italic;
}

/* ── FONT SCRAMBLE ANIMATION ── */
#hero-scramble {
  display: inline;
  white-space: nowrap;
}

.scramble-letter {
  display: inline;
  white-space: pre;
  line-height: inherit;
  vertical-align: baseline;
}

.scramble-letter.resolving {
  animation: letterResolve 0.12s var(--ease-back) both;
}

@keyframes letterResolve {
  0%   { transform: translateY(-4px); opacity: 0.5; }
  100% { transform: translateY(0);    opacity: 1; }
}

/* ── ANIMATIONS ── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── RESPONSIVE ── */
@media (max-width: 768px) {
  body { cursor: auto; }
  .cursor { display: none; }

  .nav { padding: 1.125rem 1.25rem; }
  .nav-links { display: none; }
  .nav-menu-btn { display: flex; }

  .site-wrap { max-width: 92vw; }

  .hero {
    grid-template-columns: 1fr;
    gap: 2.5rem;
    padding: 3rem 0 3rem;
  }

  h1 { font-size: clamp(36px, 9vw, 48px); }
  .hero-body { max-width: 100%; }

  .entry-link {
    grid-template-columns: 100px 1fr 20px;
    gap: 1rem;
    padding: 1.25rem 0;
  }

  .entry-thumb { width: 100px; }
  .entry-title { font-size: 17px; }
  .entry-desc { display: none; }

  .playground-strip { margin: 2rem 0; }
  .pg-inner { padding: 1.75rem; flex-direction: column; align-items: flex-start; }
  .pg-chips { justify-content: flex-start; }

  .footer {
    padding: 1.5rem 0;
    flex-direction: column;
    gap: 0.75rem;
    align-items: flex-start;
  }
}


/* ─────────────────────────────────────────
   Case study shared styles
   Used by: care-plan.html, reservation-system.html, task-management.html
   ───────────────────────────────────────── */


    /* ── CASE STUDY LAYOUT ── */
    .case-nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 1.375rem 0;
      border-bottom: 0.5px solid var(--rule);
      position: sticky;
      top: 0;
      background: var(--bg);
      z-index: 100;
      backdrop-filter: blur(12px);
    }

    .case-back {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-size: 13px;
      color: var(--ink-faint);
      transition: color 0.2s;
    }

    .case-back:hover { color: var(--ink); }
    .case-back:hover svg { transform: translateX(-3px); }
    .case-back svg { transition: transform 0.2s; }

    /* ── HEADER ── */
    .case-header {
      padding: 4.5rem 0 4rem;
      border-bottom: 0.5px solid var(--rule);
      opacity: 0;
      animation: fadeUp 0.6s var(--ease) 0.1s both;
    }

    .case-header-meta {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 1.5rem;
    }

    .case-company {
      font-size: 12px;
      font-weight: 500;
      letter-spacing: 0.07em;
      text-transform: uppercase;
      color: var(--ink-faint);
    }

    .case-dot { color: var(--ink-ghost); font-size: 12px; }

    .case-year {
      font-size: 12px;
      color: var(--ink-ghost);
    }

    .case-title {
      font-size: clamp(32px, 4.5vw, 52px);
      font-weight: 300;
      letter-spacing: -0.035em;
      line-height: 1.05;
      color: var(--ink);
      margin-bottom: 2rem;
      max-width: 720px;
    }

    .case-header-grid {
      display: grid;
      grid-template-columns: 2fr 1fr;
      gap: 4rem;
      align-items: start;
    }

    .case-summary {
      font-size: 16px;
      line-height: 1.75;
      color: var(--ink-mid);
      font-weight: 300;
    }

    .case-details {
      display: flex;
      flex-direction: column;
      gap: 1.5rem;
    }

   

    .case-detail-label {
      font-size: 12px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--ink-ghost);
      margin-bottom: 0.4rem;
    }

    .case-detail-value {
      font-size: 13px;
      color: var(--ink-mid);
      line-height: 1.6;
      font-weight: 300;
    }

    /* ── OUTCOMES BAR ── */
    .case-outcomes {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      border-bottom: 0.5px solid var(--rule);
      opacity: 0;
      animation: fadeUp 0.5s var(--ease) 0.25s both;
    }

    .outcome {
      padding: 2rem 2rem 2rem 0;
      border-right: 0.5px solid var(--rule);
    }

    .outcome:last-child { border-right: none; padding-left: 2rem; }
    .outcome:nth-child(2) { padding-left: 2rem; }

    .outcome-num {
      font-size: 32px;
      font-weight: 300;
      letter-spacing: -0.04em;
      color: var(--ink);
      margin-bottom: 8px;
    }

    .outcome-num span {
      color: var(--accent);
      padding: 0 8px;
    }

    .outcome-label {
      font-size: 13px;
      color: var(--ink-faint);
      line-height: 1.5;
      font-weight: 300;
    }

    /* ── BODY ── */
    .case-body {
      padding: 5rem 0;
      display: grid;
      grid-template-columns: 1fr 2.5fr;
      gap: 5rem;
      align-items: start;
    }

    /* Sticky section nav */
    .case-sidenav {
      position: sticky;
      top: 6rem;
    }

    .case-sidenav-label {
      font-size: 12px;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--ink-ghost);
      margin-bottom: 1rem;
    }

    .case-sidenav-links {
      display: flex;
      flex-direction: column;
      gap: 2px;
    }

    .case-sidenav-links a {
      font-size: 13px;
      color: var(--ink-faint);
      padding: 5px 0;
      transition: color 0.15s;
      border-left: 1.5px solid transparent;
      padding-left: 10px;
      margin-left: -10px;
    }

    .case-sidenav-links a:hover,
    .case-sidenav-links a.active {
      color: var(--ink);
      border-left-color: var(--accent);
    }

    /* Content */
    .case-content {
      min-width: 0;
    }

    .case-section {
      margin-bottom: 5rem;
    }

    .case-section:last-child { margin-bottom: 0; }

    .case-section-eyebrow {
      font-size: 12px;
      font-weight: 500;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-ghost);
      margin-bottom: 1rem;
      display: flex;
      align-items: center;
      gap: 1rem;
    }

    .case-section-eyebrow::after {
      content: '';
      flex: 1;
      height: 0.5px;
      background: var(--rule);
    }

    .case-section h2 {
      font-size: 26px;
      font-weight: 400;
      letter-spacing: -0.025em;
      color: var(--ink);
      margin-bottom: 1.25rem;
      line-height: 1.2;
    }

    .case-section p {
      font-size: 15px;
      line-height: 1.8;
      color: var(--ink-mid);
      font-weight: 300;
      margin-bottom: 1.25rem;
    }

    .case-section p:last-child { margin-bottom: 0; }

    .case-section p strong {
      font-weight: 500;
      color: var(--ink);
    }

    /* Callout */
    .callout {
      border-left: 2px solid var(--accent);
      padding: 1rem 1.5rem;
      margin: 2rem 0;
      background: var(--bg-warm);
      border-radius: 0 var(--radius) var(--radius) 0;
    }

    .callout p {
      font-size: 15px;
      line-height: 1.7;
      color: var(--ink);
      font-weight: 400;
      margin: 0;
    }

    /* Images */

    .case-img.constrained video {
      height: auto;
      width: 100%;
      object-fit: cover;
      object-position: top;
    }


    .case-img {
      width: 100%;
      border-radius: 10px;
      overflow: hidden;
      margin: 2rem 0;
      background: var(--bg-warm);
      border: 0.5px solid var(--rule);
    }

    .case-img img {
      width: 100%;
      display: block;
    }

    .case-img-caption {
      font-size: 12px;
      color: var(--ink-ghost);
      padding: 0.75rem 1rem;
      border-top: 0.5px solid var(--rule);
      font-style: italic;
    }

    .case-img-placeholder {
      aspect-ratio: 16 / 9;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 12px;
      color: var(--ink-ghost);
      font-style: italic;
    }

    /* Provider types grid */
    .provider-grid {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 10px;
      margin: 2rem 0;
    }

    .provider-card {
      background: var(--bg-warm);
      border: 0.5px solid var(--rule);
      border-radius: var(--radius);
      padding: 1.25rem;
    }

    .provider-card-title {
      font-size: 13px;
      font-weight: 500;
      color: var(--ink);
      margin-bottom: 6px;
    }

    .provider-card-desc {
      font-size: 12px;
      color: var(--ink-faint);
      line-height: 1.6;
      font-weight: 300;
    }

    /* Quotes */
    .quote-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px;
      margin: 2rem 0;
    }

    .quote-card {
      background: var(--bg-warm);
      border: 0.5px solid var(--rule);
      border-radius: var(--radius);
      padding: 1.25rem;
    }

    .quote-text {
      font-size: 13px;
      line-height: 1.7;
      color: var(--ink-mid);
      font-style: italic;
      font-weight: 300;
      margin-bottom: 8px;
    }

    .quote-text::before { content: '"'; }
    .quote-text::after  { content: '"'; }

    .quote-attr {
      font-size: 12px;
      color: var(--ink-ghost);
      letter-spacing: 0.04em;
    }

    /* Insight list */
    .insight-list {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin: 1.5rem 0;
    }

    .insight {
      display: flex;
      gap: 1rem;
      align-items: flex-start;
      padding: 1rem 1.25rem;
      background: var(--bg-warm);
      border-radius: var(--radius);
      border: 0.5px solid var(--rule);
    }

    .insight-num {
      font-size: 12px;
      font-weight: 500;
      color: var(--accent);
      min-width: 20px;
      padding-top: 2px;
    }

    .insight-text {
      font-size: 13px;
      color: var(--ink-mid);
      line-height: 1.65;
      font-weight: 300;
    }

    .insight-text strong {
      display: block;
      font-weight: 500;
      color: var(--ink);
      margin-bottom: 3px;
    }

    /* ── NEXT PROJECT ── */
    .case-next {
      border-top: 0.5px solid var(--rule);
      padding: 2.5rem 0;
      display: flex;
      align-items: center;
      justify-content: space-between;
    }

    .case-next-label {
      font-size: 12px;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-ghost);
      margin-bottom: 0.4rem;
    }

    .case-next-title {
      font-size: 18px;
      font-weight: 300;
      letter-spacing: -0.02em;
      color: var(--ink);
    }

    .case-next a {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-size: 13px;
      font-weight: 500;
      color: var(--ink);
      border-bottom: 0.5px solid var(--ink);
      padding-bottom: 1px;
      transition: gap 0.2s var(--ease), color 0.2s;
      white-space: nowrap;
    }

    .case-next a:hover {
      gap: 12px;
      color: var(--accent);
      border-bottom-color: var(--accent);
    }

    /* ── RESPONSIVE ── */
    @media (max-width: 768px) {
      .case-header-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
      }

      .case-outcomes {
        grid-template-columns: 1fr;
      }

      .outcome {
        border-right: none;
        border-bottom: 0.5px solid var(--rule);
        padding: 1.5rem 0;
      }

      .outcome:last-child {
        border-bottom: none;
        padding-left: 0;
      }

      .outcome:nth-child(2) { padding-left: 0; }

      .case-body {
        grid-template-columns: 1fr;
        gap: 2rem;
        padding: 3rem 0;
      }

      .case-sidenav { display: none; }

      .provider-grid,
      .quote-grid { grid-template-columns: 1fr; }
    }
  
/* ── PASSWORD GATE (used by protected case studies) ── */
.gate { position:fixed;inset:0;background:var(--bg);z-index:999;display:flex;align-items:center;justify-content:center;padding:2rem; }
.gate-box { width:100%;max-width:360px;display:flex;flex-direction:column;gap:1.5rem; }
.gate-label { font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-faint); }
.gate-title { font-size:22px;font-weight:300;letter-spacing:-0.025em;color:var(--ink);line-height:1.2; }
.gate-desc { font-size:13px;color:var(--ink-mid);line-height:1.65;font-weight:300; }
.gate-field { display:flex;flex-direction:column;gap:0.5rem; }
.gate-field label { font-size:11px;letter-spacing:0.07em;text-transform:uppercase;color:var(--ink-faint); }
.gate-input { font-family:var(--font);font-size:15px;font-weight:300;padding:0.75rem 1rem;background:var(--bg-white);border:0.5px solid var(--rule);border-radius:var(--radius);color:var(--ink);width:100%;outline:none;transition:border-color 0.15s;letter-spacing:0.05em; }
.gate-input:focus { border-color:var(--ink-mid); }
.gate-input.error { border-color:#C0392B; }
.gate-error { font-size:12px;color:#C0392B;display:none; }
.gate-error.visible { display:block; }
.gate-btn { font-family:var(--font);font-size:13px;font-weight:500;padding:0.75rem 1.5rem;background:var(--ink);color:var(--bg);border-radius:var(--radius);border:none;cursor:pointer;transition:opacity 0.15s;align-self:flex-start; }
.gate-btn:hover { opacity:0.8; }
.gate-back { font-size:12px;color:var(--ink-ghost);text-decoration:none;transition:color 0.15s; }
.gate-back:hover { color:var(--ink); }

/* ── PROTOTYPE EMBED ── */
.prototype-embed { margin:2rem 0;border-radius:10px;overflow:hidden;border:0.5px solid var(--rule);background:var(--bg-warm); }
.prototype-label { padding:0.875rem 1.25rem;display:flex;align-items:center;justify-content:space-between;border-bottom:0.5px solid var(--rule); }
.prototype-label-text { font-size:12px;color:var(--ink-faint);display:flex;align-items:center;gap:8px; }
.prototype-dot { width:6px;height:6px;border-radius:50%;background:var(--accent);display:inline-block; }
.prototype-label a { font-size:12px;color:var(--accent);border-bottom:0.5px solid var(--accent);padding-bottom:1px;transition:opacity 0.15s; }
.prototype-label a:hover { opacity:0.7; }
.prototype-embed iframe { width:100%;height:700px;border:none;display:block; }

/* ── CONCEPT CARDS (reservation case study) ── */
.concept-grid { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:2rem 0; }
.concept-card { background:var(--bg-warm);border:0.5px solid var(--rule);border-radius:var(--radius);padding:1.25rem; }
.concept-card-label { font-size:11px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--accent);margin-bottom:0.5rem; }
.concept-card-title { font-size:15px;font-weight:500;color:var(--ink);margin-bottom:0.5rem; }
.concept-card-desc { font-size:13px;color:var(--ink-faint);line-height:1.65;font-weight:300; }

/* ── CALC COMPONENTS (reservation case study) ── */
.calc-components { display:flex;flex-direction:column;gap:8px;margin:1.5rem 0; }
.calc-component { display:flex;gap:1rem;align-items:flex-start;padding:1rem 1.25rem;background:var(--bg-warm);border-radius:var(--radius);border:0.5px solid var(--rule); }
.calc-component-label { font-size:11px;font-weight:500;color:var(--accent);min-width:70px;padding-top:1px;letter-spacing:0.03em;text-transform:uppercase; }
.calc-component-desc { font-size:13px;color:var(--ink-mid);line-height:1.6;font-weight:300; }
.calc-component-desc strong { display:block;font-weight:500;color:var(--ink);margin-bottom:2px; }

/* ── REFLECTION LIST (reservation case study) ── */
.reflection-list { display:flex;flex-direction:column;gap:10px;margin:1.5rem 0; }
.reflection-item { padding:1.25rem;background:var(--bg-warm);border-radius:var(--radius);border:0.5px solid var(--rule); }
.reflection-item-title { font-size:13px;font-weight:500;color:var(--ink);margin-bottom:6px; }
.reflection-item-desc { font-size:13px;color:var(--ink-mid);line-height:1.65;font-weight:300; }
