/* faq — disclosure rows on native <details>/<summary>, no script. */

/* ── The rows ────────────────────────────────────────────────────────────── */
.sk-faq {
  --sk-faq-marker-size: 14px;
}
.sk-faq-items {
  --sk-ruled-pad: 0;
}

/* Native disclosure, animated: interpolate-size lets block-size transition
 * to auto, and ::details-content is the UA's closed-content wrapper — the
 * pair modern browsers ship for exactly this. Reduced motion rides the
 * kit-wide floor, which caps every [data-sk] transition to 0.01ms. */
.sk-faq-item {
  interpolate-size: allow-keywords;
}
.sk-faq-item::details-content {
  block-size: 0;
  overflow-y: clip;
  opacity: 0;
  transition:
    block-size 0.35s var(--sk-ease-out),
    opacity 0.35s var(--sk-ease-out),
    content-visibility 0.35s allow-discrete;
}
.sk-faq-item[open]::details-content {
  block-size: auto;
  opacity: 1;
}

.sk-faq-q {
  list-style: none;
  /* A control: a fast double-toggle must not select its title. */
  -webkit-user-select: none;
  user-select: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--kit-space-3);
  padding-block: calc(var(--kit-air-row) * var(--kit-type-base));
  cursor: pointer;
}
.sk-faq-q::-webkit-details-marker {
  display: none;
}
.sk-faq-q:hover .sk-faq-q-text {
  color: var(--sk-accent);
}
/* A longer line than the answer's prose, off the same dial. */
.sk-faq-q-text {
  max-width: calc(var(--sk-measure) * 1.3);
  transition: color 0.2s var(--sk-ease-out);
}

/* Three kinds off `data-marker`, `cross` the BASE so an unknown or unresolved
 * value still draws one. A drawn kind must clear the atom's currentColor FILL
 * as well as its mask, or it paints a solid block. */
.sk-faq-marker {
  position: relative;
  flex: none;
  --sk-icon-size: var(--sk-faq-marker-size);
  color: var(--sk-accent);
  transition: transform 0.35s var(--sk-ease-out);
}
.sk-faq:not([data-marker="chevron"]) .sk-faq-marker {
  mask-image: none;
  background-color: transparent;
}
.sk-faq-marker::before,
.sk-faq-marker::after {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  background: currentColor;
}
.sk-faq-marker::before {
  width: 100%;
  height: var(--sk-icon-stroke);
}
.sk-faq-marker::after {
  width: var(--sk-icon-stroke);
  height: 100%;
}
.sk-faq-item[open] .sk-faq-marker {
  transform: rotate(45deg);
}

.sk-faq[data-marker="minus"] .sk-faq-item[open] .sk-faq-marker {
  transform: rotate(90deg);
}
/* A parent's transition never reaches a pseudo-element. */
.sk-faq[data-marker="minus"] .sk-faq-marker::before {
  transition: transform 0.35s var(--sk-ease-out);
}
.sk-faq[data-marker="minus"] .sk-faq-item[open] .sk-faq-marker::before {
  transform: scaleX(0);
}

/* The glyph fills half its own viewBox, so `contain` would draw it at half the
 * plus's width. Scale the MASK, not the box (176 not 200: the round caps ride
 * outside the path). Its baked stroke costs a heavier line than the other two. */
.sk-faq[data-marker="chevron"] .sk-faq-marker {
  mask-size: 176%;
}
.sk-faq[data-marker="chevron"] .sk-faq-marker::before,
.sk-faq[data-marker="chevron"] .sk-faq-marker::after {
  content: none;
}
.sk-faq[data-marker="chevron"] .sk-faq-item[open] .sk-faq-marker {
  transform: rotate(180deg);
}

.sk-faq[data-marker-side="left"] .sk-faq-q {
  justify-content: flex-start;
}
.sk-faq[data-marker-side="left"] .sk-faq-marker {
  order: -1;
}
.sk-faq[data-marker-side="left"] .sk-faq-a {
  margin-inline-start: calc(var(--sk-faq-marker-size) + var(--kit-space-3));
}

.sk-faq-a {
  margin: 0;
  max-width: var(--sk-measure);
  padding-bottom: calc(var(--kit-air-row) * var(--kit-type-base));
  color: var(--sk-ink-muted);
}

