/* Kshanti — komponenty (CSS). Wartości wyłącznie z tokens.json (var(--…)).
   Prefiks ks- dla komponentów; klasy stylów tekstu (.display, .h1, .body…) generuje tokens.css. */

/* ——— Baza ——— */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-padding-top: calc(var(--header-height) + var(--space-4)); -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg-page);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 17px;
  line-height: 28px;
  font-feature-settings: "kern";
}
img { max-width: 100%; height: auto; display: block; }
:focus-visible { outline: var(--focus-width) solid var(--focus-ring); outline-offset: var(--focus-width); }
.display, .h1, .h2, .h3 { color: var(--ink-heading); margin: 0; text-wrap: balance; }
.numeral { font-variant-numeric: lining-nums; }
.eyebrow { text-transform: uppercase; }
.price { font-variant-numeric: tabular-nums; }
.ks-svg { width: 20px; height: 20px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ks-svg--fill { fill: currentColor; stroke: none; }
.ks-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Responsywne rozmiary nagłówków (tokeny = desktop) */
@media (max-width: 640px) {
  .display { font-size: 40px; line-height: 44px; }
  .h1 { font-size: 34px; line-height: 40px; }
  .h2 { font-size: 28px; line-height: 34px; }
  .h3 { font-size: 24px; line-height: 28px; }
  .lead { font-size: 18px; line-height: 28px; }
  .numeral { font-size: 36px; line-height: 36px; }
}

/* ——— Tła sekcji (grounds) ———
   Sąsiednie sekcje NIGDY na tym samym tle. Ciemne tła przepinają tokeny tekstu i akcji. */
.ks-ground-page  { background: var(--bg-page); }
.ks-ground-sand  { background: var(--bg-sand); }
.ks-ground-sage  { background: var(--bg-sage); }
.ks-ground-mist  { background: var(--bg-mist); }
.ks-ground-forest, .ks-ground-deep {
  background: var(--bg-forest);
  color: var(--ink-inverse);
  --ink: var(--ink-inverse);
  --ink-heading: var(--ink-inverse);
  --ink-muted: var(--ink-inverse-muted);
  --line: var(--line-inverse);
  --link: var(--ink-inverse);
  --accent: var(--focus-ring-inverse);
  --action: var(--action-inverse);
  --action-hover: var(--ink-inverse-muted);
  --on-action: var(--on-action-inverse);
  --action-soft: var(--line-inverse);
  --focus-ring: var(--focus-ring-inverse);
  --surface: var(--bg-deep);
  --surface-sunken: var(--bg-forest);
}
.ks-ground-deep { background: var(--bg-deep); --surface: var(--bg-forest); --surface-sunken: var(--bg-deep); }
/* Na ciemnym tle karty są ciemniejszym panelem z hairline; tinty kodów zastępuje surface-sunken */
.ks-ground-forest .ks-card, .ks-ground-deep .ks-card,
.ks-ground-forest .ks-quote, .ks-ground-deep .ks-quote,
.ks-ground-forest .ks-router a, .ks-ground-deep .ks-router a { border: 1px solid var(--line); }
.ks-ground-forest .ks-forwhom, .ks-ground-deep .ks-forwhom,
.ks-ground-forest .ks-callout, .ks-ground-deep .ks-callout { background: var(--surface-sunken); }
.ks-ground-forest .ks-forwhom strong, .ks-ground-deep .ks-forwhom strong,
.ks-ground-forest .ks-router__t strong, .ks-ground-deep .ks-router__t strong,
.ks-ground-forest .ks-callout > .ks-svg, .ks-ground-deep .ks-callout > .ks-svg { color: var(--ink); }

/* ——— Sekcja i kontener ——— */
.ks-section { padding-block: var(--space-24); }
.ks-section--tight { padding-block: var(--space-16); }
.ks-container { width: min(100% - 2 * var(--space-6), var(--container)); margin-inline: auto; }
.ks-container--text { width: min(100% - 2 * var(--space-6), var(--container-text)); margin-inline: auto; }
@media (max-width: 640px) { .ks-section { padding-block: var(--space-16); } }
.ks-stack > * + * { margin-top: var(--space-4); }
.ks-grid { display: grid; gap: var(--space-6); grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.ks-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.ks-rule { border: 0; border-top: 1px solid var(--line); margin: var(--space-12) 0; }

/* ——— Nagłówek sekcji ——— */
.ks-section-head { max-width: var(--container-text); margin-bottom: var(--space-12); }
.ks-section-head__kicker { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); color: var(--ink-muted); }
.ks-section-head__no { font-family: var(--font-serif); font-size: 24px; line-height: 1; font-weight: 600; color: var(--accent); font-variant-numeric: lining-nums; }
.ks-section-head__kicker::after { content: ""; flex: 0 0 40px; height: 1px; background: currentColor; order: 1; opacity: .6; }
.ks-section-head__kicker .eyebrow { order: 2; }
.ks-section-head .h1 { margin-bottom: var(--space-4); }
.ks-section-head .lead { color: var(--ink-muted); margin: 0; max-width: var(--measure); }
.ks-section-head--center { margin-inline: auto; text-align: center; }
.ks-section-head--center .ks-section-head__kicker { justify-content: center; }

/* ——— Przyciski ——— */
.ks-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: var(--target-size); padding: 12px var(--space-6);
  border: 2px solid var(--action); border-radius: var(--radius-pill);
  background: var(--action); color: var(--on-action);
  font: 600 15px/20px var(--font-sans); letter-spacing: 0.01em;
  text-decoration: none; cursor: pointer; white-space: nowrap; transition: background-color .15s, border-color .15s, color .15s;
}
.ks-btn:hover { background: var(--action-hover); border-color: var(--action-hover); }
.ks-btn--secondary { background: transparent; color: var(--action); border-color: var(--action); }
.ks-btn--secondary:hover { background: var(--action-soft); border-color: var(--action); color: var(--action); }
.ks-btn--quiet { background: transparent; border-color: transparent; color: var(--action); padding-inline: var(--space-3); text-decoration: underline; text-underline-offset: .25em; }
.ks-btn--quiet:hover { background: var(--action-soft); border-color: transparent; }
.ks-btn--lg { min-height: 56px; padding: 16px var(--space-8); font-size: 17px; }
.ks-btn--block { width: 100%; }
.ks-btn[disabled], .ks-btn[aria-disabled="true"] { background: var(--status-closed-bg); border-color: var(--status-closed-bg); color: var(--status-closed-ink); cursor: not-allowed; }
.ks-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
@media (max-width: 600px) { .ks-actions > .ks-btn { width: 100%; white-space: normal; text-align: center; } }

