/* ============================================================
   Kana — editorial layer: Journal + Store (platforms / Google Play)
   Same language as global.css: clay + terracotta, 1px hairlines,
   radius 0, Fraunces display, JetBrains Mono labels.
   Loaded site-wide after global.css + a11y.css.
   ============================================================ */

/* ═══════════════════════════ STORE ═══════════════════════════ */

/* Platform filter (plain links → crawlable, works without JS) */
.ks-store-archive__body { display: flex; flex-direction: column; gap: var(--ks-space-lg); }
.ks-store-filter {
  max-width: var(--ks-max-w); width: 100%; margin-inline: auto;
  display: flex; align-items: center; justify-content: space-between; gap: var(--ks-space-md); flex-wrap: wrap;
}
.ks-store-filter__list { display: flex; flex-wrap: wrap; gap: 0; border: var(--ks-border); background: var(--ks-white); }
.ks-store-filter__list li + li { border-left: var(--ks-border); }
.ks-store-filter__chip {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 1.25rem;
  font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase;
  color: var(--ks-ink-soft); transition: background var(--ks-dur) var(--ks-ease), color var(--ks-dur) var(--ks-ease);
}
.ks-store-filter__chip:hover { background: var(--ks-canvas); color: var(--ks-ink); }
.ks-store-filter__chip.is-active { background: var(--ks-ink); color: var(--ks-white); }
.ks-store-filter__count { font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wide); text-transform: uppercase; color: var(--ks-ink-subtle); }

/* Grid is now a <ul>: stretch each card to its cell */
.ks-store-grid { list-style: none; padding: 0; width: 100%; }
.ks-store-grid__item { display: flex; }
.ks-store-grid__item > .ks-store-card { flex: 1; }
.ks-store-grid__empty { grid-column: 1 / -1; padding: var(--ks-space-xl) 0; text-align: center; color: var(--ks-ink-subtle); }
.ks-store-grid__empty a { color: var(--ks-signal-text); text-decoration: underline; text-underline-offset: 3px; }
.ks-store-card:focus-visible { outline-offset: 4px; }
.ks-store-card .ks-svc-archive-card__cover { position: relative; display: grid; place-items: center; }
.ks-store-card__placeholder { font-family: var(--ks-display); font-size: 3rem; color: var(--ks-line); }
.ks-store-card__track {
  position: absolute; top: 12px; left: 12px;
  font-family: var(--ks-mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase;
  background: var(--ks-ink); color: var(--ks-white); padding: 4px 8px;
}
.ks-store-card__platforms { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 var(--ks-space-sm); }
.ks-store-card__platforms li {
  display: inline-flex; align-items: center; gap: 5px;
  font-family: var(--ks-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--ks-ink-soft); border: 1px solid var(--ks-line); padding: 3px 8px; background: var(--ks-white);
}
.ks-store-card__platforms li .ks-icon { opacity: .75; }
.ks-store-card__platforms .ks-store-card__play { border-color: rgba(184,80,58,.35); color: var(--ks-signal-text); background: rgba(208,98,71,.06); }

/* Product hero: external store buttons + release-track pill */
.ks-store-badges { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--ks-space-sm); margin-top: var(--ks-space-md); }
.ks-store-badge {
  display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 1.1rem;
  background: var(--ks-ink); color: var(--ks-white); border: 1px solid var(--ks-ink);
  transition: background var(--ks-dur) var(--ks-ease), border-color var(--ks-dur) var(--ks-ease);
}
.ks-store-badge:hover { background: var(--ks-signal-dk); border-color: var(--ks-signal-dk); }
.ks-store-badge__text { display: flex; flex-direction: column; line-height: 1.1; text-align: left; }
.ks-store-badge__kicker { font-family: var(--ks-mono); font-size: 9.5px; letter-spacing: 0.1em; text-transform: uppercase; opacity: .8; }
.ks-store-badge__label { font-family: var(--ks-sans); font-size: 1rem; font-weight: 500; }
.ks-store-track {
  display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 12px;
  font-family: var(--ks-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ks-signal-text); border: 1px dashed rgba(184,80,58,.45);
}
.ks-store-hero__ctas .ks-btn .ks-icon { margin-right: 2px; }

