/* Modules own their width and spacing; no legacy column classes required. */
.sihl-site .sihl-page-modules {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 24px;
  width: min(1200px, calc(100% - 48px));
  margin: 40px auto;
  clear: both;
  font: 400 16px/1.5 "Lato", "Helvetica Neue", Arial, sans-serif;
  color: #203543;
}
.sihl-site .sihl-page-modules:empty, .sihl-site .sihl-page-modules:not(:has(> *)) { display: none; }
.sihl-site .sihl-page-modules[data-sihl-modules="grid"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sihl-site .sihl-page-modules > * { min-width: 0; }
.sihl-site .sihl-page-modules > .sihl-module-calendar { grid-column: 1 / -1; padding: 0; margin: 0; }
.sihl-site .shop-item-card {
  box-sizing: border-box;
  width: 100%; min-width: 0;
  border: 1px solid #d6d2c9; border-top: 4px solid var(--sport-accent, #8cc5e5);
  border-radius: 0; box-shadow: none;
  padding: clamp(20px, 3vw, 36px);
  background: #f8f7f3; color: #203543;
  font: 400 16px/1.5 "Lato", "Helvetica Neue", Arial, sans-serif;
  overflow-wrap: anywhere;
}
.sihl-site .sihl-page-modules > .shop-item-card { margin: 0; display: flex; flex-direction: column; }
.sihl-site .shop-item-header { gap: 16px 24px; }
.sihl-site .shop-item-header h2, .sihl-site .shop-item-header h3 { margin: 0; color: #203543; font: 700 clamp(22px, 2.5vw, 30px)/1.15 "Lato", Arial, sans-serif; }
.sihl-site .shop-item-card p { font-size: 16px; font-weight: 400; line-height: 1.5; color: #203543; }
.sihl-site .shop-item-card .shop-item-type { margin: 0 0 8px; font-size: 12px; font-weight: 700; color: #647682; letter-spacing: .08em; }
.sihl-site .shop-item-price strong { color: #203543; font: 700 24px/1.3 "Lato", Arial, sans-serif; white-space: nowrap; }
.sihl-site .shop-item-price small, .sihl-site .shop-item-card .shop-item-subtitle { color: #647682; }
.sihl-site .shop-item-form { margin-top: auto; padding-top: 20px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.sihl-site .shop-item-field { min-width: 0; color: #203543; font-size: 16px; }
.sihl-site .shop-item-field--customer-note, .sihl-site .shop-item-field--checkbox, .sihl-site .shop-item-form > button, .sihl-site .shop-item-message { grid-column: 1 / -1; }
.sihl-site .shop-item-field input[type=number], .sihl-site .shop-item-field select, .sihl-site .shop-item-field textarea {
  box-sizing: border-box; width: 100%; min-width: 0; min-height: 46px; margin: 0;
  border: 1px solid #c8c3b8; border-radius: 0; box-shadow: none;
  padding: 10px 12px; background: #fff; color: #203543; font: 400 16px/1.4 "Lato", Arial, sans-serif;
}
.sihl-site .shop-item-field :is(input,select,textarea):focus-visible { outline: 2px solid #087ab7; outline-offset: 2px; }
.sihl-site .shop-item-field:has([required]) > span::after { content: " *"; color: inherit; }
.sihl-site .shop-item-field--checkbox { border-radius: 0; }
.sihl-site .shop-item-checkbox input { accent-color: #087ab7; flex: 0 0 auto; }
.sihl-site .shop-item-card .button-100 {
  box-sizing: border-box; display: flex; align-items: center; justify-content: center;
  width: 100%; min-height: 48px; margin: 0; padding: 13px 22px;
  border: 0; border-radius: 0; box-shadow: none; background: #203543; color: #fff;
  font: 700 16px/1.3 "Lato", Arial, sans-serif; text-decoration: none; cursor: pointer;
}
.sihl-site .shop-item-card .button-100:hover { background: #647682; }
.sihl-site .shop-item-card .button-100:focus-visible { outline: 2px solid #087ab7; outline-offset: 3px; }
.sihl-site .shop-item-card .button-100:disabled { cursor: default; opacity: .65; }
.sihl-site .shop-item-ribbon { position: static; inset: auto; transform: none; box-shadow: none; width: fit-content; padding: 5px 12px; margin-bottom: 16px; background: #647682; font-size: 12px; }
.sihl-site .shop-item-card--error { border-color: #993c3c; }
.sihl-site .shop-item-message.is-error { color: #993c3c; }
.sihl-site .shop-item-message:empty { display: none; }
.sihl-site .subscription-offer > .button-100 { margin-top: auto; }
.sihl-sport-cms-section--modules:has(> .cms-tool-bar):not(:has(.calendar-preview,.shop-item-card,.gym-opening-hours)) { min-height: 48px; }
.sihl-module-editor__list { display: grid; gap: 12px; margin: 24px 0; }
.sihl-module-editor__row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px; background: #f8f7f3; border: 1px solid #d6d2c9; }
.sihl-module-editor__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.sihl-module-editor [data-module-controls] > .admin-field { margin-bottom: 12px; }
@media (max-width: 650px) {
  .sihl-site .sihl-page-modules { width: calc(100% - 32px); margin: 24px auto; gap: 16px; }
  .sihl-site .sihl-page-modules[data-sihl-modules="grid"] { grid-template-columns: minmax(0, 1fr); }
  .sihl-site .shop-item-form { grid-template-columns: minmax(0, 1fr); }
  .sihl-site .shop-item-price { text-align: left; }
  .sihl-module-editor__row { flex-direction: column; align-items: stretch; }
}
@media (prefers-reduced-motion: no-preference) {
  .sihl-site .shop-item-card [data-shop-add]:disabled { background-image: linear-gradient(90deg, #647682, #647682); background-repeat: no-repeat; animation: sihl-module-progress 1.8s ease-out infinite; }
  @keyframes sihl-module-progress { from { background-size: 0% 100%; } to { background-size: 100% 100%; } }
}

.sihl-site .sihl-module-calendar { --preview-accent: var(--sport-accent, #087ab7); --preview-accent-light: var(--sport-accent-light, #8cc5e5); }
.sihl-site .sihl-free-content { max-width: 1200px; margin: 0 auto; padding: 56px 24px; color: #203543; font: 400 18px/1.5 "Lato", Arial, sans-serif; }
.sihl-site .sihl-free-content .sihl-page-modules { width: 100%; }

.sihl-site .shop-item-card [data-shop-add].is-loading { opacity: 1; cursor: default; }

/* Sport modules follow the same content edges as the surrounding sections. */
.sihl-site .sihl-sport-page .sihl-page-modules {
  box-sizing: border-box;
  width: 100%;
  max-width: 980px;
  padding-inline: 20px;
}
.sihl-site .sihl-sport-page .sihl-sport-cms-section--modules > .sihl-page-modules {
  margin-block: 0;
  padding-block: 70px 50px;
}
@media (max-width: 900px) {
  .sihl-site .sihl-sport-page .sihl-page-modules { padding-inline: 40px; }
}
@media (max-width: 600px) {
  .sihl-site .sihl-sport-page .sihl-page-modules { padding-inline: 15px; }
  .sihl-site .sihl-sport-page .sihl-sport-cms-section--modules > .sihl-page-modules { padding-top: 30px; }
}
