/* ============================================================================
   Safari Heirloom — Materials: paper · glass · clay (+ buttons, cards, fields)
   Law VI: glass is CHROME ONLY (nav, floating bars). Never behind text/CTA/photo.
   (Design spec §2.3.)
   ========================================================================== */

/* --- Paper: the default content surface ----------------------------------- */
.paper {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-paper);
}

/* --- Glass: chrome only --------------------------------------------------- */
.glass {
  background: var(--glass-tint);
  -webkit-backdrop-filter: blur(20px) saturate(1.4);
  backdrop-filter: blur(20px) saturate(1.4);
  border-bottom: 1px solid var(--glass-edge);
  box-shadow: var(--shadow-glass);
}
/* No backdrop-filter, or user prefers less transparency → solid paper floor */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .glass { background: var(--paper); }
}
@media (prefers-reduced-transparency: reduce) {
  .glass { background: var(--paper); -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* --- Buttons -------------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5em;
  min-height: 3rem; padding: 0.75rem 1.5rem;
  font-weight: 600; line-height: 1; text-decoration: none; cursor: pointer;
  border-radius: var(--r-pill); border: 1px solid transparent;
  transition: transform var(--dur-micro) var(--ease-settle),
              box-shadow var(--dur-base) var(--ease-settle),
              background-color var(--dur-base) var(--ease-settle);
  -webkit-tap-highlight-color: transparent;
}
.btn:active { transform: scale(0.98); }

/* Clay — the one primary action. Amber gradient with a lit top sheen, a big
   forgiving target, a tactile hover lift and an honest pressed-in active. */
.btn-clay {
  min-height: 3.25rem; padding-inline: 1.75rem;
  color: var(--on-brand);
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--brand-bright) 84%, #ffffff) 0%,
    var(--brand-bright) 34%, var(--brand) 100%);
  box-shadow: var(--shadow-clay);
}
.btn-clay:hover { color: var(--on-brand); }   /* hold the white label over global a:hover */
@media (hover: hover) {
  .btn-clay:hover {
    transform: translateY(-1px);
    box-shadow:
      inset 0 1px 0 rgba(255,240,224,0.50), inset 0 -2px 4px rgba(74,32,4,0.28),
      0 2px 4px rgba(40,26,12,0.24),
      0 14px 28px -8px color-mix(in srgb, var(--brand) 56%, transparent),
      0 26px 46px -18px color-mix(in srgb, var(--brand) 42%, transparent);
  }
}
.btn-clay:active {
  transform: translateY(0) scale(0.98);
  box-shadow: inset 0 2px 5px rgba(74,32,4,0.40), 0 1px 2px rgba(40,26,12,0.20);
}
.btn-clay:disabled { background: var(--ink-faint); box-shadow: none; opacity: 0.6; cursor: not-allowed; }

/* Ghost — quiet secondary, never competes */
.btn-ghost {
  background: transparent; color: var(--brand);
  border-color: color-mix(in srgb, var(--brand) 35%, transparent);
}
.btn-ghost:hover { background: var(--brand-tint); color: var(--brand-bright);
  border-color: color-mix(in srgb, var(--brand) 55%, transparent); }

.btn-lg { min-height: 3.5rem; padding-inline: 2rem; font-size: var(--fs-1); }

/* --- Card (paper content block) ------------------------------------------ */
.card {
  background: var(--paper); border: 1px solid var(--line);
  border-radius: var(--r-card); box-shadow: var(--shadow-paper);
  padding: var(--space-lg); overflow: clip;
  transition: transform var(--dur-base) var(--ease-settle), box-shadow var(--dur-base) var(--ease-settle);
}
.card--media { padding: 0; }                       /* photo fills the frame   */
.card--media img { border-radius: inherit; }
a.card:hover, .card--interactive:hover { transform: translateY(-2px); box-shadow: var(--shadow-raised); }

/* --- Field (paper-sunk input) -------------------------------------------- */
.field { display: grid; gap: 0.4rem; margin-bottom: var(--space-md); }
.field > label { font-weight: 600; font-size: var(--fs--1); color: var(--ink-soft); }
.field .req { color: var(--error); }
.control {
  width: 100%; min-height: 3rem; padding: 0.7rem 0.9rem;
  background: var(--sunk); color: var(--ink);
  border: 1px solid var(--line); border-radius: var(--r-input);
  transition: border-color var(--dur-micro) var(--ease-settle), box-shadow var(--dur-micro) var(--ease-settle);
}
.control::placeholder { color: var(--ink-faint); }
.control:focus-visible { border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 30%, transparent); outline: none; }
.control[aria-invalid="true"] { border-color: var(--error); }

/* Bespoke select chevron — replaces the raw OS arrow (only the background-image
   longhand is overridden, so the --sunk fill from .control is preserved). */
select.control {
  -webkit-appearance: none; appearance: none; padding-right: 2.5rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23333333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 0.9rem center;
}
select.control:invalid { color: var(--ink-faint); }        /* greyed until a real option is chosen */
:root[data-theme="dark"] select.control {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23e0e0e0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
}
textarea.control { resize: vertical; min-height: 5.5rem; line-height: 1.5; }  /* no sideways drag breaking the grid */
@media (hover: hover) {
  .control:hover:not(:focus):not([aria-invalid="true"]) {
    border-color: color-mix(in srgb, var(--brand) 28%, var(--line));
  }
}
.control[aria-invalid="true"]:focus-visible {              /* error ring matches the red border */
  border-color: var(--error);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--error) 22%, transparent);
}
.field-error { font-size: var(--fs--1); color: var(--error); min-height: 1.1em; }

/* status messages carry a WORD + color (never color alone) */
.alert { border-radius: var(--r-input); padding: var(--space-sm) var(--space-md); font-weight: 500; }
.alert-success { background: color-mix(in srgb, var(--success) 12%, var(--paper)); color: var(--success);
  border: 1px solid color-mix(in srgb, var(--success) 40%, transparent); }
.alert-error { background: color-mix(in srgb, var(--error) 10%, var(--paper)); color: var(--error);
  border: 1px solid color-mix(in srgb, var(--error) 40%, transparent); }

/* --- Chip / tag ----------------------------------------------------------- */
.chip {
  display: inline-flex; align-items: center; gap: 0.4em;
  padding: 0.3rem 0.75rem; border-radius: var(--r-pill);
  background: var(--brand-tint); color: var(--brand);
  font-size: var(--fs--1); font-weight: 600;
}