/* App details + what's new */
.ks-store-details { border-top: var(--ks-border); }
.ks-store-details__inner { display: grid; gap: var(--ks-space-xl); }
.ks-store-details__inner--split { grid-template-columns: 1.2fr 1fr; }
.ks-store-details__list { margin: var(--ks-space-lg) 0 0; border-top: var(--ks-border); }
.ks-store-details__row {
  display: grid; grid-template-columns: 9rem 1fr; gap: var(--ks-space-md);
  padding: 0.9rem 0; border-bottom: var(--ks-border); align-items: baseline;
}
.ks-store-details__row dt { font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-store-details__row dd { margin: 0; color: var(--ks-ink); font-size: var(--ks-size-base); }
.ks-store-details__row dd.is-mono { font-family: var(--ks-mono); font-size: var(--ks-size-sm); word-break: break-all; }
.ks-store-details__row dd a { color: var(--ks-signal-text); text-decoration: underline; text-underline-offset: 3px; }
.ks-store-whatsnew { background: var(--ks-canvas); border: var(--ks-border); border-top: 3px solid var(--ks-signal); padding: clamp(1.5rem, 3vw, 2.25rem); align-self: start; }
.ks-store-whatsnew__h { font-family: var(--ks-display); font-weight: 400; font-size: var(--ks-size-lg); margin: 6px 0 var(--ks-space-md); }
.ks-store-whatsnew__list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.ks-store-whatsnew__list li { display: grid; grid-template-columns: 18px 1fr; gap: 10px; color: var(--ks-ink-soft); line-height: 1.55; }
.ks-store-whatsnew__list .ks-icon { color: var(--ks-signal); margin-top: 4px; }

/* Journal stories on a product page */
.ks-store-stories .ks-jstory-grid { margin-top: var(--ks-space-lg); }

/* UPI form labels (were placeholder-only) */
.ks-store-upi__form { display: flex; flex-direction: column; gap: 6px; }
.ks-store-upi__label { font-family: var(--ks-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ks-ink-soft); margin-top: 6px; }
.ks-store-upi__label-hint { text-transform: none; letter-spacing: 0; font-family: var(--ks-sans); color: var(--ks-ink-subtle); }
.ks-store-upi__form [aria-invalid="true"] { border-color: var(--ks-col-declined, #c53030); }
.ks-store-upi__err { color: var(--ks-col-declined, #c53030); font-size: var(--ks-size-sm); }
.ks-store-upi__done:focus { outline: none; }

@media (max-width: 900px) {
  .ks-store-details__inner--split { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .ks-store-filter__list { width: 100%; overflow-x: auto; flex-wrap: nowrap; }
  .ks-store-filter__chip { white-space: nowrap; }
  .ks-store-details__row { grid-template-columns: 1fr; gap: 2px; }
  .ks-store-badge { flex: 1 1 100%; justify-content: center; }
}

/* ═══════════════════════════ JOURNAL INDEX ═══════════════════════════ */

.ks-journal { background: var(--ks-white); }

.ks-journal-mast {
  position: relative; overflow: hidden;
  background: var(--ks-canvas);
  border-bottom: var(--ks-border);
  padding: clamp(3rem, 7vw, 6rem) var(--ks-gutter) clamp(2.5rem, 5vw, 4rem);
  background-image:
    linear-gradient(rgba(208,98,71,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(208,98,71,.045) 1px, transparent 1px);
  background-size: 36px 36px;
}
.ks-journal-mast__inner {
  position: relative; z-index: 1;
  max-width: var(--ks-max-w); margin-inline: auto;
  display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: var(--ks-space-xl); align-items: end;
}
.ks-journal-mast__h1 {
  font-family: var(--ks-display); font-weight: 300;
  font-size: clamp(2.6rem, 6.5vw, 5.5rem); line-height: 1.02; letter-spacing: -0.035em;
  margin: 0; max-width: 14ch;
}
.ks-journal-mast__h1 em { font-style: italic; color: var(--ks-signal); }
.ks-journal-mast__intro { margin-top: var(--ks-space-md); font-size: var(--ks-size-md); color: var(--ks-ink-soft); max-width: 46ch; line-height: 1.6; }
.ks-journal-mast__aside { display: flex; flex-direction: column; gap: var(--ks-space-md); }
.ks-journal-mast__stat { display: flex; align-items: baseline; gap: 10px; margin: 0; }
.ks-journal-mast__stat strong { font-family: var(--ks-display); font-weight: 500; font-size: 3rem; line-height: 1; letter-spacing: -0.04em; }
.ks-journal-mast__stat span { font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-journal-mast__mark {
  position: absolute; right: -2rem; bottom: -3.5rem; z-index: 0;
  font-family: var(--ks-display); font-size: clamp(8rem, 22vw, 18rem); line-height: 1;
  color: var(--ks-ink); opacity: .035; pointer-events: none; user-select: none;
}

.ks-journal-search { display: flex; align-items: center; background: var(--ks-white); border: 1px solid var(--ks-line); position: relative; }
.ks-journal-search:focus-within { border-color: var(--ks-signal-dk); box-shadow: var(--ks-focus-ring); }
.ks-journal-search__icon { position: absolute; left: 14px; color: var(--ks-ink-subtle); pointer-events: none; }
.ks-journal-search input[type="search"] {
  flex: 1; min-width: 0; min-height: 48px; border: 0; background: transparent; padding: 0 0.75rem 0 2.6rem;
  font: inherit; font-size: var(--ks-size-sm); color: var(--ks-ink);
}
.ks-journal-search input[type="search"]:focus-visible { outline: none; box-shadow: none; }
.ks-journal-search__btn {
  min-height: 48px; padding: 0 1.1rem; border-left: 1px solid var(--ks-line);
  font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink);
}
.ks-journal-search__btn:hover { background: var(--ks-ink); color: var(--ks-white); }

/* Topic chips */
.ks-journal-topics { border-bottom: var(--ks-border); background: var(--ks-white); }
.ks-journal-topics__list {
  max-width: var(--ks-max-w); margin-inline: auto; padding: 0 var(--ks-gutter);
  list-style: none; display: flex; gap: 0; overflow-x: auto; scrollbar-width: thin;
}
.ks-journal-topics__chip {
  display: inline-flex; align-items: center; gap: 7px; min-height: 52px; padding: 0 1.1rem;
  font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wide); text-transform: uppercase; white-space: nowrap;
  color: var(--ks-ink-soft); border-bottom: 2px solid transparent; margin-bottom: -1px;
  transition: color var(--ks-dur) var(--ks-ease), border-color var(--ks-dur) var(--ks-ease);
}
.ks-journal-topics__chip:hover { color: var(--ks-ink); border-bottom-color: var(--ks-line); }
.ks-journal-topics__chip.is-active { color: var(--ks-ink); border-bottom-color: var(--ks-signal); }
.ks-journal-topics__count { font-size: 10px; color: var(--ks-ink-subtle); }

.ks-journal-section-h {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--ks-mono); font-weight: 500; font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase;
  color: var(--ks-ink-soft); margin: 0;
}
.ks-journal-section-h .ks-icon { color: var(--ks-signal); }

/* Lead story */
.ks-journal-lead { max-width: var(--ks-max-w); margin-inline: auto; padding: var(--ks-space-xl) var(--ks-gutter) 0; }
.ks-journal-lead__label { font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); margin-bottom: var(--ks-space-sm); }

/* Launch log */
.ks-journal-launches { max-width: var(--ks-max-w); margin-inline: auto; padding: var(--ks-space-xl) var(--ks-gutter) 0; }
.ks-journal-launches__head { display: flex; justify-content: space-between; align-items: center; gap: var(--ks-space-md); padding-bottom: var(--ks-space-sm); border-bottom: 1px solid var(--ks-ink); }
.ks-journal-launches__store { font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wide); text-transform: uppercase; color: var(--ks-signal-text); }
.ks-journal-launches__store:hover { text-decoration: underline; text-underline-offset: 3px; }
.ks-journal-launches__list { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.ks-journal-launches__list > li { border-bottom: var(--ks-border); }
.ks-journal-launches__list > li + li { border-left: var(--ks-border); }

/* Feed */
.ks-journal-feed { max-width: var(--ks-max-w); margin-inline: auto; padding: var(--ks-space-xl) var(--ks-gutter) var(--ks-space-2xl); }
.ks-journal-feed > .ks-journal-section-h { margin-bottom: var(--ks-space-md); }
.ks-journal-pagination { border-top: 0; padding-inline: 0; margin-top: var(--ks-space-xl); flex-wrap: wrap; }
.ks-journal-empty { padding: var(--ks-space-2xl) 0; text-align: center; border: 1px dashed var(--ks-line); }
.ks-journal-empty__title { font-family: var(--ks-display); font-size: var(--ks-size-xl); margin-bottom: var(--ks-space-xs); }
.ks-journal-empty a { color: var(--ks-signal-text); text-decoration: underline; text-underline-offset: 3px; }

/* CTA band */
.ks-journal-cta { background: var(--ks-ink); color: var(--ks-white); padding: var(--ks-space-2xl) var(--ks-gutter); }
.ks-journal-cta__inner { max-width: var(--ks-max-w); margin-inline: auto; display: grid; grid-template-columns: 1.4fr 1fr auto; gap: var(--ks-space-lg); align-items: center; }
.ks-journal-cta__h { font-family: var(--ks-display); font-weight: 300; font-size: clamp(1.9rem, 4vw, 3rem); line-height: 1.08; letter-spacing: -0.03em; color: var(--ks-white); margin: 0; }
.ks-journal-cta__h em { color: var(--ks-signal-lt); }
.ks-journal-cta__text { color: rgba(255,255,255,.72); margin: 0; }

/* ── Story card (shared: index, launch log, related, product page) ── */
.ks-jstory-grid { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ks-space-lg) var(--ks-space-md); }
.ks-jstory-grid > li { display: flex; }
.ks-jstory-grid > li > .ks-jcard { flex: 1; }

.ks-jcard { position: relative; display: flex; flex-direction: column; background: var(--ks-white); }
.ks-jcard__media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--ks-canvas-alt); border: var(--ks-border); }
.ks-jcard__img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ks-ease); }
.ks-jcard:hover .ks-jcard__img { transform: scale(1.035); }
.ks-jcard__placeholder { position: absolute; inset: 0; display: grid; place-items: center;
  background-image: linear-gradient(rgba(208,98,71,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(208,98,71,.06) 1px, transparent 1px); background-size: 28px 28px; }
.ks-jcard__placeholder span { font-family: var(--ks-display); font-size: 3rem; color: var(--ks-line); }
.ks-jcard__body { display: flex; flex-direction: column; gap: 10px; padding-top: var(--ks-space-sm); flex: 1; }
.ks-jcard__kicker { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-family: var(--ks-mono); font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-jcard__badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; background: var(--ks-signal-dk); color: var(--ks-white); letter-spacing: 0.1em; }
.ks-jcard__product { color: var(--ks-signal-text); }
.ks-jcard__title { font-family: var(--ks-display); font-weight: 400; font-size: clamp(1.2rem, 1.6vw, 1.45rem); line-height: 1.2; letter-spacing: -0.015em; margin: 0; color: var(--ks-ink); }
.ks-jcard__link { color: inherit; background-image: linear-gradient(currentColor, currentColor); background-size: 0 1px; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--ks-dur-slow) var(--ks-ease); }
.ks-jcard__link::after { content: ''; position: absolute; inset: 0; z-index: 1; }
.ks-jcard:hover .ks-jcard__link, .ks-jcard__link:focus-visible { background-size: 100% 1px; }
.ks-jcard__link:focus-visible { outline: none; }
.ks-jcard:has(.ks-jcard__link:focus-visible) { outline: 2px solid var(--ks-signal-dk); outline-offset: 6px; }
.ks-jcard__summary { color: var(--ks-ink-soft); font-size: var(--ks-size-sm); line-height: 1.65; margin: 0; }
.ks-jcard__meta { margin-top: auto; padding-top: 6px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-family: var(--ks-mono); font-size: 11px; letter-spacing: 0.04em; color: var(--ks-ink-subtle); }
.ks-jcard__author { display: inline-flex; align-items: center; gap: 8px; color: var(--ks-ink-soft); }
.ks-jcard__avatar { border-radius: 50%; width: 28px; height: 28px; }

