/**
 * Module: Reusable components
 * Source: Stage 3 approved design system
 * Change-ID: 20260726-152013-stage-3-design-system
 */
.volvo-btn-primary,
.volvo-btn-secondary,
.volvo-icon-button {
  align-items: center;
  border-radius: var(--volvo-radius-md);
  box-sizing: border-box;
  display: inline-flex;
  font-family: var(--volvo-font-sans);
  font-size: var(--volvo-button-size);
  font-weight: 700;
  justify-content: center;
  line-height: 1.2;
  min-height: var(--volvo-control-height);
  padding: 12px 20px;
  text-decoration: none;
  transition: background-color .16s ease, color .16s ease, border-color .16s ease;
}
.volvo-btn-primary { background: var(--volvo-black); border: 1px solid var(--volvo-black); color: var(--volvo-white); }
.volvo-btn-primary:hover { background: var(--volvo-graphite); border-color: var(--volvo-graphite); color: var(--volvo-white); }
.volvo-btn-secondary { background: transparent; border: 1px solid var(--volvo-black); color: var(--volvo-black); }
.volvo-btn-secondary:hover { background: var(--volvo-mist); color: var(--volvo-black); }
.volvo-text-link { color: var(--volvo-nordic-blue); font-weight: 600; text-decoration: underline; text-underline-offset: .18em; }
.volvo-icon-button { min-width: var(--volvo-touch-target); padding: 10px; }
.is-disabled, [disabled], [aria-disabled="true"] { cursor: not-allowed; opacity: .48; pointer-events: none; }
.is-loading { cursor: progress; }
.is-success { border-color: var(--volvo-nordic-blue); color: var(--volvo-nordic-blue); }
.volvo-form { display: grid; gap: var(--volvo-gap-md); }
.volvo-form-field { display: grid; gap: 8px; min-width: 0; }
.volvo-input,
.volvo-select,
.volvo-textarea {
  background: var(--volvo-white);
  border: 1px solid var(--volvo-border);
  border-radius: var(--volvo-radius-sm);
  box-sizing: border-box;
  color: var(--volvo-black);
  font: inherit;
  min-height: var(--volvo-control-height);
  padding: 12px 14px;
  width: 100%;
}
.volvo-textarea { min-height: 120px; resize: vertical; }
.volvo-input:focus,
.volvo-select:focus,
.volvo-textarea:focus { border-color: var(--volvo-black); outline: 2px solid var(--volvo-black); outline-offset: 2px; }
.volvo-checkbox { align-items: center; display: flex; gap: 10px; min-height: var(--volvo-touch-target); }
.volvo-form-error { color: var(--volvo-graphite); font-size: var(--volvo-small-size); font-weight: 600; }
.volvo-form-error::before { content: "Lỗi: "; }
.volvo-form-loading { color: var(--volvo-graphite); }
.volvo-form-success { color: var(--volvo-nordic-blue); font-weight: 600; }
.volvo-privacy-consent { color: var(--volvo-graphite); font-size: var(--volvo-small-size); line-height: 1.55; }
.volvo-media-hero-desktop,
.volvo-media-hero-mobile,
.volvo-media-model-card,
.volvo-media-gallery,
.volvo-media-interior { display: block; overflow: hidden; width: 100%; }
.volvo-media-hero-desktop { aspect-ratio: 16 / 9; }
.volvo-media-hero-mobile { aspect-ratio: 4 / 5; }
.volvo-media-model-card { aspect-ratio: 4 / 3; }
.volvo-media-gallery { aspect-ratio: 3 / 2; }
.volvo-media-interior { aspect-ratio: 16 / 10; }
.volvo-media-hero-desktop img,
.volvo-media-hero-mobile img,
.volvo-media-model-card img,
.volvo-media-gallery img,
.volvo-media-interior img { height: 100%; object-fit: cover; width: 100%; }
