:root {
  --ink: #2a2a2a;
  --body: #5e6068;
  /* Darkened from #8c8e96 (3.3:1) so small print clears WCAG AA 4.5:1 on white. */
  --muted: #6b6d75;
  --cream: #fff6e9;
  --sky-wash: #f6fbff;
  --pink: #ff3e7f;
  --pink-soft: #ffd7e8;
  --green: #3ed17f;
  --green-shadow: #2aae64;
  --blue: #3ec1ff;
  --purple: #a855f7;
  --yellow: #ffc93c;
  /* Style guide: 20px card radius. */
  --card-radius: 20px;
  --radius-xl: 28px;  /* hero media, big cards */
  --radius-lg: 24px;  /* picker card, panels */
  --radius-md: 16px;  /* boxes, notices */
  --radius-sm: 12px;  /* inputs, small panels */
  --pad-x: clamp(20px, 4vw, 88px); /* section side padding, every full-width band */
  /* Availability / status colours (calendar days, legend pills, paid strip). */
  --ok-bg: #e4f8ee;
  --ok-bg-strong: #cdefdd;
  --ok-ink: #1f9d5f;
  --no-bg: #ffe1e6;
  --no-ink: #d63a5a;
  --paid-bg: #f0fbf4;
  --paid-ink: #1f7a47;
  --card-shadow: 0 18px 34px rgba(64, 96, 115, 0.09);
  --display-font:
    "Baloo 2", "Arial Rounded MT Bold", "Trebuchet MS", system-ui, sans-serif;
  --body-font: "Nunito", "Avenir Next", system-ui, sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  background: var(--ink);
}

body {
  margin: 0;
  color: var(--ink);
  font-family: var(--body-font);
  font-weight: 400;
  line-height: 1.45;
  background: #ffffff;
  -webkit-font-smoothing: antialiased;
}

a {
  color: inherit;
  text-decoration: none;
}

/* Links inside running text must be distinguishable without colour
   (WCAG 1.4.1). Components (nav, .button, cards, footer) override by
   specificity and keep their own treatment. */
p a,
li a,
dd a,
td a {
  text-decoration: underline;
  text-underline-offset: 0.15em;
  text-decoration-thickness: 1.5px;
}

/* Shared section heading. Lives here rather than in a component file because
   both page sections and the site-wide CTA band use it. */
.section-title {
  margin: 0;
  font-family: var(--display-font);
  font-size: clamp(2.15rem, 3.2vw, 3rem);
  font-weight: 800;
  line-height: 1.05;
  text-align: center;
}

/* Headline primitives, shared by every page hero. An explicit class rather
   than a descendant span selector, which would also catch the arrow inside a
   CTA button and paint it pink. */
.accent {
  color: var(--pink);
}

.emoji {
  display: inline-block;
  /* Hero headline emoji. One absolute size on the About, Rentals and Contact
     heroes (not an em fraction of each page's headline, which vary): 0.7x the
     About hero's heading size, per client. The homepage hero overrides this
     to scale with its much larger headline (homepage.css). */
  font-size: clamp(1.68rem, 2.94vw, 2.03rem);
  transform: translateY(-0.08em);
}

:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 3px;
  border-radius: 6px;
}

/* "‹ All bounce houses" back link. Shared by the rental page and the booking
   form (hence here, not in rental_show.css). */
.rental-back {
  display: inline-block;
  margin-bottom: 18px;
  color: var(--ink); /* pink at body size is 3.4:1; keep the brand as the underline */
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--pink);
  text-decoration-thickness: 2px;
  text-underline-offset: 0.2em;
}

.rental-back:hover {
  color: var(--pink);
}

/* Screen-reader-only text (e.g. a table header with no visible label). */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* Rails' field_with_errors wrapper (config/initializers/field_error_proc.rb):
   no layout of its own, just a red edge on the control inside it. */
.field_with_errors {
  display: contents;
}

.field_with_errors input,
.field_with_errors textarea,
.field_with_errors select {
  border-color: var(--no-ink);
}

.skip-link {
  position: absolute;
  left: 16px;
  top: 16px;
  z-index: 10;
  padding: 12px 22px;
  border-radius: 999px;
  background: var(--ink);
  color: #ffffff;
  font-family: var(--display-font);
  font-size: 1rem;
  font-weight: 700;
  transform: translateY(-200%);
}

.skip-link:focus-visible {
  transform: translateY(0);
}
