/* NovoLink global design tokens and baseline UI normalization. */
:root {
  --novo-font-sans: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --novo-font-mono: "SF Mono", "Fira Code", Consolas, "Liberation Mono", Menlo, monospace;

  --novo-text-xs: 12px;
  --novo-text-sm: 13px;
  --novo-text-base: 14px;
  --novo-text-md: 15px;
  --novo-text-lg: 16px;
  --novo-text-xl: 18px;
  --novo-text-2xl: 20px;
  --novo-text-3xl: 24px;

  --novo-leading-tight: 1.3;
  --novo-leading-normal: 1.5;
  --novo-leading-relaxed: 1.7;

  --novo-weight-normal: 400;
  --novo-weight-medium: 500;
  --novo-weight-semibold: 600;
  --novo-weight-bold: 700;

  --novo-primary: #0b4db3;
  --novo-primary-hover: #0a42a0;
  --novo-primary-soft: #eef4ff;
  --novo-primary-ring: rgba(11, 77, 179, 0.18);

  --novo-text-primary: #1a1a2e;
  --novo-text-secondary: #4a4a6a;
  --novo-text-tertiary: #8e8ea0;
  --novo-text-on-primary: #ffffff;
  --novo-text-inverse: #ffffff;

  --novo-bg-primary: #ffffff;
  --novo-bg-secondary: #f5f6fa;
  --novo-bg-tertiary: #eef0f5;
  --novo-bg-page: #f4f7ff;

  --novo-border: #d0d5dd;
  --novo-border-light: #e4e7ed;

  --novo-success: #10b981;
  --novo-warning: #f59e0b;
  --novo-danger: #ef4444;
  --novo-info: #3b82f6;

  --novo-spacing-2xs: 2px;
  --novo-spacing-xs: 4px;
  --novo-spacing-sm: 8px;
  --novo-spacing-md: 12px;
  --novo-spacing-lg: 16px;
  --novo-spacing-xl: 20px;
  --novo-spacing-2xl: 24px;

  --novo-radius-sm: 6px;
  --novo-radius-md: 8px;
  --novo-radius-lg: 12px;
  --novo-radius-xl: 16px;
  --novo-radius-2xl: 22px;
  --novo-radius-pill: 999px;

  --novo-shadow-sm: 0 6px 16px rgba(20, 35, 60, 0.06);
  --novo-shadow-md: 0 12px 28px rgba(20, 35, 60, 0.1);
  --novo-shadow-lg: 0 18px 45px rgba(20, 35, 60, 0.14);
}

html {
  color: var(--novo-text-primary);
  font-family: var(--novo-font-sans);
  font-size: var(--novo-text-base);
  line-height: var(--novo-leading-normal);
}

body {
  color: var(--novo-text-primary);
  font-family: var(--novo-font-sans);
  font-size: var(--novo-text-base);
  line-height: var(--novo-leading-normal);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

button,
input,
select,
textarea {
  color: inherit;
  font-family: var(--novo-font-sans);
  font-size: var(--novo-text-base);
  letter-spacing: 0;
}

input,
select,
textarea {
  background: var(--novo-bg-primary);
  border-color: var(--novo-border);
  color: var(--novo-text-primary);
}

input::placeholder,
textarea::placeholder {
  color: var(--novo-text-tertiary);
  opacity: 1;
}

button,
a,
input,
select,
textarea {
  -webkit-tap-highlight-color: transparent;
}

:focus-visible {
  outline: 2px solid var(--novo-primary);
  outline-offset: 2px;
}

.material-symbols-outlined {
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
}

.novo-surface {
  background: var(--novo-bg-primary);
  border: 1px solid var(--novo-border-light);
  border-radius: var(--novo-radius-xl);
  box-shadow: var(--novo-shadow-sm);
}

.novo-page-title {
  color: var(--novo-text-primary);
  font-size: var(--novo-text-2xl);
  font-weight: var(--novo-weight-bold);
  line-height: var(--novo-leading-tight);
}

.novo-muted {
  color: var(--novo-text-secondary);
}

.novo-top-link,
.novo-primary-action {
  align-items: center;
  border-radius: var(--novo-radius-pill);
  display: inline-flex;
  font-size: var(--novo-text-sm);
  font-weight: var(--novo-weight-semibold);
  gap: var(--novo-spacing-sm);
  line-height: var(--novo-leading-tight);
  min-height: 36px;
  padding: 8px 14px;
  text-decoration: none;
}

.novo-top-link {
  background: var(--novo-bg-primary);
  border: 1px solid var(--novo-border-light);
  color: var(--novo-text-primary);
}

.novo-top-link:hover {
  border-color: var(--novo-primary);
  color: var(--novo-primary);
}

.novo-primary-action {
  background: var(--novo-primary);
  border: 1px solid var(--novo-primary);
  color: var(--novo-text-on-primary);
}

.novo-primary-action:hover {
  background: var(--novo-primary-hover);
}