/* Lead variant: big split */
.ks-jcard--lead { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 0; border: var(--ks-border); }
.ks-jcard--lead .ks-jcard__media { aspect-ratio: auto; min-height: 420px; border: 0; border-right: var(--ks-border); }
.ks-jcard--lead .ks-jcard__body { padding: clamp(1.5rem, 3.5vw, 3rem); justify-content: center; gap: var(--ks-space-sm); background: var(--ks-canvas); }
.ks-jcard--lead .ks-jcard__title { font-weight: 300; font-size: clamp(1.9rem, 3.6vw, 3rem); line-height: 1.08; letter-spacing: -0.03em; }
.ks-jcard--lead .ks-jcard__summary { font-size: var(--ks-size-md); }
.ks-jcard--lead .ks-jcard__meta { margin-top: var(--ks-space-sm); }
.ks-jcard__more { display: inline-flex; align-items: center; gap: 8px; margin-top: var(--ks-space-sm); font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-signal-text); }
.ks-jcard--lead:hover .ks-jcard__more .ks-icon { transform: translateX(4px); }
.ks-jcard__more .ks-icon { transition: transform var(--ks-dur) var(--ks-ease); }

/* Compact variant: launch log rows */
.ks-jcard--compact { padding: var(--ks-space-md) var(--ks-space-md) var(--ks-space-md) 0; background: transparent; height: 100%; }
.ks-journal-launches__list > li + li .ks-jcard--compact { padding-left: var(--ks-space-md); }
.ks-jcard--compact .ks-jcard__body { padding-top: 0; }
.ks-jcard--compact .ks-jcard__title { font-size: 1.15rem; }
.ks-jcard--compact:hover { background: var(--ks-canvas); }