/* ── The list VARIANT. `.sk-ruled` and `data-cap` stay unconditional on the
 * container and each variant subtracts from that base, `dividers` adding
 * nothing; the two card looks wear .sk-card, emitted by {.eq variant …}. */

/* boxed — the shared card surface at LIST granularity, seams separating rows. */
.sk-faq[data-variant="boxed"] .sk-faq-items {
  --sk-card-pad: 0;
}
.sk-faq[data-variant="boxed"] .sk-faq-items:not(:has(.sk-faq-item)) {
  display: none;
}
.sk-faq:is([data-variant="boxed"], [data-variant="plain"]) .sk-faq-item {
  border-top: 0;
}
.sk-faq:is([data-variant="boxed"], [data-variant="plain"]) .sk-faq-items[data-cap] > :last-child {
  border-bottom: 0;
}
.sk-faq:is([data-variant="boxed"], [data-variant="cards"]) .sk-faq-q,
.sk-faq:is([data-variant="boxed"], [data-variant="cards"]) .sk-faq-a {
  padding-inline: var(--kit-space-4);
}
.sk-faq[data-variant="boxed"] .sk-faq-q {
  box-shadow: inset 0 calc(-1 * var(--sk-border-width)) 0 var(--sk-stroke);
}
/* The container's edge is already under the last row, so its seam moves to the
 * panel's TOP, tracking HEIGHT: `[open]` clears at frame 0 of the close. It
 * stays square against a themed corner arc; clipping costs more than it fixes. */
.sk-faq[data-variant="boxed"] .sk-faq-item:last-child .sk-faq-q {
  box-shadow: none;
}
.sk-faq[data-variant="boxed"] .sk-faq-item:last-child::details-content {
  box-shadow: inset 0 var(--sk-border-width) 0 var(--sk-stroke);
}
/* Both hairlines are INSET: at zero height an inner shadow paints nothing,
 * where a border would. Opacity 1 makes the panel wipe, not fade. */
.sk-faq[data-variant="boxed"] .sk-faq-item::details-content {
  opacity: 1;
  box-shadow: inset 0 calc(-1 * var(--sk-border-width)) 0 var(--sk-stroke);
}
.sk-faq[data-variant="boxed"] .sk-faq-a {
  padding-top: calc(var(--kit-air-row) * var(--kit-type-base));
}

/* cards: the shared CARD SURFACE per row. The item zeroes the home's inset
 * so the summary's hit target reaches the card edges. */
.sk-faq[data-variant="cards"] .sk-faq-items {
  display: flex;
  flex-direction: column;
  gap: var(--kit-space-2);
}
.sk-faq[data-variant="cards"] .sk-faq-item {
  --sk-card-pad: 0;
}
/* Scoped by NEGATION: keyed positively these go inert on an empty variant,
 * which still paints the ruled base. The scope is load-bearing either way,
 * since visibleWhen only hides a knob and a stale value out-cascades the card. */
.sk-faq:not(
    [data-variant="boxed"],
    [data-variant="cards"],
    [data-variant="plain"]
  )[data-first-divider=""]
  .sk-faq-items
  > :first-child {
  border-top: 0;
}
.sk-faq:not(
    [data-variant="boxed"],
    [data-variant="cards"],
    [data-variant="plain"]
  )[data-last-divider=""]
  .sk-faq-items[data-cap]
  > :last-child {
  border-bottom: 0;
}

/* Forced colors drop box-shadow and force background-color to Canvas, fusing
 * boxed's rows and erasing the marker, which is background paint. The UA
 * triangle is already off, so a row would carry no affordance at all. */
@media (forced-colors: active) {
  .sk-faq[data-variant="boxed"] .sk-faq-item + .sk-faq-item {
    border-top: var(--sk-border-width) solid CanvasText;
  }
  .sk-faq-marker {
    background-color: CanvasText;
  }
  .sk-faq-marker::before,
  .sk-faq-marker::after {
    background: CanvasText;
  }
  .sk-faq[data-variant="boxed"] .sk-faq-item[open]::details-content {
    border-top: var(--sk-border-width) solid CanvasText;
  }
}
