/* Xponent21 article figures: responsive HTML graphics with click-to-enlarge. */

figure.x21-fig, .x21-fig {
  --x-navy: #09073c;
  --x-ink: #3d3b5c;
  --x-muted: #5e5c7a;
  --x-purple: #5b51c6;
  --x-purple-2: #7169d3;
  --x-blue: #40bcdd;
  --x-green: #9ece61;
  --x-line: #e2e1ee;
  container-type: inline-size;
  position: relative;
  box-sizing: border-box;
  margin: 2em 0;
  padding: 2.25em 2em 2em;
  border-radius: 14px;
  font-family: "Mulish", "Avenir", system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.45;
  color: var(--x-navy);
  background: #f6f6fa;
  cursor: zoom-in;
  -webkit-tap-highlight-color: transparent;
}
.x21-fig *, .x21-fig *::before, .x21-fig *::after { box-sizing: border-box; }
.x21-fig.x21-fig :where(p, ul, ol, li) { margin: 0; padding: 0; list-style: none; font-family: inherit; line-height: inherit; letter-spacing: inherit; }
.x21-fig.x21-fig :where(li)::before, .x21-fig.x21-fig :where(li)::marker { content: none; }
.x21-fig svg { display: block; }

.x21-fig__eyebrow {
  font-size: .78em;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--x-purple);
}
.x21-fig .x21-fig__title {
  margin-top: .35em;
  font-size: clamp(1.45em, 4.4cqi, 2.2em);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -.01em;
  color: var(--x-navy);
}
.x21-fig .x21-fig__sub {
  margin-top: .55em;
  font-size: 1em;
  color: var(--x-ink);
}
.x21-fig .x21-fig__body { margin-top: 1.75em; }

/* Expand / close affordance */
.x21-fig__expand {
  position: absolute;
  top: .9em;
  right: .9em;
  display: inline-flex;
  align-items: center;
  gap: .4em;
  padding: .45em .7em;
  border: 1px solid var(--x-line);
  border-radius: 999px;
  background: rgba(255, 255, 255, .9);
  color: var(--x-navy);
  font: 700 .72em/1 "Mulish", system-ui, sans-serif;
  letter-spacing: .04em;
  cursor: pointer;
  opacity: .85;
  transition: opacity .15s, transform .15s;
}
.x21-fig__expand svg { width: 1.1em; height: 1.1em; }
.x21-fig:hover .x21-fig__expand, .x21-fig__expand:focus-visible { opacity: 1; transform: scale(1.04); }
.x21-fig__expand:focus-visible { outline: 2px solid var(--x-purple-2); outline-offset: 2px; }
@container (max-width: 520px) { .x21-fig__expand span { display: none; } }