/* Compact grid on product pages: 3 → fewer columns */
.ks-jstory-grid--compact { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }

@media (max-width: 1024px) {
  .ks-jstory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ks-journal-cta__inner { grid-template-columns: 1fr; }
}
@media (max-width: 860px) {
  .ks-journal-mast__inner { grid-template-columns: 1fr; gap: var(--ks-space-lg); }
  .ks-jcard--lead { grid-template-columns: 1fr; }
  .ks-jcard--lead .ks-jcard__media { min-height: 0; aspect-ratio: 16 / 10; border-right: 0; border-bottom: var(--ks-border); }
  .ks-journal-launches__list > li + li { border-left: 0; }
  .ks-journal-launches__list > li + li .ks-jcard--compact { padding-left: 0; }
}
@media (max-width: 640px) {
  .ks-jstory-grid { grid-template-columns: 1fr; }

}

/* ═══════════════════════════ STORY (single post) ═══════════════════════════ */

.ks-story { background: var(--ks-white); }
.ks-story .ks-read-progress { width: 100%; transform: scaleX(0); transform-origin: 0 50%; transition: none; }

.ks-story-head { max-width: 860px; margin-inline: auto; padding: clamp(2rem, 5vw, 4rem) var(--ks-gutter) var(--ks-space-lg); }
.ks-story-head .ks-breadcrumb { margin-bottom: var(--ks-space-lg); padding: 0; }
.ks-story-head__kicker { display: flex; align-items: center; gap: 12px; font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; }
.ks-story-head__cat { color: var(--ks-signal-text); }
.ks-story-head__cat:hover { text-decoration: underline; text-underline-offset: 3px; }
.ks-story-head__title {
  font-family: var(--ks-display); font-weight: 300; font-optical-sizing: auto;
  font-size: clamp(2.2rem, 5.5vw, 4.2rem); line-height: 1.04; letter-spacing: -0.035em;
  margin: var(--ks-space-md) 0 0; color: var(--ks-ink); text-wrap: balance;
}
.ks-story-head__dek { margin-top: var(--ks-space-md); font-family: var(--ks-display); font-weight: 300; font-style: italic; font-size: clamp(1.15rem, 2vw, 1.45rem); line-height: 1.5; color: var(--ks-ink-soft); max-width: 46ch; text-wrap: pretty; }
.ks-story-head__byline { margin-top: var(--ks-space-lg); padding-top: var(--ks-space-md); border-top: var(--ks-border); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--ks-space-md); }
.ks-story-head__author { display: flex; align-items: center; gap: 12px; }
.ks-story-head__avatar { border-radius: 50%; width: 44px; height: 44px; }
.ks-story-head__name { display: block; font-weight: 500; color: var(--ks-ink); }
.ks-story-head__dates { display: block; font-family: var(--ks-mono); font-size: 11.5px; letter-spacing: 0.03em; color: var(--ks-ink-subtle); }

.ks-share { list-style: none; padding: 0; display: flex; gap: 0; border: var(--ks-border); }
.ks-share li + li { border-left: var(--ks-border); }
.ks-share__btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-width: 44px; min-height: 44px; padding: 0 12px; color: var(--ks-ink-soft); background: var(--ks-white); transition: background var(--ks-dur) var(--ks-ease), color var(--ks-dur) var(--ks-ease); }
.ks-share__btn:hover { background: var(--ks-ink); color: var(--ks-white); }
.ks-share__label { font-family: var(--ks-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; }
.ks-share__x { font-size: 15px; line-height: 1; }

.ks-story-figure { max-width: 1200px; margin: 0 auto; padding-inline: var(--ks-gutter); }
.ks-story-figure__img { width: 100%; height: auto; max-height: 680px; object-fit: cover; border: var(--ks-border); }
.ks-story-figure__cap { margin-top: 10px; font-family: var(--ks-mono); font-size: 11.5px; color: var(--ks-ink-subtle); }

/* Body + sticky TOC */
.ks-story-layout { max-width: 1200px; margin-inline: auto; padding: var(--ks-space-xl) var(--ks-gutter) var(--ks-space-2xl); display: grid; grid-template-columns: minmax(0, 220px) minmax(0, 720px); justify-content: center; gap: var(--ks-space-xl); }
.ks-story-layout--no-toc, .ks-story-layout:has(> .ks-story-toc[hidden]) { grid-template-columns: minmax(0, 720px); }
.ks-story-toc { position: sticky; top: calc(64px + 1.5rem); align-self: start; max-height: calc(100vh - 7rem); overflow-y: auto; }
.ks-story-toc__summary { list-style: none; cursor: pointer; font-family: var(--ks-mono); font-size: 11px; letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); padding-bottom: 10px; border-bottom: var(--ks-border); margin-bottom: 10px; }
.ks-story-toc__summary::-webkit-details-marker { display: none; }
.ks-story-toc .ks-toc__list { list-style: none; padding: 0; counter-reset: toc; }
.ks-story-toc .ks-toc__item--h2 { counter-increment: toc; }
.ks-story-toc .ks-toc__link { display: block; position: relative; padding: 6px 0 6px 14px; font-size: 0.85rem; line-height: 1.45; color: var(--ks-ink-soft); border-left: 2px solid var(--ks-line); }
.ks-story-toc .ks-toc__item--h3 .ks-toc__link { padding-left: 26px; font-size: 0.8rem; }
.ks-story-toc .ks-toc__link:hover { color: var(--ks-ink); border-left-color: var(--ks-ink-subtle); }
.ks-story-toc .ks-toc__link.is-active { color: var(--ks-signal-text); border-left-color: var(--ks-signal); font-weight: 500; }

.ks-story-main { min-width: 0; }

/* In short */
.ks-story-tldr { border: var(--ks-border); border-left: 3px solid var(--ks-signal); background: var(--ks-canvas); padding: var(--ks-space-md) var(--ks-space-lg); margin-bottom: var(--ks-space-xl); }
.ks-story-tldr__h { display: flex; align-items: center; gap: 8px; font-family: var(--ks-mono); font-weight: 500; font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink); margin: 0 0 var(--ks-space-sm); }
.ks-story-tldr__h .ks-icon { color: var(--ks-signal); }
.ks-story-tldr__list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ks-story-tldr__list li { position: relative; padding-left: 18px; color: var(--ks-ink-soft); line-height: 1.55; }
.ks-story-tldr__list li::before { content: ''; position: absolute; left: 0; top: .65em; width: 7px; height: 7px; background: var(--ks-signal); }

