/* Shared CPV visual language: public site, dashboard and auth pages. */
:root {
  --cpv-font-heading: "Montserrat", "Segoe UI", sans-serif;
  --cpv-font-body: "Nunito Sans", "Segoe UI", sans-serif;
  --cpv-blue: #174a9c;
  --cpv-blue-2: #0878b8;
  --cpv-sky: #eaf6ff;
  --cpv-sky-2: #d7edff;
  --cpv-gold: #ffc21a;
  --cpv-gold-dark: #e6a800;
  --cpv-text: #23435f;
  --cpv-muted: #74889a;
  --cpv-line: rgba(23, 74, 156, .12);
  --cpv-card: rgba(255, 255, 255, .82);
  --cpv-card-solid: #ffffff;
  --cpv-shadow: 0 24px 70px rgba(23, 74, 156, .11);
  --cpv-soft-shadow: 0 14px 38px rgba(23, 74, 156, .08);
  --cpv-sidebar-width: 292px;
  --cpv-radius-xl: 34px;
  --cpv-radius-lg: 24px;
  --cpv-radius-md: 16px;
  --cpv-radius-sm: 12px;
  --cpv-focus-ring: 0 0 0 4px rgba(8, 120, 184, .14);

  --dvfu-blue: var(--cpv-blue);
  --dvfu-bright-blue: var(--cpv-blue-2);
  --dvfu-light-blue: var(--cpv-sky);
  --dvfu-sky: var(--cpv-sky-2);
  --dvfu-accent: var(--cpv-blue-2);
  --dvfu-gold: var(--cpv-gold);
  --ink: var(--cpv-text);
  --muted: var(--cpv-muted);
  --line: var(--cpv-line);
  --shadow: var(--cpv-shadow);
  --nav-width: var(--cpv-sidebar-width);
}

html { scroll-behavior: smooth; }

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  overflow-x: hidden;
  color: var(--cpv-text);
  font-family: var(--cpv-font-body);
  background:
    radial-gradient(circle at 8% 10%, rgba(255, 194, 26, .22), transparent 24rem),
    radial-gradient(circle at 90% 8%, rgba(67, 183, 239, .22), transparent 28rem),
    linear-gradient(135deg, #ffffff 0%, #eef8ff 48%, #ffffff 100%);
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(23, 74, 156, .032) 1px, transparent 1px),
    linear-gradient(90deg, rgba(23, 74, 156, .032) 1px, transparent 1px);
  background-size: 44px 44px;
  mask-image: linear-gradient(to bottom, #000, transparent 75%);
}

h1, h2, h3, h4, h5, h6,
.logo-text h1,
.side-link,
.btn-primary,
.btn-outline,
.btn-lk,
.button,
.rating-tab,
.view-btn,
.filter-btn {
  font-family: var(--cpv-font-heading);
}

p, li, td, small { font-family: var(--cpv-font-body); }

a { text-decoration: none; }

.cpv-form,
.application-form,
.compact-create-form {
  display: grid;
  gap: 16px;
}

.application-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.cpv-field,
.cpv-form-row {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.cpv-field label,
.cpv-form label,
.application-form label,
.field-label-row label {
  color: var(--cpv-blue);
  font-family: var(--cpv-font-heading);
  font-size: .86rem;
  font-weight: 760;
  line-height: 1.25;
}

.cpv-field-control,
.cpv-form input,
.cpv-form select,
.cpv-form textarea,
.application-form input,
.application-form select,
.application-form textarea,
select.cpv-field-control,
textarea.cpv-field-control {
  width: 100%;
  min-height: 46px;
  padding: 12px 14px;
  border: 1px solid rgba(23, 74, 156, .14);
  border-radius: var(--cpv-radius-sm);
  background: rgba(255, 255, 255, .86);
  color: var(--cpv-text);
  font: 650 .95rem var(--cpv-font-body);
  outline: none;
  box-shadow: 0 10px 24px rgba(23, 74, 156, .045);
  transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}

.cpv-form textarea,
.application-form textarea,
textarea.cpv-field-control {
  min-height: 118px;
  resize: vertical;
}

.cpv-field-control:focus,
.cpv-form input:focus,
.cpv-form select:focus,
.cpv-form textarea:focus,
.application-form input:focus,
.application-form select:focus,
.application-form textarea:focus {
  border-color: rgba(8, 120, 184, .48);
  background: #fff;
  box-shadow: var(--cpv-focus-ring), 0 10px 24px rgba(23, 74, 156, .065);
}

.cpv-field-control:disabled,
.cpv-form input:disabled,
.cpv-form select:disabled,
.cpv-form textarea:disabled,
.application-form input:disabled,
.application-form select:disabled,
.application-form textarea:disabled {
  opacity: .72;
  cursor: not-allowed;
}

.cpv-error,
.errorlist {
  margin: 4px 0 0;
  color: #9b1c1c;
  font-weight: 700;
}

.errorlist {
  padding-left: 18px;
}

.messages {
  display: grid;
  gap: 10px;
  margin-bottom: 18px;
}

.message {
  padding: 14px 16px;
  border: 1px solid var(--cpv-line);
  border-radius: 18px;
  background: #fff;
  color: var(--cpv-blue);
  font-weight: 700;
  box-shadow: var(--cpv-soft-shadow);
}

.muted { color: var(--cpv-muted); }
.ok { color: #0d7a43; }
.off { color: #9b1c1c; }

.cpv-stat-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.cpv-stat-pill,
.stat {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid var(--cpv-line);
  border-radius: 999px;
  background: rgba(234, 246, 255, .72);
  color: var(--cpv-blue);
  font-family: var(--cpv-font-heading);
  font-size: .86rem;
  font-weight: 760;
}

.cpv-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
  border: 1px solid var(--cpv-line);
  border-radius: var(--cpv-radius-md);
  background: #fff;
  box-shadow: var(--cpv-soft-shadow);
}

.cpv-table th,
.cpv-table td {
  border-bottom: 1px solid var(--cpv-line);
  padding: 11px 12px;
  text-align: left;
  font-size: .92rem;
}

.cpv-table th {
  background: #f4f9ff;
  color: var(--cpv-blue);
  font-family: var(--cpv-font-heading);
  font-weight: 800;
}

.cpv-table tr:last-child td {
  border-bottom: 0;
}

.cpv-pre {
  white-space: pre-wrap;
  border: 1px solid var(--cpv-line);
  border-radius: var(--cpv-radius-md);
  padding: 14px;
  background: #f8fbff;
  color: var(--cpv-text);
}
