@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;700&display=swap");

/*
  Reusable light theme:
  1. Include Tailwind CDN on the page
  2. Include this stylesheet
  3. Reuse classes such as:
     theme-shell, theme-ambient, theme-grid-mask,
     font-display, module-card, module-badge,
     module-chip, module-copy, module-link, module-icon
*/

:root {
  --theme-canvas: #fff7f7;
  --theme-text: #111827;
  --theme-muted: #6b7280;
  --theme-primary: #ef4444;
  --theme-primary-strong: #b91c1c;
  --theme-surface: #ffffff;
  --theme-chip: #fef2f2;
  --theme-border: rgba(239, 68, 68, 0.12);
  --theme-border-strong: #fca5a5;
  --theme-card-shadow: 0 20px 48px rgba(239, 68, 68, 0.08);
}

.theme-shell {
  background-color: var(--theme-canvas);
  color: var(--theme-text);
  font-family: "Plus Jakarta Sans", sans-serif;
}

.theme-ambient {
  background:
    radial-gradient(circle at top left, rgba(239, 68, 68, 0.18), transparent 32%),
    radial-gradient(circle at top right, rgba(248, 113, 113, 0.14), transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #fff7f7 56%, #fff1f2 100%);
}

.theme-grid-mask {
  -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.42), rgba(0, 0, 0, 0.08));
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.42), rgba(0, 0, 0, 0.08));
}

.bg-grid {
  background-image:
    linear-gradient(rgba(239, 68, 68, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(239, 68, 68, 0.06) 1px, transparent 1px);
}

.font-display {
  font-family: "Space Grotesk", sans-serif;
}

.module-card {
  display: block;
  color: inherit;
  text-decoration: none;
  border: 1px solid var(--theme-border);
  background-color: var(--theme-surface);
  box-shadow: var(--theme-card-shadow);
  transition:
    transform 300ms ease,
    border-color 300ms ease,
    background-color 300ms ease;
}

.module-card:hover {
  transform: translateY(-4px);
  border-color: var(--theme-border-strong);
  background-color: rgba(254, 242, 242, 0.4);
}

.module-icon {
  display: flex;
  height: 3.5rem;
  width: 3.5rem;
  align-items: center;
  justify-content: center;
  border-radius: 1rem;
  color: #ffffff;
}

.module-badge {
  border-radius: 9999px;
  background-color: #fee2e2;
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--theme-primary-strong);
}

.module-copy {
  color: var(--theme-muted);
}

.module-chip {
  border: 1px solid #fee2e2;
  border-radius: 9999px;
  background-color: rgba(254, 242, 242, 0.7);
  padding: 0.25rem 0.75rem;
}

.module-link {
  color: var(--theme-primary-strong);
}

.surface-panel {
  border: 1px solid var(--theme-border);
  background-color: rgba(255, 255, 255, 0.92);
  box-shadow: 0 24px 64px rgba(185, 28, 28, 0.08);
  backdrop-filter: blur(20px);
}

.surface-soft {
  border: 1px solid #fee2e2;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(254, 242, 242, 0.92));
}

.theme-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  background-color: var(--theme-primary);
  padding: 0.75rem 1.25rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: #ffffff;
  text-decoration: none;
  transition:
    transform 200ms ease,
    background-color 200ms ease;
}

.theme-button:hover {
  transform: translateY(-1px);
  background-color: var(--theme-primary-strong);
}

.theme-button-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #fecaca;
  border-radius: 9999px;
  background-color: rgba(255, 255, 255, 0.9);
  padding: 0.75rem 1.25rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--theme-primary-strong);
  text-decoration: none;
}

.theme-button-secondary:hover {
  background-color: #fef2f2;
}

.detail-card {
  border: 1px solid #fee2e2;
  border-radius: 1.5rem;
  background-color: rgba(255, 255, 255, 0.9);
  padding: 1.25rem;
}

.utility-form-field {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.utility-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--theme-text);
}

.utility-input {
  width: 100%;
  border: 1px solid #fecaca;
  border-radius: 1rem;
  background-color: rgba(255, 255, 255, 0.95);
  padding: 0.875rem 1rem;
  font-size: 0.9375rem;
  color: var(--theme-text);
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease,
    background-color 200ms ease;
}

.utility-input:focus {
  outline: none;
  border-color: #f87171;
  box-shadow: 0 0 0 4px rgba(248, 113, 113, 0.14);
}

.utility-input[type="file"] {
  padding: 0.75rem 1rem;
}

.utility-input::file-selector-button {
  margin-right: 0.875rem;
  border: 0;
  border-radius: 9999px;
  background-color: #fee2e2;
  padding: 0.5rem 0.875rem;
  font-weight: 600;
  color: var(--theme-primary-strong);
  cursor: pointer;
}

.utility-help {
  font-size: 0.8125rem;
  line-height: 1.65;
  color: var(--theme-muted);
}

.utility-callout {
  border: 1px solid #fecaca;
  border-radius: 1.5rem;
  background: linear-gradient(180deg, #ffffff, #fff5f5);
  padding: 1rem 1.125rem;
}

.utility-status {
  border: 1px solid #fecaca;
  border-radius: 1.25rem;
  background-color: #fffaf9;
  padding: 1rem 1.125rem;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--theme-muted);
}

.utility-status strong {
  color: var(--theme-text);
}

.utility-list {
  margin: 0;
  padding-left: 1.1rem;
  color: var(--theme-muted);
}

.utility-list li + li {
  margin-top: 0.625rem;
}

.utility-code {
  border-radius: 9999px;
  background-color: #fee2e2;
  padding: 0.15rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--theme-primary-strong);
}

.theme-button,
.theme-button-secondary {
  cursor: pointer;
}

button.theme-button,
button.theme-button-secondary {
  border: none;
}

.theme-button[disabled],
.theme-button-secondary[disabled] {
  cursor: not-allowed;
  opacity: 0.5;
  transform: none;
}
