/* ============================================================
   nimbus-tailwind-bridge.css - Nimbus design 3.0.0 over the
   prebuilt Tailwind utilities (styles.css and the inline
   Tailwind blocks on contact, partners, privacy, terms and
   thank-you). Loaded last in <head> on those pages and on
   index and faq, so equal-specificity utilities resolve here.
   Every value is a --nb-* token. No colour literals.
   Remove a rule once its page stops using the utility.
   ============================================================ */

/* ---- Base: grey canvas, ink text, token borders ---- */
body { background: var(--nb-color-background-canvas); color: var(--nb-color-text-primary); font-family: var(--nb-font-sans); }
:where(*, ::before, ::after) { border-color: var(--nb-color-border-subtle); }
::placeholder { color: var(--nb-color-text-muted); }

/* ---- Text colours ---- */
.text-black,
.text-gray-900,
.text-gray-800 { color: var(--nb-color-text-primary); }
.text-gray-700,
.text-gray-600 { color: var(--nb-color-text-body); }
.text-gray-500,
.text-gray-400 { color: var(--nb-color-text-muted); }
.text-white { color: var(--nb-color-action-on-primary); }
.hover\:text-black:hover { color: var(--nb-color-text-primary); }
.hover\:text-gray-600:hover { color: var(--nb-color-text-body); }
.hover\:text-white:hover { color: var(--nb-color-action-on-primary); }
.accent { color: var(--nb-color-accent-text); }

/* Status colours keep their meaning and sit beside a word. */
.text-green-600 { color: var(--nb-color-status-success); }
.text-red-600 { color: var(--nb-color-status-danger); }
.text-blue-600 { color: var(--nb-color-status-info); }
.text-amber-600,
.text-amber-700 { color: var(--nb-color-status-warning); }

/* ---- Backgrounds: white work on the canvas, ink for actions ---- */
.bg-white { background-color: var(--nb-color-background-surface); }
.bg-gray-100,
.bg-black\/5 { background-color: var(--nb-color-background-subtle); }
.bg-black,
.bg-gray-900 { background-color: var(--nb-color-action-primary); }
.hover\:bg-gray-800:hover,
.hover\:bg-black:hover { background-color: var(--nb-color-action-hover); }
.bg-green-600 { background-color: var(--nb-color-status-success); }
.bg-black\/30 { background-color: color-mix(in srgb, var(--nb-color-background-inverse) 30%, transparent); }
.group:hover .group-hover\:bg-black\/20 { background-color: color-mix(in srgb, var(--nb-color-background-inverse) 20%, transparent); }

/* Icon chips: one quiet fill, ink icon. Colour is not decoration. */
.bg-purple-100, .bg-teal-100, .bg-indigo-100, .bg-orange-100, .bg-cyan-100,
.bg-green-100, .bg-blue-100, .bg-amber-100,
.w-12.bg-gray-900 { background-color: var(--nb-color-background-subtle); }
.bg-purple-100 > svg, .bg-teal-100 > svg, .bg-indigo-100 > svg, .bg-orange-100 > svg, .bg-cyan-100 > svg,
.bg-green-100 > svg, .bg-blue-100 > svg, .bg-amber-100 > svg,
.w-12.bg-gray-900 > svg { color: var(--nb-color-text-primary); }
.accent-bg { background-color: var(--nb-color-accent-subtle); }
.accent-bg.text-white,
.accent-bg > svg,
.accent-bg .text-white { color: var(--nb-color-accent-text); }

/* ---- Borders ---- */
.border-gray-100,
.border-gray-200,
.border-black\/10 { border-color: var(--nb-color-border-subtle); }
.border-gray-300 { border-color: var(--nb-color-border-control); }

/* ---- Radii: 10 controls, 16 panels, pill badges ---- */
.rounded,
.rounded-lg { border-radius: var(--nb-radius-control); }
.rounded-xl,
.rounded-2xl,
.rounded-3xl { border-radius: var(--nb-radius-panel); }
.w-11.rounded-xl,
.w-12.rounded-xl,
.w-16.rounded-xl,
input.rounded-xl,
select.rounded-xl,
textarea.rounded-xl { border-radius: var(--nb-radius-control); }
.aspect-video.rounded-lg { border-radius: var(--nb-radius-panel); }

/* ---- Panels (.glass-dark is the site's card class) ---- */
.glass-dark {
  background: var(--nb-color-background-surface);
  border: 0;
  border-radius: var(--nb-radius-panel);
  box-shadow: var(--nb-shadow-resting);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.glass-dark.border-2 { border: 0; box-shadow: 0 0 0 2px var(--nb-color-border-control); }

/* ---- Type: semibold at most, sentence case, captions 13px ---- */
.font-bold,
.font-extrabold,
.font-black { font-weight: var(--nb-font-weight-semibold); }
.uppercase { text-transform: none; }
.tracking-wide,
.tracking-wider,
.tracking-widest { letter-spacing: normal; }
.text-xs { font-size: var(--nb-type-size-caption); line-height: var(--nb-type-leading-small); }

/* ---- Buttons built from utilities: 44px ink, radius 10, no scale ---- */
a.bg-black,
button.bg-black {
  min-height: var(--nb-size-control);
  border-radius: var(--nb-radius-control);
  font-weight: var(--nb-font-weight-medium);
  transition: background-color var(--nb-motion-fast) var(--nb-motion-ease);
}
.hover\:scale-105:hover,
.hover\:scale-110:hover { transform: none; }

/* ---- Fields: control edge, ink edge while typing ---- */
input.focus\:ring-2:focus,
select.focus\:ring-2:focus,
textarea.focus\:ring-2:focus {
  border-color: var(--nb-color-text-primary);
  box-shadow: none;
  outline: none;
}
.focus\:ring-black:focus { --tw-ring-color: var(--nb-color-text-primary); }

/* ---- Elevation: outlined at rest, shadow only when floating ---- */
.shadow-sm,
.shadow,
.shadow-md,
.shadow-lg,
.shadow-xl,
.shadow-2xl { box-shadow: var(--nb-shadow-resting); }

/* ---- No blur, no glass, no decorative gradients ---- */
.backdrop-blur,
.backdrop-blur-sm,
.backdrop-blur-md,
.backdrop-blur-lg,
.backdrop-blur-xl,
.backdrop-blur-2xl { backdrop-filter: none; -webkit-backdrop-filter: none; }
.bg-gradient-to-b,
.bg-gradient-to-br,
.bg-gradient-to-r,
.bg-gradient-to-t { background-image: none; }
