/* Conscientia Vera Design System v2.0.0 — components consume semantic tokens only */

.cv-button {
  min-block-size: var(--cv-target-md);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--cv-space-2);
  padding-block: var(--cv-space-3);
  padding-inline: var(--cv-space-5);
  border: var(--cv-border-1) solid transparent;
  border-radius: var(--cv-radius-md);
  cursor: pointer;
  font-size: var(--cv-text-sm);
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  transition: background-color var(--cv-duration-fast) var(--cv-ease-standard), border-color var(--cv-duration-fast) var(--cv-ease-standard), color var(--cv-duration-fast) var(--cv-ease-standard), transform var(--cv-duration-fast) var(--cv-ease-standard);
}

.cv-button:hover { text-decoration: none; transform: translateY(-1px); }
.cv-button:active { transform: translateY(0); }
.cv-button:disabled, .cv-button[aria-disabled="true"] { cursor: not-allowed; opacity: .5; transform: none; }
.cv-button--primary { background: var(--cv-accent); color: var(--cv-accent-fg); }
.cv-button--primary:hover { background: var(--cv-accent-hover); color: var(--cv-accent-hover-fg); }
.cv-button--secondary { border-color: var(--cv-border-strong); background: var(--cv-bg-raised); color: var(--cv-fg); }
.cv-button--secondary:hover { border-color: var(--cv-accent-text); color: var(--cv-accent-text); }
.cv-button--ghost { border-color: var(--cv-border); background: transparent; color: var(--cv-fg); }
.cv-button--ghost:hover { border-color: var(--cv-border-strong); background: var(--cv-bg-sunken); }
.cv-button--danger { background: var(--cv-danger-action); color: var(--cv-danger-action-fg); }
.cv-button--danger:hover { background: var(--cv-danger-action-hover); }
.cv-button--sm { min-block-size: var(--cv-target-sm); padding-block: var(--cv-space-2); padding-inline: var(--cv-space-3); font-size: var(--cv-text-xs); }
.cv-button--lg { min-block-size: var(--cv-target-lg); padding-inline: var(--cv-space-6); font-size: var(--cv-text-base); }
.cv-button--icon { inline-size: var(--cv-target-md); padding: 0; }

.cv-link { color: var(--cv-link); font-weight: 700; text-decoration-thickness: 1px; }
.cv-link:hover { color: var(--cv-accent-text); }

.cv-field { display: grid; gap: var(--cv-space-2); }
.cv-label { color: var(--cv-fg); font-size: var(--cv-text-sm); font-weight: 700; }
.cv-help { color: var(--cv-fg-muted); font-size: var(--cv-text-sm); }
.cv-error { color: var(--cv-danger-fg); font-size: var(--cv-text-sm); font-weight: 700; }

.cv-input, .cv-select, .cv-textarea {
  inline-size: 100%;
  min-block-size: var(--cv-target-md);
  padding-block: var(--cv-space-3);
  padding-inline: var(--cv-space-3);
  border: var(--cv-border-1) solid var(--cv-border-strong);
  border-radius: var(--cv-radius-md);
  background: var(--cv-bg-raised);
  color: var(--cv-fg);
  line-height: 1.35;
}

.cv-textarea { min-block-size: 8rem; resize: vertical; }
.cv-input::placeholder, .cv-textarea::placeholder { color: var(--cv-fg-subtle); }
.cv-input:hover, .cv-select:hover, .cv-textarea:hover { border-color: var(--cv-accent-text); }
.cv-input[aria-invalid="true"], .cv-select[aria-invalid="true"], .cv-textarea[aria-invalid="true"] { border-color: var(--cv-danger-fg); }
.cv-checkbox, .cv-radio { accent-color: var(--cv-accent-text); }

.cv-card {
  padding: var(--cv-space-6);
  border: var(--cv-border-1) solid var(--cv-border);
  border-radius: var(--cv-radius-lg);
  background: var(--cv-bg-raised);
  color: var(--cv-fg);
}

.cv-card--sunken { background: var(--cv-bg-sunken); }
.cv-card--interactive { transition: border-color var(--cv-duration-fast) var(--cv-ease-standard), transform var(--cv-duration-fast) var(--cv-ease-standard); }
.cv-card--interactive:hover { border-color: var(--cv-border-strong); transform: translateY(-2px); }

.cv-badge {
  display: inline-flex;
  align-items: center;
  min-block-size: var(--cv-target-sm);
  padding-inline: var(--cv-space-3);
  border: var(--cv-border-1) solid var(--cv-border);
  border-radius: var(--cv-radius-full);
  background: var(--cv-bg-sunken);
  color: var(--cv-fg-muted);
  font-size: var(--cv-text-xs);
  font-weight: 700;
}