/* ---------- Fig: three layers ---------- */
.x21-layers { display: grid; gap: .9em; }
.x21-layer {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .25em 1em;
  align-items: start;
  padding: 1.25em;
  border: 1px solid var(--x-line);
  border-radius: 12px;
  background: #fff;
}
.x21-layer__icon {
  grid-row: span 3;
  display: grid;
  place-items: center;
  width: 4.25em;
  height: 4.25em;
  border-radius: 50%;
}
.x21-layer__icon svg { width: 52%; height: 52%; }
.x21-layer__icon--purple { background: #e9e7f8; }
.x21-layer__icon--blue { background: #ddf2f8; }
.x21-layer__icon--green { background: #eef6e4; }
.x21-layer .x21-layer__num { font-size: .74em; font-weight: 700; letter-spacing: .14em; color: var(--x-purple); }
.x21-layer .x21-layer__name { font-size: 1.2em; font-weight: 700; line-height: 1.2; color: var(--x-navy); }
.x21-layer .x21-layer__desc { margin-top: .3em; font-size: .92em; color: var(--x-ink); }
.x21-layers__arrow { display: grid; place-items: center; color: var(--x-navy); }
.x21-layers__arrow svg { width: 2.4em; height: .6em; transform: rotate(90deg); margin: .3em 0; }

@container (min-width: 720px) {
  .x21-layers { grid-template-columns: 1fr auto 1fr auto 1fr; gap: 0 .6em; align-items: stretch; }
  .x21-layer { grid-template-columns: 1fr; padding: 1.75em 1.5em; }
  .x21-layer__icon { grid-row: auto; width: 5.5em; height: 5.5em; margin-bottom: 1.1em; }
  .x21-layers__arrow svg { width: 3.2em; transform: none; margin: 0; }
  .x21-layers__arrow { align-self: center; }
}

/* ---------- Fig: rented vs owned ---------- */
.x21-fig.x21-fig--compare { background: #fff; border: 1px solid var(--x-line); }
.x21-compare { display: grid; gap: 1.25em; }
@container (min-width: 900px) { .x21-compare { grid-template-columns: 1fr 1fr; } }
.x21-path {
  container-type: inline-size;
  padding: 1.5em 1.4em 1.6em;
  border-radius: 12px;
  background: #f4f4f7;
}
.x21-path--owned { background: #efeefa; }
.x21-path .x21-path__label { font-size: .78em; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #4c4a66; }
.x21-path--owned .x21-path__label { color: var(--x-purple); }
.x21-path .x21-path__note { margin-top: .2em; font-size: .95em; color: var(--x-ink); }

.x21-fig .x21-tools { display: grid; grid-template-columns: repeat(2, 1fr); gap: .6em; margin-top: 1.2em; }
.x21-tool {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 3.6em;
  padding: .5em;
  border: 1px solid #dddcea;
  border-radius: 8px;
  background: #fff;
  font-size: .95em;
  font-weight: 700;
  line-height: 1.15;
  text-align: center;
}
.x21-flow {
  --flow: #8d8ba3;
  position: relative;
  height: 2.6em;
  margin: 0 auto;
  width: 2px;
  background: repeating-linear-gradient(var(--flow) 0 6px, transparent 6px 11px);
}
.x21-flow::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -2px;
  border: 6px solid transparent;
  border-top: 8px solid var(--flow);
  border-bottom: 0;
  transform: translateX(-50%);
}
.x21-path--owned .x21-flow { --flow: var(--x-purple-2); background: var(--flow); }
.x21-flow--fan { display: none; }

@container (min-width: 440px) {
  .x21-fig .x21-tools { grid-template-columns: repeat(4, 1fr); }
  .x21-flow--narrow { display: none; }
  .x21-flow--fan { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6em; height: 2.6em; }
  .x21-flow--fan > .x21-flow { height: 100%; }
}

.x21-hub {
  padding: 1em 1.1em;
  border-radius: 10px;
  text-align: center;
  font-size: .95em;
}
.x21-hub strong { display: block; font-size: 1.06em; }
.x21-hub--manual { border: 2px dashed #a3a1b8; background: #fff; }
.x21-hub--owned { background: var(--x-navy); color: #fff; }
.x21-fig .x21-out {
  width: min(100%, 22em);
  margin: 0 auto;
  padding: 1em 1.1em;
  border-radius: 10px;
  text-align: center;
  font-size: .95em;
}
.x21-out strong { display: block; font-size: 1.06em; }
.x21-out--stale { background: #e4e4ea; }
.x21-out--live { background: var(--x-green); }

/* ---------- Fig: audit checklist (dark) ---------- */
.x21-fig.x21-fig--dark {
  --x-line: rgba(255, 255, 255, .14);
  background: #0b0838;
  color: #fff;
}
.x21-fig--dark .x21-fig__eyebrow { color: var(--x-green); }
.x21-fig--dark .x21-fig__title { color: #fff; }
.x21-fig--dark .x21-fig__sub { color: #c9c8e0; }
.x21-fig--dark .x21-fig__expand { background: rgba(255, 255, 255, .08); color: #fff; }
.x21-audit { display: grid; gap: .7em; counter-reset: q; }
.x21-q {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .3em 1em;
  align-items: center;
  padding: 1.1em 1.2em;
  border-radius: 12px;
  background: #19154f;
}
.x21-q__num {
  grid-row: span 2;
  display: grid;
  place-items: center;
  width: 2.5em;
  height: 2.5em;
  border-radius: 50%;
  background: var(--x-green);
  color: var(--x-navy);
  font-weight: 700;
  font-size: 1.05em;
}
.x21-q .x21-q__ask { font-size: 1.08em; font-weight: 700; line-height: 1.25; color: #fff; }
.x21-q .x21-q__hint { font-size: .93em; color: #c9c8e0; }
.x21-fig .x21-q__boxes { grid-column: 2; display: flex; gap: 1.2em; margin-top: .35em; font-weight: 700; font-size: .95em; }
.x21-q__boxes span { display: inline-flex; align-items: center; gap: .45em; }
.x21-q__boxes span::before {
  content: "";
  width: 1.15em;
  height: 1.15em;
  border: 2px solid #6d6a92;
  border-radius: 4px;
}
.x21-q__boxes span:first-child::before { border-color: var(--x-green); }
.x21-fig .x21-fig__foot { margin-top: 1.4em; font-size: .9em; font-weight: 700; color: var(--x-green); }

@container (min-width: 640px) {
  .x21-q { grid-template-columns: auto 1fr auto; padding: 1.25em 1.6em; }
  .x21-q__num { width: 2.8em; height: 2.8em; }
  .x21-fig .x21-q__boxes { grid-column: 3; grid-row: 1 / span 2; margin: 0 0 0 1em; }
}

/* ---------- Small screens ---------- */
@media (max-width: 480px) {
  figure.x21-fig, .x21-fig { padding: 1.6em 1em 1.1em; font-size: 15px; border-radius: 10px; }
  .x21-path { padding: 1.2em .9em 1.3em; }
  .x21-tool { font-size: .9em; }
  .x21-layer { padding: 1.1em .9em; gap: .25em .8em; }
  .x21-q { padding: 1em .9em; gap: .3em .8em; }
}

/* ---------- Lightbox ---------- */
.x21-lightbox {
  width: 100vw;
  max-width: 100vw;
  height: 100dvh;
  max-height: 100dvh;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  overflow: auto;
  overscroll-behavior: contain;
}
.x21-lightbox::backdrop { background: rgba(9, 7, 60, .82); backdrop-filter: blur(2px); }
.x21-lightbox__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100%;
  padding: 3.5em 1em 1.5em;
}
.x21-lightbox .x21-fig {
  width: min(100%, 1240px);
  margin: 0;
  font-size: clamp(16px, 1.25vw, 20px);
  cursor: default;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .35);
}
.x21-lightbox .x21-fig__expand { display: none; }
.x21-lightbox__close {
  position: fixed;
  top: .75em;
  right: .75em;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 2.75em;
  height: 2.75em;
  border: 0;
  border-radius: 50%;
  background: #fff;
  color: #09073c;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .25);
}
.x21-lightbox__close svg { width: 1.2em; height: 1.2em; }
.x21-lightbox__close:focus-visible { outline: 3px solid #9ece61; outline-offset: 2px; }
.x21-lightbox[open] { animation: x21-fade .18s ease-out; }
@keyframes x21-fade { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .x21-lightbox[open] { animation: none; }
  .x21-fig__expand { transition: none; }
}
html.x21-lightbox-open { overflow: hidden; }
.x21-lightbox .x21-fig--dark { outline: 1px solid rgba(255, 255, 255, .18); }