/* ——— Linki ——— */
.ks-link { color: var(--link); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; }
.ks-link:hover { text-decoration-thickness: 2px; }
.ks-link-arrow { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--target-size); color: var(--action); font: 600 15px/20px var(--font-sans); text-decoration: none; }
.ks-link-arrow .ks-svg { transition: transform .15s; }
.ks-link-arrow:hover { text-decoration: underline; text-underline-offset: .25em; }
.ks-link-arrow:hover .ks-svg { transform: translateX(3px); }

/* ——— Plakietki: status i kod oferty ——— */
.ks-badge {
  display: inline-flex; align-items: center; gap: var(--space-1);
  padding: 4px 10px 4px 8px; border-radius: var(--radius-pill);
  font: 700 12px/16px var(--font-sans); letter-spacing: 0.08em; text-transform: uppercase;
  background: var(--status-closed-bg); color: var(--status-closed-ink);
}
.ks-badge .ks-svg { width: 14px; height: 14px; stroke-width: 2.2; }
.ks-badge--open   { background: var(--status-open-bg); color: var(--status-open-ink); }
.ks-badge--last   { background: var(--status-last-bg); color: var(--status-last-ink); }
.ks-badge--soon   { background: var(--status-soon-bg); color: var(--status-soon-ink); }
.ks-badge--closed { background: var(--status-closed-bg); color: var(--status-closed-ink); }
.ks-tag {
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: 4px 10px; border-radius: var(--radius-sm);
  background: var(--code-tint); color: var(--code-ink);
  font: 700 12px/16px var(--font-sans); letter-spacing: 0.08em; text-transform: uppercase;
}
.ks-tag::before { content: ""; width: 8px; height: 8px; border-radius: var(--radius-round); background: var(--code-band); }