/* Prose upgrades (on top of .ks-journal-content) */
.ks-story-body { padding: 0 !important; font-size: 1.125rem; line-height: 1.8; color: var(--ks-ink-soft); }
.ks-story-body > p:first-of-type::first-letter { font-family: var(--ks-display); float: left; font-size: 4.2em; line-height: .85; padding: 6px 10px 0 0; color: var(--ks-ink); font-weight: 400; }
.ks-story-body h2 { font-family: var(--ks-display); font-weight: 400; font-size: clamp(1.55rem, 2.6vw, 2rem); line-height: 1.2; letter-spacing: -0.02em; margin: 2.6em 0 .7em; scroll-margin-top: 90px; }
.ks-story-body h3 { font-family: var(--ks-display); font-weight: 500; font-size: clamp(1.2rem, 2vw, 1.4rem); margin: 2em 0 .5em; scroll-margin-top: 90px; }
.ks-story-body h2:focus, .ks-story-body h3:focus { outline: none; }
.ks-story-body blockquote, .ks-story-body .wp-block-pullquote { border: 0; border-top: 1px solid var(--ks-ink); border-bottom: 1px solid var(--ks-ink); padding: var(--ks-space-md) 0; margin: var(--ks-space-xl) 0; font-family: var(--ks-display); font-size: clamp(1.3rem, 2.4vw, 1.75rem); font-style: italic; font-weight: 300; line-height: 1.4; color: var(--ks-ink); }
.ks-story-body blockquote cite { display: block; margin-top: 10px; font-family: var(--ks-mono); font-style: normal; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-story-body a { color: var(--ks-signal-text); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; border-bottom: 0; }
.ks-story-body a:hover { text-decoration-thickness: 2px; }
.ks-story-body figure { margin: var(--ks-space-xl) 0; }
.ks-story-body figcaption { font-family: var(--ks-mono); font-size: 11.5px; color: var(--ks-ink-subtle); margin-top: 8px; text-align: left; }
.ks-story-body img { border: var(--ks-border); }
.ks-story-body .alignwide { margin-inline: calc(-1 * min(8vw, 120px)); max-width: none; }
.ks-story-body table { width: 100%; border-collapse: collapse; font-size: .95rem; margin: var(--ks-space-lg) 0; }
.ks-story-body th, .ks-story-body td { text-align: left; padding: .7rem .8rem; border-bottom: var(--ks-border); }
.ks-story-body th { font-family: var(--ks-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ks-ink-subtle); background: var(--ks-canvas); }
.ks-story-body ul { list-style: disc; padding-left: 1.4em; }
.ks-story-body ol { list-style: decimal; padding-left: 1.6em; }
.ks-story-body ul ul { list-style: circle; }
.ks-story-body li { padding-left: 0.2em; }
.ks-story-body li::marker { color: var(--ks-signal); }
.ks-story-body mark { background: rgba(208,98,71,.16); color: inherit; padding: 0 2px; }

/* Featured product */
.ks-story-product { margin: var(--ks-space-2xl) 0 var(--ks-space-xl); display: grid; grid-template-columns: 240px 1fr; border: var(--ks-border); border-top: 3px solid var(--ks-signal); background: var(--ks-canvas); }
.ks-story-product__media { background: var(--ks-canvas-alt); display: grid; place-items: center; overflow: hidden; border-right: var(--ks-border); }
.ks-story-product__media img { width: 100%; height: 100%; object-fit: cover; }
.ks-story-product__body { padding: var(--ks-space-lg); display: flex; flex-direction: column; gap: 8px; }
.ks-story-product__h { font-family: var(--ks-display); font-weight: 400; font-size: var(--ks-size-xl); margin: 0; letter-spacing: -0.02em; }
.ks-story-product__v { font-family: var(--ks-mono); font-size: 12px; color: var(--ks-ink-subtle); letter-spacing: .04em; vertical-align: middle; }
.ks-story-product__tag { color: var(--ks-ink-soft); margin: 0; }
.ks-story-product__actions { display: flex; flex-wrap: wrap; gap: var(--ks-space-sm); margin-top: var(--ks-space-xs); }

/* FAQ */
.ks-story-faq { margin: var(--ks-space-2xl) 0 var(--ks-space-xl); }
.ks-story-faq__h { font-family: var(--ks-display); font-weight: 400; font-size: clamp(1.5rem, 2.6vw, 2rem); margin: 0 0 var(--ks-space-md); }
.ks-story-faq__item { border-top: var(--ks-border); }
.ks-story-faq__item:last-child { border-bottom: var(--ks-border); }
.ks-story-faq__q { list-style: none; display: flex; justify-content: space-between; align-items: center; gap: var(--ks-space-md); min-height: 56px; padding: var(--ks-space-sm) 0; cursor: pointer; font-weight: 500; color: var(--ks-ink); }
.ks-story-faq__q::-webkit-details-marker { display: none; }
.ks-story-faq__chev { flex-shrink: 0; color: var(--ks-ink-subtle); transition: transform var(--ks-dur) var(--ks-ease); }
.ks-story-faq__item[open] .ks-story-faq__chev { transform: rotate(180deg); color: var(--ks-signal); }
.ks-story-faq__a { padding: 0 0 var(--ks-space-md); color: var(--ks-ink-soft); line-height: 1.7; }

/* Foot: tags + author */
.ks-story-foot { margin-top: var(--ks-space-xl); display: flex; flex-direction: column; gap: var(--ks-space-lg); }
.ks-story-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.ks-story-tags__label { font-family: var(--ks-mono); font-size: 11px; letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-story-tags__list { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.ks-story-tags__list a { display: inline-flex; align-items: center; min-height: 32px; padding: 0 10px; border: var(--ks-border); font-size: var(--ks-size-sm); color: var(--ks-ink-soft); }
.ks-story-tags__list a:hover { border-color: var(--ks-ink); color: var(--ks-ink); }
.ks-story-author { display: grid; grid-template-columns: 64px 1fr; gap: var(--ks-space-md); padding: var(--ks-space-lg); border: var(--ks-border); background: var(--ks-canvas); }
.ks-story-author__avatar { border-radius: 50%; width: 64px; height: 64px; }
.ks-story-author__kicker { font-family: var(--ks-mono); font-size: 10.5px; letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-story-author__name { font-family: var(--ks-display); font-size: var(--ks-size-lg); margin: 2px 0 6px; }
.ks-story-author__bio { color: var(--ks-ink-soft); margin: 0; font-size: var(--ks-size-sm); line-height: 1.65; }

/* Previous / next */
.ks-story-pn { max-width: 1200px; margin-inline: auto; padding: 0 var(--ks-gutter); display: grid; grid-template-columns: 1fr 1fr; border-top: var(--ks-border); }
.ks-story-pn__link { display: flex; flex-direction: column; gap: 8px; padding: var(--ks-space-lg) var(--ks-space-md); transition: background var(--ks-dur) var(--ks-ease); }
.ks-story-pn__link:hover { background: var(--ks-canvas); }
.ks-story-pn__link--next { text-align: right; grid-column: 2; border-left: var(--ks-border); }
.ks-story-pn__dir { font-family: var(--ks-mono); font-size: 11px; letter-spacing: var(--ks-tracking-wider); text-transform: uppercase; color: var(--ks-ink-subtle); }
.ks-story-pn__title { font-family: var(--ks-display); font-size: var(--ks-size-lg); line-height: 1.25; color: var(--ks-ink); }

/* Related */
.ks-story-related { background: var(--ks-canvas); border-top: var(--ks-border); padding: var(--ks-space-2xl) var(--ks-gutter); }
.ks-story-related > * { max-width: var(--ks-max-w); margin-inline: auto; }
.ks-story-related__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--ks-space-lg); }
.ks-story-related__head a { font-family: var(--ks-mono); font-size: var(--ks-size-xs); letter-spacing: var(--ks-tracking-wide); text-transform: uppercase; color: var(--ks-signal-text); }
.ks-story-related .ks-jcard { background: transparent; }

@media (max-width: 1023px) {
  .ks-story-layout { grid-template-columns: minmax(0, 720px); }
  .ks-story-toc { position: static; max-height: none; border: var(--ks-border); padding: 0 var(--ks-space-md); }
  .ks-story-toc__summary { border-bottom: 0; margin: 0; padding: 14px 0; display: flex; justify-content: space-between; }
  .ks-story-toc__summary::after { content: '+'; font-size: 16px; color: var(--ks-ink-subtle); }
  .ks-story-toc__details[open] .ks-story-toc__summary::after { content: '–'; }
  .ks-story-toc__details[open] nav { padding-bottom: var(--ks-space-sm); }
  .ks-story-body .alignwide { margin-inline: 0; }
}
@media (max-width: 640px) {
  .ks-story-head__byline { flex-direction: column; align-items: flex-start; }
  .ks-story-product { grid-template-columns: 1fr; }
  .ks-story-product__media { border-right: 0; border-bottom: var(--ks-border); aspect-ratio: 16 / 9; }
  .ks-story-pn { grid-template-columns: 1fr; }
  .ks-story-pn__link--next { grid-column: 1; border-left: 0; border-top: var(--ks-border); }
  .ks-share__label { display: none; }
}

@media print {
  .ks-share, .ks-story-toc, .ks-story-pn, .ks-story-related, .ks-journal-cta, .ks-read-progress-wrap { display: none !important; }
  .ks-story-layout { display: block; padding: 0; }
  .ks-story-body a::after { content: ' (' attr(href) ')'; font-size: .8em; color: #555; }
}

/* ═════════════════ Spot illustrations (inc/illustrations.php) ═════════════════ */
:root {
  --ill-ink: var(--ks-ink, #1A1A18);
  --ill-accent: var(--ks-signal, #D06247);
  --ill-accent-soft: color-mix(in srgb, var(--ks-signal, #D06247) 16%, #fff);
  --ill-soft: var(--ks-canvas, #F5F0EA);
  --ill-soft-2: var(--ks-line, #D8CFC5);
}
.ks-ill { display: block; width: 100%; height: auto; overflow: visible; }
.ks-empty-ill { display: block; width: 200px; margin: 0 auto 8px; }
.ks-empty-ill { max-width: 70%; }
.ks-404__ill { width: min(320px, 80%); margin: 0 auto var(--ks-space-md, 1.5rem); }
.ks-support__ill { width: min(280px, 90%); margin-top: var(--ks-space-lg, 2.5rem); }
.ks-start-success__ill { width: 180px; margin-bottom: var(--ks-space-sm, 1rem); }
.ks-search-empty, .ks-store-grid__empty, .ks-journal-empty { text-align: center; }
@media (prefers-reduced-motion: no-preference) {
  .ks-empty-ill .ks-ill, .ks-caught-up__ill .ks-ill, .ks-404__ill .ks-ill, .ks-start-success__ill .ks-ill {
    animation: ks-ill-in 520ms cubic-bezier(0.2, 0, 0, 1) both;
  }
  @keyframes ks-ill-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
}
@media (max-width: 900px) { .ks-support__ill { display: none; } }

/* ═════════════════ 404 — the sleepy moon ═════════════════ */
.ks-404x {
  background: var(--ks-canvas);
  background-image: linear-gradient(color-mix(in srgb, var(--ks-signal) 5%, transparent) 1px, transparent 1px),
                    linear-gradient(90deg, color-mix(in srgb, var(--ks-signal) 5%, transparent) 1px, transparent 1px);
  background-size: 36px 36px;
  padding: clamp(2.5rem, 7vw, 6rem) var(--ks-gutter);
  min-height: 70vh; display: flex; align-items: center;
}
.ks-404x__inner { max-width: var(--ks-max-w); margin-inline: auto; width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.ks-404x__scene { position: relative; display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.ks-404x__ill { width: min(440px, 100%); }
.ks-404x__bubble {
  position: absolute; top: 4%; right: 4%; max-width: 15rem; margin: 0;
  background: var(--ks-white); border: 1px solid var(--ks-line); border-radius: 14px 14px 14px 4px;
  padding: .7rem 1rem; font-family: var(--ks-display); font-style: italic; font-size: 1rem; line-height: 1.4; color: var(--ks-ink);
  box-shadow: 0 8px 24px rgba(26, 26, 24, .08);
}
.ks-404x__poke { gap: .5rem; }
.ks-404x__h1 { font-family: var(--ks-display); font-weight: 300; font-size: clamp(2.4rem, 5.5vw, 4.4rem); line-height: 1.05; letter-spacing: -0.03em; margin: .75rem 0 1rem; text-wrap: balance; }
.ks-404x__h1 em { color: var(--ks-signal); }
.ks-404x__text { font-size: var(--ks-size-md); color: var(--ks-ink-soft); max-width: 46ch; margin: 0 0 1.5rem; }
.ks-404x__search { max-width: 30rem; margin-bottom: 1.5rem; }
.ks-404x__links ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .5rem; max-width: 34rem; }
.ks-404x__links a {
  display: flex; align-items: center; gap: .6rem; min-height: 48px; padding: 0 1rem;
  background: var(--ks-white); border: 1px solid var(--ks-line); color: var(--ks-ink); font-weight: 500;
  transition: border-color var(--ks-dur) var(--ks-ease), transform var(--ks-dur) var(--ks-ease);
}
.ks-404x__links a .ks-icon:first-child { color: var(--ks-signal-text); }
.ks-404x__go { margin-left: auto; opacity: .45; transition: transform var(--ks-dur) var(--ks-ease), opacity var(--ks-dur) var(--ks-ease); }
.ks-404x__links a:hover { border-color: var(--ks-ink); }
.ks-404x__links a:hover .ks-404x__go { opacity: 1; transform: translateX(3px); }

/* Moon behaviour: float + drifting z's; poke = eyes open, z's stop. */
.ks-404x .ks-ill-eye-open { transition: opacity .15s; }
.ks-404x__scene.is-awake .ks-ill-eye-open { opacity: 1; }
.ks-404x__scene.is-awake .ks-ill-eye-shut { opacity: 0; }
.ks-404x__scene.is-awake .ks-ill-zzz { opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  .ks-404x .ks-ill-float { animation: ks-moon-float 5s ease-in-out infinite; transform-origin: center; }
  .ks-404x .ks-ill-zzz text { animation: ks-zzz 3s ease-in infinite; }
  .ks-404x .ks-ill-zzz text:nth-child(2) { animation-delay: .6s; }
  .ks-404x .ks-ill-zzz text:nth-child(3) { animation-delay: 1.2s; }
  .ks-404x .ks-ill-page { animation: ks-page-drift 6s ease-in-out infinite; transform-origin: 207px 122px; }
  .ks-404x__scene.is-awake .ks-ill-moon { animation: ks-moon-jolt .4s ease-out; transform-origin: 140px 60px; }
  @keyframes ks-moon-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
  @keyframes ks-zzz { 0% { opacity: 0; transform: translate(0, 6px); } 30% { opacity: 1; } 100% { opacity: 0; transform: translate(6px, -10px); } }
  @keyframes ks-page-drift { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(-8deg) translateY(-4px); } }
  @keyframes ks-moon-jolt { 0% { transform: rotate(0); } 30% { transform: rotate(-8deg); } 70% { transform: rotate(5deg); } 100% { transform: rotate(0); } }
}
@media (max-width: 860px) {
  .ks-404x__inner { grid-template-columns: 1fr; text-align: left; }
  .ks-404x__ill { width: min(320px, 90%); }
  .ks-404x__bubble { position: static; max-width: none; }
}

/* Service illustrations sit inside the card's 16:9 frame instead of being cropped like photos. */
.ks-svc-archive-card__cover--ill { position: relative; background: var(--ks-canvas); }
/* Absolutely fitted: the SVG viewBox (xMidYMid meet) keeps the drawing whole and centred in the 16:9 frame. */
.ks-svc-archive-card__cover--ill .ks-ill { position: absolute; inset: 8% 6%; width: 88%; height: 84%; transition: transform .4s var(--ks-ease); }
.ks-svc-archive-card__facts { font-size: var(--ks-size-xs); font-weight: 600; color: var(--ks-ink-soft); margin-right: auto; }
.ks-svc-archive-card__foot { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.ks-svc-archive-card:hover .ks-svc-archive-card__cover--ill .ks-ill { transform: scale(1.04); }
.ks-svc-page-hero__placeholder--ill { display: grid; place-items: center; padding: 8%; }
.ks-svc-page-hero__placeholder--ill .ks-ill { width: 100%; max-width: 520px; height: auto; }
.ks-ill-embed { display: block; margin: 1.5rem auto; max-width: 420px; }

/* ═════════════════ Living service illustrations ═════════════════
   Each service drawing has a small story that plays on loop wherever the
   illustration is wrapped in .ks-ill-live (service hero, cards on hover).
   Everything is transform/opacity/dash only, and off for reduced motion. */
.ks-ill [class*="a-"] { transform-box: fill-box; }
@media (prefers-reduced-motion: no-preference) {
  .ks-ill-live .a-grid { animation: ksa-spin 24s linear infinite; transform-origin: center; }
  .ks-ill-live .a-draw { stroke-dasharray: 1; animation: ksa-draw 5s ease-in-out infinite; }
  .ks-ill-live .a-pen { animation: ksa-pen 5s ease-in-out infinite; transform-origin: 0% 100%; }
  .ks-ill-live .a-sw { animation: ksa-pop 5s ease-in-out infinite; transform-origin: bottom; }
  .ks-ill-live .a-sw2 { animation-delay: .25s; } .ks-ill-live .a-sw3 { animation-delay: .5s; }

  .ks-ill-live .a-bulb { animation: ksa-glow 3.2s ease-in-out infinite; transform-origin: center; }
  .ks-ill-live .a-step { animation: ksa-blink 4.5s ease-in-out infinite; transform-origin: center; }
  .ks-ill-live .a-line { stroke-dasharray: 1; animation: ksa-draw 4.5s ease-in-out infinite; }
  .ks-ill-live .a-step2, .ks-ill-live .a-line2 { animation-delay: .5s; }
  .ks-ill-live .a-step3, .ks-ill-live .a-line3 { animation-delay: 1s; }
  .ks-ill-live .a-cap { animation: ksa-bob 4s ease-in-out infinite; transform-origin: center; }

  .ks-ill-live .a-cursor { animation: ksa-cursor 5s ease-in-out infinite; }
  .ks-ill-live .a-hero { animation: ksa-press 5s ease-in-out infinite; transform-origin: center; }
  .ks-ill-live .a-code { animation: ksa-code 5s ease-in-out infinite; transform-origin: center; }
  .ks-ill-live .a-card { animation: ksa-pop 5s ease-in-out infinite; transform-origin: bottom; }
  .ks-ill-live .a-card2 { animation-delay: .2s; } .ks-ill-live .a-card3 { animation-delay: .4s; }

  .ks-ill-live .a-route { animation: ksa-dash 1.6s linear infinite; }
  .ks-ill-live .a-pin { animation: ksa-drop 3.6s cubic-bezier(.3,0,.2,1) infinite; transform-origin: bottom; }
  .ks-ill-live .a-bar { animation: ksa-grow 3.6s ease-in-out infinite; transform-origin: bottom; }
  .ks-ill-live .a-bar2 { animation-delay: .3s; } .ks-ill-live .a-bar3 { animation-delay: .6s; }

  .ks-ill-live .a-gear { animation: ksa-spin 9s linear infinite; transform-origin: center; }
  .ks-ill-live .a-led { animation: ksa-blink 1.6s steps(2, jump-none) infinite; }
  .ks-ill-live .a-current { animation: ksa-dash 1s linear infinite; }
  .ks-ill-live .a-plug { animation: ksa-plug 4s ease-in-out infinite; }

  .ks-ill-live .a-token { animation: ksa-token 4s ease-in-out infinite; }
  .ks-ill-live .a-diamond { animation: ksa-think 4s ease-in-out infinite; transform-origin: center; }
  .ks-ill-live .a-check { stroke-dasharray: 1; animation: ksa-check 4s ease-in-out infinite; }

  @keyframes ksa-spin { to { transform: rotate(360deg); } }
  @keyframes ksa-draw { 0% { stroke-dashoffset: 1; } 35%, 80% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: -1; } }
  @keyframes ksa-pen { 0%, 100% { transform: translate(0, 0) rotate(0); } 30% { transform: translate(-10px, 6px) rotate(-6deg); } 55% { transform: translate(-4px, 10px) rotate(-2deg); } }
  @keyframes ksa-pop { 0%, 60%, 100% { transform: scaleY(1); } 70% { transform: scaleY(1.18); } 80% { transform: scaleY(.94); } }
  @keyframes ksa-glow { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: .85; } }
  @keyframes ksa-blink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
  @keyframes ksa-bob { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-5px) rotate(-6deg); } }
  @keyframes ksa-cursor { 0%, 100% { transform: translate(0, 0); } 35% { transform: translate(-70px, -28px); } 45% { transform: translate(-70px, -26px) scale(.9); } 55% { transform: translate(-70px, -28px); } 80% { transform: translate(-20px, 8px); } }
  @keyframes ksa-press { 0%, 40%, 52%, 100% { transform: scale(1); } 45% { transform: scale(.96); } }
  @keyframes ksa-code { 0%, 40% { opacity: .35; } 50%, 90% { opacity: 1; } 100% { opacity: .35; } }
  @keyframes ksa-dash { to { stroke-dashoffset: -18; } }
  @keyframes ksa-drop { 0% { transform: translateY(-14px); opacity: 0; } 20% { transform: translateY(0); opacity: 1; } 28% { transform: scaleY(.88); } 36%, 85% { transform: none; opacity: 1; } 100% { opacity: 0; transform: translateY(-6px); } }
  @keyframes ksa-grow { 0%, 100% { transform: scaleY(.35); } 50% { transform: scaleY(1); } }
  @keyframes ksa-plug { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(4px); } }
  @keyframes ksa-token { 0% { transform: translate(0, 0); opacity: 0; } 10% { opacity: 1; } 45% { transform: translate(70px, 0); } 60% { transform: translate(70px, 0); } 85% { transform: translate(140px, 0); opacity: 1; } 100% { transform: translate(140px, 0); opacity: 0; } }
  @keyframes ksa-think { 0%, 45%, 65%, 100% { transform: rotate(0); } 52% { transform: rotate(8deg); } 58% { transform: rotate(-6deg); } }
  @keyframes ksa-check { 0%, 75% { stroke-dashoffset: 1; } 88%, 100% { stroke-dashoffset: 0; } }
  /* Cards: only animate on hover/focus so a grid of six isn't busy. */
  .ks-svc-archive-card:not(:hover):not(:focus-within) .ks-ill-live * { animation: none; }
}

/* Homepage service cards: same drawings as the services page, animated on hover. */
.ks-svc-card2__top { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.ks-svc-card2__ill { width: 112px; height: 76px; flex-shrink: 0; margin: -.5rem -.5rem 0 0; }
.ks-svc-card2__ill .ks-ill { width: 100%; height: 100%; }
.ks-svc-card2__foot { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-top: .9rem; border-top: 1px solid var(--ks-line); }
.ks-svc-card2__price { font-size: var(--ks-size-xs); font-weight: 600; color: var(--ks-ink-soft); }
.ks-svc-card2__foot .ks-svc-card2__arrow { margin-left: auto; display: inline-flex; color: var(--ks-ink-subtle); }
a.ks-svc-card2:hover .ks-svc-card2__foot .ks-arrow--right { transform: translateX(4px); }
@media (prefers-reduced-motion: no-preference) {
  a.ks-svc-card2:not(:hover):not(:focus-visible) .ks-ill-live * { animation: none; }
}