.cv-badge--mind { border-color: var(--cv-mind); color: var(--cv-mind); }
.cv-badge--money { border-color: var(--cv-money); color: var(--cv-money); }
.cv-badge--momentum { border-color: var(--cv-momentum); color: var(--cv-momentum); }

.cv-alert { display: grid; gap: var(--cv-space-2); padding: var(--cv-space-4); border-radius: var(--cv-radius-md); font-size: var(--cv-text-sm); }
.cv-alert--success { background: var(--cv-success-bg); color: var(--cv-success-fg); }
.cv-alert--warning { background: var(--cv-warning-bg); color: var(--cv-warning-fg); }
.cv-alert--danger { background: var(--cv-danger-bg); color: var(--cv-danger-fg); }
.cv-alert--info { background: var(--cv-info-bg); color: var(--cv-info-fg); }

.cv-callout {
  padding: var(--cv-space-6);
  border: var(--cv-border-1) solid var(--cv-callout-accent);
  border-inline-start-width: var(--cv-border-2);
  border-radius: var(--cv-radius-lg);
  background: var(--cv-callout-bg);
  color: var(--cv-callout-fg);
}

.cv-callout > :last-child { margin-block-end: 0; }
.cv-callout .cv-eyebrow { color: var(--cv-callout-accent); }

.cv-divider { block-size: var(--cv-border-1); margin-block: var(--cv-space-6); border: 0; background: var(--cv-border); }

.cv-disclosure { border-block-end: var(--cv-border-1) solid var(--cv-border); }
.cv-disclosure summary { min-block-size: var(--cv-target-lg); display: flex; align-items: center; justify-content: space-between; gap: var(--cv-space-4); cursor: pointer; color: var(--cv-fg); font-family: var(--cv-font-display); font-size: var(--cv-text-xl); list-style: none; }
.cv-disclosure summary::-webkit-details-marker { display: none; }
.cv-disclosure summary::after { color: var(--cv-accent-text); content: "+"; font-family: var(--cv-font-body); font-size: var(--cv-text-xl); }
.cv-disclosure[open] summary::after { content: "−"; }
.cv-disclosure > p { max-inline-size: 66ch; color: var(--cv-fg-muted); }

.cv-language-menu { position: relative; z-index: var(--cv-z-dropdown); }
.cv-language-menu__trigger { min-block-size: var(--cv-target-md); display: inline-flex; align-items: center; gap: var(--cv-space-2); padding-inline: var(--cv-space-3); border: var(--cv-border-1) solid var(--cv-border); border-radius: var(--cv-radius-md); background: var(--cv-bg-raised); color: var(--cv-fg); cursor: pointer; font-size: var(--cv-text-sm); font-weight: 700; }
.cv-language-menu__trigger:hover, .cv-language-menu__trigger[aria-expanded="true"] { border-color: var(--cv-accent-text); color: var(--cv-accent-text); }
.cv-language-menu__chevron { inline-size: 1rem; block-size: 1rem; transition: transform var(--cv-duration-fast) var(--cv-ease-standard); }
.cv-language-menu__trigger[aria-expanded="true"] .cv-language-menu__chevron { transform: rotate(180deg); }
.cv-language-menu__list { position: absolute; inset-block-start: calc(100% + var(--cv-space-2)); inset-inline-end: 0; inline-size: max-content; min-inline-size: 10rem; margin: 0; padding: var(--cv-space-2); border: var(--cv-border-1) solid var(--cv-border-strong); border-radius: var(--cv-radius-md); background: var(--cv-bg-raised); list-style: none; }
.cv-language-menu__list[hidden] { display: none; }
.cv-language-menu__list a { min-block-size: var(--cv-target-md); display: flex; align-items: center; padding-inline: var(--cv-space-3); border-radius: var(--cv-radius-sm); color: var(--cv-fg); font-size: var(--cv-text-sm); font-weight: 600; text-decoration: none; }
.cv-language-menu__list a:hover, .cv-language-menu__list a[aria-current="true"] { background: var(--cv-bg-sunken); color: var(--cv-accent-text); }

.cv-nav { display: flex; align-items: center; gap: var(--cv-space-5); }
.cv-nav a { color: var(--cv-fg-muted); font-size: var(--cv-text-sm); font-weight: 700; text-decoration: none; }
.cv-nav a:hover, .cv-nav a[aria-current="page"] { color: var(--cv-accent-text); }

.cv-loading { inline-size: 1em; block-size: 1em; display: inline-block; border: var(--cv-border-2) solid currentColor; border-inline-end-color: transparent; border-radius: var(--cv-radius-full); animation: cv-spin var(--cv-duration-slow) linear infinite; }
@keyframes cv-spin { to { transform: rotate(1turn); } }

@media (prefers-reduced-motion: reduce) { .cv-loading { animation: none; } }