/* Kody ofert — ustawiają lokalne --code-* dla dzieci */
.ks-code-sage    { --code-band: var(--code-sage-band);    --code-ink: var(--code-sage-ink);    --code-tint: var(--code-sage-tint); }
.ks-code-lake    { --code-band: var(--code-lake-band);    --code-ink: var(--code-lake-ink);    --code-tint: var(--code-lake-tint); }
.ks-code-heather { --code-band: var(--code-heather-band); --code-ink: var(--code-heather-ink); --code-tint: var(--code-heather-tint); }
.ks-code-sand    { --code-band: var(--code-sand-band);    --code-ink: var(--code-sand-ink);    --code-tint: var(--code-sand-tint); }
.ks-code-forest  { --code-band: var(--code-forest-band);  --code-ink: var(--code-forest-ink);  --code-tint: var(--code-forest-tint); }
:root { --code-band: var(--code-forest-band); --code-ink: var(--code-forest-ink); --code-tint: var(--code-forest-tint); }

/* ——— Karta ——— */
.ks-card {
  position: relative; display: flex; flex-direction: column; gap: var(--space-4);
  background: var(--surface); color: var(--ink);
  border: 1px solid var(--line); border-radius: var(--radius-md);
  padding: var(--space-8) var(--space-6) var(--space-6);
  overflow: hidden;
}
.ks-ground-sand .ks-card, .ks-ground-sage .ks-card, .ks-ground-mist .ks-card { border-color: transparent; }
.ks-card--coded::before { content: ""; position: absolute; inset: 0 0 auto 0; height: var(--band-width); background: var(--code-band); }
.ks-card__head { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); }
.ks-card__head .h3 { margin-top: var(--space-2); }
.ks-card__sub { color: var(--ink-muted); font: 600 15px/24px var(--font-sans); margin: 0; }
.ks-card__text { margin: 0; }
.ks-card__foot { margin-top: auto; padding-top: var(--space-4); border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; }
.ks-card__price { display: flex; align-items: baseline; gap: 6px; color: var(--ink); }
.ks-card__price small { font: 400 15px/24px var(--font-sans); color: var(--ink-muted); }
.ks-forwhom { background: var(--code-tint); border-radius: var(--radius-sm); padding: var(--space-3) var(--space-4); font: 400 15px/24px var(--font-sans); color: var(--ink); margin: 0; }
.ks-forwhom strong { color: var(--code-ink); }
a.ks-card { text-decoration: none; transition: box-shadow .15s, transform .15s; }
a.ks-card:hover { box-shadow: var(--shadow-sm); }

/* ——— Lista faktów ——— */
.ks-facts { display: grid; grid-template-columns: auto auto 1fr; gap: var(--space-3) var(--space-3); margin: 0; font: 400 15px/24px var(--font-sans); align-items: start; }
.ks-facts .ks-svg { color: var(--code-band); margin-top: 2px; }
.ks-facts dt { color: var(--ink-muted); }
.ks-facts dd { margin: 0; color: var(--ink); font-weight: 600; }
.ks-facts--plain { grid-template-columns: auto 1fr; }
.ks-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); list-style: none; margin: 0; padding: 0; }
.ks-chips li { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: var(--radius-sm); background: var(--surface-sunken); font: 500 13px/20px var(--font-sans); color: var(--ink); }
.ks-chips .ks-svg { width: 16px; height: 16px; color: var(--ink-muted); }

