/*
 * Neurinta Theme for Vaadin 25.
 * Derived from the visual language of neurinta-auth-client. It intentionally
 * styles only public Vaadin properties and parts, so application layouts,
 * routes and domain-specific components remain the consumer's responsibility.
 */
html {
  color-scheme: light;
  --neurinta-navy: #071f31;
  --neurinta-primary: #0b948a;
  --neurinta-accent: #18aa9f;
  --neurinta-ink: #173043;
  --neurinta-muted: #687b89;
  --neurinta-canvas: #f3f8fb;
  --neurinta-surface: #fff;
  --neurinta-soft: #dff5f2;
  --neurinta-line: #dce6eb;
  --neurinta-success: #087763;
  --neurinta-error: #b4233d;
  --lumo-base-color: var(--neurinta-surface);
  --lumo-body-text-color: var(--neurinta-ink);
  --lumo-header-text-color: var(--neurinta-navy);
  --lumo-secondary-text-color: var(--neurinta-muted);
  --lumo-primary-color: var(--neurinta-primary);
  --lumo-primary-text-color: var(--neurinta-primary);
  --lumo-primary-contrast-color: #fff;
  --lumo-primary-color-50pct: rgb(11 148 138 / 50%);
  --lumo-primary-color-10pct: var(--neurinta-soft);
  --lumo-success-color: var(--neurinta-success);
  --lumo-success-text-color: var(--neurinta-success);
  --lumo-success-contrast-color: #fff;
  --lumo-success-color-50pct: rgb(8 119 99 / 50%);
  --lumo-success-color-10pct: #e4f6f0;
  --lumo-error-color: var(--neurinta-error);
  --lumo-error-text-color: var(--neurinta-error);
  --lumo-error-contrast-color: #fff;
  --lumo-error-color-50pct: rgb(180 35 61 / 50%);
  --lumo-error-color-10pct: #fff0f2;
  --lumo-font-size-m: 1rem;
  --lumo-font-size-s: .9375rem;
  --lumo-font-size-xs: .875rem;
  --lumo-font-size-xl: 1.375rem;
  --lumo-line-height-m: 1.5;
  --lumo-space-xs: .25rem;
  --lumo-space-s: .5rem;
  --lumo-space-m: 1rem;
  --lumo-space-l: 1.5rem;
  --lumo-space-xl: 2rem;
  --lumo-border-radius-m: 6px;
  --lumo-border-radius-l: 8px;
  --vaadin-focus-ring-color: var(--neurinta-primary);
  --vaadin-focus-ring-width: 2px;
  --vaadin-input-field-height: 40px;
  --vaadin-input-field-background: var(--neurinta-surface);
  --vaadin-input-field-border-color: #cbd9e0;
  --vaadin-input-field-border-width: 1px;
  --vaadin-input-field-value-color: var(--neurinta-ink);
  --vaadin-input-field-label-color: var(--neurinta-muted);
  --vaadin-input-field-invalid-background: #fff0f2;
  --vaadin-grid-cell-padding: 10px 14px;
  --vaadin-form-layout-column-spacing: 1.5rem;
  --neurinta-row-height: 42px;
  background: var(--neurinta-canvas);
  color: var(--lumo-body-text-color);
  font-family: var(--lumo-font-family);
}

html[data-density="compact"] {
  --vaadin-input-field-height: 34px;
  --vaadin-grid-cell-padding: 6px 10px;
  --neurinta-row-height: 34px;
  --lumo-space-m: .75rem;
  --lumo-font-size-s: .875rem;
}

body { background: var(--neurinta-canvas); }
h1, h2, h3 { font-weight: 600; }
h2 { font-size: 1.25rem; }

.neurinta-visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

vaadin-button {
  min-height: 36px;
  transition: background-color 140ms, border-color 140ms;
}

vaadin-button:not([theme~="primary"]):not([theme~="tertiary"]):not([theme~="tertiary-inline"]) {
  background: transparent;
  box-shadow: inset 0 0 0 1px #cbd9e0;
}

vaadin-button[theme~="primary"] { background-image: none; text-shadow: none; }
vaadin-button[focus-ring] { outline: 2px solid var(--neurinta-primary); outline-offset: 2px; }

:is(vaadin-text-field, vaadin-password-field, vaadin-text-area, vaadin-email-field,
    vaadin-number-field, vaadin-integer-field, vaadin-big-decimal-field,
    neurinta-decimal-field, vaadin-combo-box, vaadin-multi-select-combo-box,
    vaadin-select, vaadin-date-picker, vaadin-date-time-picker, vaadin-time-picker)[invalid] {
  --vaadin-input-field-border-color: var(--neurinta-error);
}

:is(vaadin-number-field, vaadin-integer-field, vaadin-big-decimal-field, neurinta-decimal-field)::part(input-field) {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

vaadin-text-area { min-height: 110px; }
vaadin-checkbox { min-height: 36px; }
vaadin-checkbox-group::part(group) { gap: 8px 20px; }
vaadin-combo-box-item, vaadin-multi-select-combo-box-item, vaadin-select-item { min-height: 40px; }
vaadin-multi-select-combo-box::part(chip) { background: #edf3f6; color: var(--neurinta-ink); }

vaadin-tabs { width: 100%; background: transparent; }
vaadin-tab { font-size: .9375rem; color: var(--neurinta-muted); }
vaadin-tab[selected] { color: var(--neurinta-navy); font-weight: 600; }
vaadin-tab::before { background: var(--neurinta-accent); }

vaadin-grid { font-size: var(--lumo-font-size-s); background: var(--neurinta-surface); }
vaadin-grid::part(cell) { min-height: var(--neurinta-row-height); border-color: var(--neurinta-line); }
vaadin-grid::part(header-cell), vaadin-grid::part(footer-cell) {
  font-size: .875rem;
  font-weight: 600;
  text-transform: none;
  text-shadow: none;
  color: var(--neurinta-muted);
  background: #edf3f6;
}
vaadin-grid::part(body-cell) { background: var(--neurinta-surface); }
vaadin-grid::part(odd-row-cell) { background: #f8fbfc; }
vaadin-grid::part(body-cell):hover { background: #edf3f6; }
vaadin-grid::part(selected-row-cell) { background: var(--neurinta-soft); color: var(--neurinta-ink); text-shadow: none; }
vaadin-grid::part(selected-row-cell first-column-cell) { box-shadow: inset 3px 0 var(--neurinta-accent); }

vaadin-dialog::part(overlay),
vaadin-menu-bar-submenu::part(overlay),
vaadin-select-overlay::part(overlay),
vaadin-combo-box-overlay::part(overlay) {
  background: var(--neurinta-surface);
  border: 1px solid var(--neurinta-line);
  border-radius: 8px;
  box-shadow: 0 12px 40px rgb(7 31 49 / 12%);
}
vaadin-dialog::part(header) { background: var(--neurinta-surface); border-bottom: 1px solid var(--neurinta-line); }
vaadin-dialog::part(footer) { background: var(--neurinta-canvas); border-top: 1px solid var(--neurinta-line); gap: 8px; flex-wrap: wrap; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
