/* ---------- Pole tekstowe ---------- */
.swm-field { position: relative; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.swm-field__label { font: 500 12px/1.5 var(--swm-font-sans); color: var(--swm-ink); padding-left: 4px; }
.swm-required { color: var(--swm-error); margin-left: 1px; }
.swm-field__control { position: relative; display: flex; align-items: center; }
.swm-field__control[hidden] { display: none; }
.swm-scope .swm-input,
.swm-scope .swm-select {
  width: 100%;
  height: 48px;
  padding: 0 16px;
  border: 1px solid var(--swm-border);
  border-radius: var(--swm-radius);
  background: var(--swm-card);
  font: 400 16px/1.5 var(--swm-font-sans);
  color: var(--swm-ink);
  outline: none;
  transition: border-color .15s ease;
}
.swm-scope .swm-select {
  -webkit-appearance: none; appearance: none; padding-right: 44px; cursor: pointer;
  background: var(--swm-card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%231b1c21' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 16px center / 20px 20px no-repeat;
}
.swm-input::placeholder { color: var(--swm-text); opacity: 1; }
.swm-scope .swm-input:focus,
.swm-scope .swm-select:focus { border-color: var(--swm-ink); box-shadow: 0 0 0 1px var(--swm-ink); }
.swm-field__control.has-suffix .swm-input { padding-right: 48px; }
.swm-field__suffix { position: absolute; right: 16px; color: var(--swm-text); pointer-events: none; }
.swm-scope .swm-field__hint { margin: 0; font-size: 12px; color: var(--swm-text); padding-left: 4px; }
/* Błąd pozycjonowany absolutnie pod polem – pojawienie się nie przesuwa treści (odstępy w form.css). */
.swm-scope .swm-field__error { position: absolute; top: 100%; left: 0; right: 0; margin: 4px 0 0; font: 400 12px/1.5 var(--swm-font-sans); color: var(--swm-error); padding-left: 4px; }
.swm-scope .swm-field__error:empty { display: none; }
.is-invalid .swm-input,
.is-invalid .swm-select { border-color: var(--swm-error); }
.swm-field__warning {
  margin-top: 4px; padding: 12px; background: var(--swm-warning-bg); border-radius: var(--swm-radius);
  font-size: 14px; color: var(--swm-ink); display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center;
}
.swm-field__warning[hidden] { display: none; }

/* ---------- Kafelki ---------- */
.swm-tiles { position: relative; border: 0; margin: 0; padding: 0; min-width: 0; }
.swm-tiles__legend { margin: 0 0 4px; padding: 0 0 0 4px; }
.swm-tiles__grid { display: grid; grid-template-columns: repeat(var(--swm-cols, 4), minmax(0, 1fr)); gap: 8px; }
.swm-tile { position: relative; display: flex; cursor: pointer; }
.swm-tile[hidden] { display: none; }
.swm-tile__text {
  flex: 1 1 auto; display: flex; align-items: center; justify-content: center; min-height: 48px; padding: 8px 12px;
  background: var(--swm-track); border-radius: var(--swm-radius); text-align: center;
  font: 400 14px/1.4 var(--swm-font-sans); color: var(--swm-ink); transition: background-color .15s ease;
}
.swm-tiles--icons .swm-tile__text { flex-direction: column; gap: 8px; min-height: 96px; padding: 16px 12px; }
.swm-tile__icon { display: inline-flex; color: var(--swm-ink); }
.swm-icon { display: block; width: 28px; height: 28px; }
.swm-tile:hover .swm-tile__text { background: #e0dcc8; }
.swm-tile input:checked + .swm-tile__text,
.swm-tile.is-selected .swm-tile__text { background: var(--swm-gold); }
.swm-tile input:focus-visible + .swm-tile__text { outline: 2px solid var(--swm-ink); outline-offset: 2px; }
.is-invalid .swm-tile__text { box-shadow: inset 0 0 0 1px var(--swm-error); }

/* ---------- Suwak ---------- */
.swm-slider { position: relative; display: flex; flex-direction: column; gap: 12px; }
.swm-slider--panel { background: var(--swm-panel); border: 1px solid var(--swm-line); border-radius: var(--swm-radius-card); padding: 24px; }
.swm-slider__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.swm-slider__label { font: 500 12px/1.5 var(--swm-font-sans); color: var(--swm-ink); padding-left: 4px; }
.swm-slider--panel .swm-slider__label { font: 400 20px/1.5 var(--swm-font-serif); }
.swm-slider__value { display: inline-flex; align-items: center; gap: 12px; font: 500 20px/1.5 var(--swm-font-serif); color: var(--swm-ink); }
.swm-slider__edit { display: inline-flex; padding: 0; border: 0; background: none; color: var(--swm-ink); cursor: pointer; }
.swm-slider__edit:focus-visible { outline: 2px solid var(--swm-ink); outline-offset: 2px; }
.swm-slider__edit-input { width: 9ch; height: 32px; padding: 0 8px; border: 1px solid var(--swm-ink); border-radius: var(--swm-radius); font: 500 18px var(--swm-font-serif); text-align: right; }
.swm-slider__track { position: relative; height: 24px; background: var(--swm-track); border-radius: var(--swm-radius); cursor: pointer; touch-action: none; }
.swm-slider--large .swm-slider__track { height: 40px; }
.swm-slider__fill { position: absolute; inset: 0 auto 0 0; background: var(--swm-gold); border-radius: var(--swm-radius) 0 0 var(--swm-radius); display: flex; align-items: center; overflow: hidden; }
.swm-slider__fill-text { padding-left: 8px; font: 700 12px/1 var(--swm-font-sans); color: var(--swm-ink); white-space: nowrap; }
.swm-slider--large .swm-slider__fill-text { padding-left: 12px; font: 700 16px/1 var(--swm-font-sans); }
.swm-slider__fill-text { flex: none; }
.swm-slider__fill.is-narrow { overflow: visible; }
.swm-slider__fill.is-narrow .swm-slider__fill-text { position: absolute; left: 100%; top: 50%; transform: translateY(-50%); padding-left: 14px; }
.swm-slider__handle { position: absolute; top: 50%; width: 6px; height: 32px; margin-left: -3px; transform: translateY(-50%); background: var(--swm-dark); border-radius: 4px; cursor: grab; outline: none; }
.swm-slider--large .swm-slider__handle { height: 48px; }
.swm-slider__handle:focus-visible { box-shadow: 0 0 0 3px var(--swm-card), 0 0 0 5px var(--swm-ink); }
.swm-slider__scale { display: flex; justify-content: space-between; font: 400 14px/1.5 var(--swm-font-sans); color: var(--swm-ink); }

/* ---------- Przyciski ---------- */
.swm-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 64px; padding: 0 24px;
  border: 0; border-radius: var(--swm-radius-card); background: var(--swm-ink); color: #fff; cursor: pointer;
  font: 500 16px/1.5 var(--swm-font-sans); text-decoration: none;
}
.swm-button:hover { background: #000; }
.swm-button:focus-visible { outline: 2px solid var(--swm-gold); outline-offset: 2px; }
.swm-button[disabled] { opacity: .6; cursor: progress; }
.swm-button__spinner { width: 18px; height: 18px; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: swm-spin .8s linear infinite; }
.swm-button__spinner[hidden] { display: none; }
@keyframes swm-spin { to { transform: rotate(360deg); } }
.swm-link { display: inline-block; padding: 0; border: 0; background: none; color: var(--swm-ink); font: 500 16px/1.5 var(--swm-font-sans); text-decoration: underline; cursor: pointer; }
.swm-link--small { font-size: 14px; }

/* ---------- Zgody ---------- */
.swm-consents { position: relative; display: flex; flex-direction: column; gap: 16px; }
.swm-consents__list { display: flex; flex-direction: column; gap: 8px; padding-left: 16px; }
.swm-consents__partner { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.swm-scope .swm-consents__partner-name { margin: 0; font: 500 14px/1.5 var(--swm-font-sans); color: var(--swm-ink); }
.swm-check { display: flex; gap: 8px; align-items: flex-start; font: 400 14px/1.5 var(--swm-font-sans); color: var(--swm-ink); }
/* Checkbox wg Figmy: 24px, obramowanie 2px #c7c9d1, kwadrat bez wypełnienia. */
.swm-scope .swm-check input {
  -webkit-appearance: none; appearance: none; flex: 0 0 auto; width: 24px; height: 24px; margin: 0;
  border: 2px solid var(--swm-border); border-radius: 0; background: transparent center / 16px 16px no-repeat; cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease;
}
.swm-scope .swm-check input:hover { border-color: var(--swm-ink); }
.swm-scope .swm-check input:checked {
  border-color: var(--swm-ink); background-color: var(--swm-ink);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.swm-scope .swm-check input:focus-visible { outline: 2px solid var(--swm-ink); outline-offset: 2px; }
.swm-scope .swm-check.is-invalid input { border-color: var(--swm-error); }
.swm-check.is-invalid .swm-consent__text { color: var(--swm-error); }
.swm-consent__text.is-collapsed { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.swm-consent__toggle { padding: 0; border: 0; background: none; font: 700 14px/1.5 var(--swm-font-sans); color: var(--swm-ink); cursor: pointer; }
.swm-consents__clause { font: 400 14px/1.5 var(--swm-font-sans); color: var(--swm-ink); }

/* ---------- Romby kroków (Figma 1:515: 56px, zewnętrzny romb 36px r4, wewnętrzny 32px r2) ---------- */
.swm-steps { display: flex; justify-content: center; gap: 16px; list-style: none; margin: 0 0 32px; padding: 0; }
.swm-steps__item { position: relative; width: 56px; height: 56px; display: flex; align-items: center; justify-content: center; }
.swm-steps__item::before,
.swm-steps__item::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(45deg); }
.swm-steps__item::before { width: 36px; height: 36px; border-radius: 4px; background: var(--swm-step-idle-ring); }
.swm-steps__item::after { width: 32px; height: 32px; border-radius: 2px; background: var(--swm-step-idle); }
.swm-steps__item.is-done::before,
.swm-steps__item.is-active::before { background: var(--swm-gold); }
.swm-steps__item.is-done::after,
.swm-steps__item.is-active::after { background: var(--swm-dark); }
.swm-steps__number { position: relative; z-index: 1; font: 500 20px/1 var(--swm-font-serif); letter-spacing: -0.05em; color: #fff; }

/* ---------- Modal ---------- */
.swm-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(27,28,33,.55); }
.swm-modal[hidden] { display: none; }
.swm-modal__dialog { width: 100%; max-width: 560px; max-height: calc(100vh - 32px); overflow: auto; background: var(--swm-card); border-radius: var(--swm-radius-card); padding: 32px; display: flex; flex-direction: column; gap: 16px; }
.swm-modal__title { margin: 0; font: 400 24px/1.1 var(--swm-font-serif); color: var(--swm-ink); }
.swm-scope .swm-modal__error { margin: 0; font-size: 14px; color: var(--swm-error); }
.swm-modal__error:empty { display: none; }

@media (max-width: 767px) {
  .swm-tiles__grid { grid-template-columns: repeat(var(--swm-cols-mobile, 2), minmax(0, 1fr)); }
  .swm-steps { gap: 8px; }
  .swm-slider--panel { padding: 16px; }
  .swm-modal__dialog { padding: 24px 16px; }
}