/* ——— Callout (informacja / uwaga / troska) ——— */
.ks-callout { display: grid; grid-template-columns: auto 1fr; gap: var(--space-2) var(--space-3); padding: var(--space-4) var(--space-5); border-radius: var(--radius-md); background: var(--status-soon-bg); color: var(--ink); font: 400 15px/24px var(--font-sans); }
.ks-callout > .ks-svg { width: 22px; height: 22px; color: var(--status-soon-ink); margin-top: 1px; }
.ks-callout__title { font-weight: 700; margin: 0; color: var(--ink); }
.ks-callout p { margin: 0; }
.ks-callout > :not(.ks-svg) { grid-column: 2; }
.ks-callout--note { background: var(--accent-soft); }
.ks-callout--note > .ks-svg { color: var(--accent); }
.ks-callout--care { background: var(--code-heather-tint); }
.ks-callout--care > .ks-svg { color: var(--code-heather-ink); }
.ks-callout--danger { background: var(--danger-bg); }
.ks-callout--danger > .ks-svg { color: var(--danger-ink); }

/* ——— Kafelek rozdzielnika („Z czym przychodzisz?”) ——— */
.ks-router { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); }
.ks-router a {
  position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-6);
  height: 100%; min-height: 188px; padding: var(--space-6) var(--space-5) var(--space-5);
  background: var(--surface); border-radius: var(--radius-md); border: 1px solid transparent; overflow: hidden;
  color: var(--ink); text-decoration: none; transition: border-color .15s, box-shadow .15s;
}
.ks-router a::before { content: ""; position: absolute; inset: 0 0 auto 0; height: var(--band-width); background: var(--code-band); }
.ks-router a:hover { border-color: var(--code-band); box-shadow: var(--shadow-sm); }
.ks-router__q { font: 600 19px/27px var(--font-sans); color: var(--ink); text-wrap: balance; }
.ks-router__q::before { content: "„"; color: var(--code-band); font-weight: 700; }
.ks-router__q::after { content: "”"; color: var(--code-band); font-weight: 700; }
.ks-router__a { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding-top: var(--space-4); border-top: 1px solid var(--line); }
.ks-router__t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ks-router__t strong { font: 700 15px/20px var(--font-sans); color: var(--code-ink); }
.ks-router__t span { font: 500 13px/18px var(--font-sans); color: var(--ink-muted); }
.ks-router__go { display: grid; place-items: center; flex-shrink: 0; width: 36px; height: 36px; border-radius: var(--radius-round); background: var(--code-tint); color: var(--code-ink); transition: transform .15s; }
.ks-router__go .ks-svg { width: 18px; height: 18px; }
.ks-router a:hover .ks-router__go { transform: translateX(3px); }
@media (max-width: 640px) { .ks-router a { min-height: 0; gap: var(--space-4); padding: var(--space-5) var(--space-4) var(--space-4); } }

/* ——— Kroki ——— */
.ks-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-6); counter-reset: ks-step; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.ks-steps li { counter-increment: ks-step; display: flex; flex-direction: column; gap: var(--space-2); padding-top: var(--space-4); border-top: 1px solid var(--line-strong); }
.ks-steps li::before { content: counter(ks-step, decimal-leading-zero); font-family: var(--font-serif); font-size: 44px; line-height: 44px; font-weight: 500; color: var(--accent); font-variant-numeric: lining-nums; }
.ks-steps strong { font: 700 19px/26px var(--font-sans); color: var(--ink); }
.ks-steps p { margin: 0; color: var(--ink-muted); font-size: 15px; line-height: 24px; }

/* ——— Cytat ——— */
.ks-quote { margin: 0; display: flex; flex-direction: column; gap: var(--space-4); padding: var(--space-6); background: var(--surface); border-radius: var(--radius-md); height: 100%; }
.ks-quote::before { content: "\201C"; font-family: var(--font-serif); font-size: 80px; line-height: 1; height: 36px; margin-bottom: -4px; color: var(--accent); }
.ks-quote blockquote { margin: 0; font-family: var(--font-serif); font-size: 24px; line-height: 34px; font-weight: 500; color: var(--ink-heading); }
.ks-quote figcaption { margin-top: auto; padding-top: var(--space-4); border-top: 1px solid var(--line); font: 500 13px/20px var(--font-sans); color: var(--ink-muted); }
.ks-quote figcaption strong { display: block; color: var(--ink); font-size: 15px; font-weight: 700; }

/* ——— Akordeon (FAQ, oferty) ——— */
.ks-accordion { border-top: 1px solid var(--line-strong); }
.ks-accordion details { border-bottom: 1px solid var(--line-strong); }
.ks-accordion summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
  min-height: var(--target-size); padding: var(--space-5) 0; font: 700 19px/26px var(--font-sans); color: var(--ink);
}
.ks-accordion summary::-webkit-details-marker { display: none; }
.ks-accordion summary::after {
  content: ""; flex: 0 0 32px; height: 32px; border-radius: var(--radius-round); border: 1px solid var(--line-strong);
  background: linear-gradient(currentColor, currentColor) center / 12px 1.6px no-repeat, linear-gradient(currentColor, currentColor) center / 1.6px 12px no-repeat;
}
.ks-accordion details[open] summary::after { background: linear-gradient(currentColor, currentColor) center / 12px 1.6px no-repeat; background-color: var(--action-soft); }
.ks-accordion summary:hover { color: var(--action); }
.ks-accordion details > div { padding: 0 var(--space-12) var(--space-6) 0; color: var(--ink-muted); max-width: var(--measure); }
.ks-accordion details > div p { margin: 0 0 var(--space-3); }

/* ——— Formularz ——— */
.ks-form { display: grid; gap: var(--space-5); }
.ks-field { display: grid; gap: var(--space-2); }
.ks-field__label { font: 600 15px/20px var(--font-sans); color: var(--ink); }
.ks-field__label em { font-style: normal; font-weight: 400; color: var(--ink-muted); }
.ks-field__hint { font: 500 13px/20px var(--font-sans); color: var(--ink-muted); }
.ks-input, .ks-select, .ks-textarea {
  font: 400 17px/24px var(--font-sans); color: var(--ink);
  min-height: 48px; padding: 11px 14px; width: 100%;
  background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
}
.ks-textarea { min-height: 132px; resize: vertical; }
.ks-select { appearance: none; padding-right: 40px; background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 15px) 50%; background-size: 5px 5px; background-repeat: no-repeat; }
.ks-input:hover, .ks-select:hover, .ks-textarea:hover { border-color: var(--ink-muted); }
.ks-input:focus-visible, .ks-select:focus-visible, .ks-textarea:focus-visible { outline: var(--focus-width) solid var(--focus-ring); outline-offset: 1px; border-color: var(--ink); }
.ks-field--error .ks-input, .ks-field--error .ks-textarea, .ks-field--error .ks-select { border-color: var(--danger-ink); border-width: 2px; padding: 10px 13px; }
.ks-field__error { display: flex; align-items: center; gap: var(--space-2); font: 600 13px/20px var(--font-sans); color: var(--danger-ink); }
.ks-field__error .ks-svg { width: 16px; height: 16px; }
.ks-check { display: grid; grid-template-columns: auto 1fr; gap: var(--space-3); align-items: start; font: 400 15px/24px var(--font-sans); color: var(--ink); }
.ks-check input { appearance: none; width: 22px; height: 22px; margin: 1px 0 0; border: 1.5px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); display: grid; place-content: center; cursor: pointer; }
.ks-check input:checked { background: var(--action); border-color: var(--action); }
.ks-check input:checked::after { content: ""; width: 10px; height: 6px; border: 2px solid var(--on-action); border-top: 0; border-right: 0; transform: rotate(-45deg) translate(1px, -1px); }

/* ——— Kanał kontaktu ——— */
.ks-channel { display: flex; align-items: center; gap: var(--space-4); min-height: var(--target-size); padding: var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; transition: border-color .15s; }
.ks-channel:hover { border-color: var(--action); }
.ks-channel__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-round); background: var(--action-soft); color: var(--action); flex-shrink: 0; }
.ks-channel__icon .ks-svg { width: 22px; height: 22px; }
.ks-channel__label { display: block; font: 700 12px/16px var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); }
.ks-channel__value { display: block; font: 600 17px/24px var(--font-sans); overflow-wrap: anywhere; }

/* ——— Nagłówek strony ——— */
.ks-header { position: sticky; top: 0; z-index: 50; background: var(--bg-page); border-bottom: 1px solid var(--line); }
.ks-header__bar { display: flex; align-items: center; gap: var(--space-4); min-height: var(--header-height); }
.ks-brand { display: inline-flex; align-items: center; gap: var(--space-3); text-decoration: none; color: var(--ink-heading); margin-right: auto; min-height: var(--target-size); }
.ks-brand img { width: 44px; height: 44px; border-radius: var(--radius-sm); }
.ks-brand__name { font-family: var(--font-serif); font-size: 26px; line-height: 1; font-weight: 600; }
.ks-brand__sub { display: block; margin-top: 4px; font: 700 10px/12px var(--font-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); }
.ks-nav { display: flex; gap: var(--space-1); list-style: none; margin: 0; padding: 0; }
.ks-nav a { white-space: nowrap; display: inline-flex; align-items: center; min-height: var(--target-size); padding: 0 var(--space-3); border-radius: var(--radius-pill); color: var(--ink); text-decoration: none; font: 600 15px/20px var(--font-sans); }
.ks-nav a:hover { background: var(--action-soft); }
.ks-nav a[aria-current="true"], .ks-nav a[aria-current="page"] { background: var(--action-soft); color: var(--action); }
.ks-lang { display: inline-flex; border: 1px solid var(--line-strong); border-radius: var(--radius-pill); padding: 2px; }
.ks-lang a { display: grid; place-items: center; min-width: 40px; min-height: 40px; border-radius: var(--radius-pill); font: 700 13px/1 var(--font-sans); color: var(--ink-muted); text-decoration: none; }
.ks-lang a[aria-current="page"] { background: var(--action); color: var(--on-action); }

/* ——— Stopka ——— */
.ks-footer { padding-block: var(--space-16) var(--space-8); font: 400 15px/24px var(--font-sans); }
.ks-footer__grid { display: grid; gap: var(--space-10); grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.ks-footer h2 { font: 700 12px/16px var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); margin: 0 0 var(--space-4); }
.ks-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-1); }
.ks-footer a { color: var(--ink); text-decoration: none; display: inline-flex; min-height: 32px; align-items: center; }
.ks-footer a:hover { text-decoration: underline; text-underline-offset: .22em; }
.ks-footer__base { margin-top: var(--space-12); padding-top: var(--space-6); border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-4); color: var(--ink-muted); font-size: 13px; line-height: 20px; }

/* ——— Ramka zdjęcia (motyw z logo: kwadrat + koło + przesunięcie) ——— */
.ks-frame { margin: 0; }
.ks-frame__media { position: relative; display: block; padding: 0 var(--space-4) var(--space-4) 0; }
.ks-frame__media::before { content: ""; position: absolute; inset: var(--space-4) 0 0 var(--space-4); border: 1px solid var(--action); border-radius: var(--radius-sm); }
.ks-frame img { position: relative; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius-sm); background: var(--surface-sunken); }
.ks-frame--round img { aspect-ratio: 1; border-radius: var(--radius-round); }
.ks-frame figcaption { margin-top: var(--space-3); font: 500 13px/20px var(--font-sans); color: var(--ink-muted); }

/* Motyw wysokiego kontrastu: powierzchnie oddzielone obrysem ≥3:1, nie odcieniem */
[data-theme="contrast"] .ks-card, [data-theme="contrast"] .ks-quote, [data-theme="contrast"] .ks-router a,
[data-theme="contrast"] .ks-channel, [data-theme="contrast"] .ks-callout, [data-theme="contrast"] .ks-forwhom, [data-theme="contrast"] .notify, [data-theme="contrast"] .contact-form, [data-theme="contrast"] .project { border: 1px solid var(--line-strong); }
[data-theme="contrast"] .ks-section + .ks-section { border-top: 2px solid var(--line-strong); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  .ks-card, .ks-channel, .ks-router a, .ks-quote, .ks-callout { border: 1px solid CanvasText; }
  .ks-badge, .ks-tag { border: 1px solid CanvasText; }
}
