/* Nizhenets design kit — base (Nöbet 3, 2026-10-25)
   Quiet defaults: readable sizes (nothing under 13px), serif headings with a real display step, tabular numbers where
   numbers are compared, visible focus (also in Windows high contrast), calm motion. */
*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  background: var(--nz-canvas);
}

body {
  margin: 0;
  min-height: 100dvh;
  font-family: var(--nz-font-sans);
  font-size: var(--nz-text-md);
  line-height: var(--nz-leading);
  color: var(--nz-ink);
  background: var(--nz-canvas);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-kerning: normal;
}

[hidden] { display: none !important; }

h1, h2, h3, h4 {
  font-family: var(--nz-font-serif);
  font-weight: 500;
  line-height: var(--nz-leading-tight);
  letter-spacing: var(--nz-tracking-tight);
  margin: 0 0 var(--nz-space-3);
  color: var(--nz-ink);
}
h1 { font-size: var(--nz-text-2xl); line-height: 1.15; letter-spacing: -0.018em; }
h2 { font-size: var(--nz-text-xl); line-height: 1.2; }
h3 { font-size: var(--nz-text-lg); }
h4 { font-size: var(--nz-text-md); font-family: var(--nz-font-sans); font-weight: 600; letter-spacing: 0; }

p { margin: 0 0 var(--nz-space-3); }
.nz-prose p, .nz-prose li { max-width: var(--nz-measure); }
.nz-prose { line-height: 1.6; }
small, .nz-small { font-size: var(--nz-text-xs); }
strong, b { font-weight: 600; }

a {
  color: var(--nz-accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
  text-decoration-color: color-mix(in srgb, var(--nz-accent) 40%, transparent);
  transition: text-decoration-color var(--nz-fast) var(--nz-ease), color var(--nz-fast) var(--nz-ease);
}
a:hover { text-decoration-color: currentColor; }

code, kbd, samp, pre, .nz-mono {
  font-family: var(--nz-font-mono);
  font-size: 0.93em;
  font-variant-ligatures: none;
}
code, kbd, samp {
  padding: 0.12em 0.42em;
  border-radius: var(--nz-radius-xs);
  background: var(--nz-raised);
  color: var(--nz-ink);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nz-line) 70%, transparent);
}
kbd { box-shadow: inset 0 0 0 1px var(--nz-line), inset 0 -1px 0 var(--nz-line); }
pre {
  margin: 0 0 var(--nz-space-4);
  padding: var(--nz-space-4);
  overflow: auto;
  border: 1px solid var(--nz-line);
  border-radius: var(--nz-radius-control);
  background: var(--nz-field);
  line-height: 1.6;
}
pre code { padding: 0; background: none; box-shadow: none; }

hr, .nz-divider {
  border: 0;
  border-top: 1px solid var(--nz-line);
  margin: var(--nz-space-6) 0;
}

img, svg, video, canvas { max-width: 100%; height: auto; }
svg { fill: none; }

table { border-collapse: collapse; font-variant-numeric: tabular-nums; }
th { text-align: left; font-weight: 500; }
/* Numbers that are compared line up: tables, definition lists, time and data elements. */
time, data, output, dd, .nz-num { font-variant-numeric: tabular-nums; }

button, input, select, textarea {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}
button { cursor: pointer; }
button:disabled { cursor: not-allowed; }
::placeholder { color: var(--nz-ink-3); opacity: 1; }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
legend { padding: 0; }

:focus { outline: none; }
:focus-visible { outline: none; box-shadow: var(--nz-focus); border-radius: var(--nz-radius-control); }
a:focus-visible { border-radius: var(--nz-radius-xs); }

::selection { background: color-mix(in srgb, var(--nz-accent) 24%, var(--nz-surface)); color: var(--nz-ink); }

* { scrollbar-width: thin; scrollbar-color: var(--nz-line-strong) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--nz-line-strong) 70%, transparent); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background-color: var(--nz-line-strong); }
*::-webkit-scrollbar-track { background: transparent; }

.nz-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Windows high contrast / forced colours: box-shadow focus rings are dropped there, so the ring becomes an outline. */
@media (forced-colors: active) {
  :focus-visible { outline: 2px solid Highlight; outline-offset: 2px; }
  code, kbd, samp { border: 1px solid CanvasText; }
}

/* ---------- 2026-10-21 polish ----------
   Panels only (pages that declare an nz-app), so the Konum visitor page renders exactly as before:
   balanced heading lines, no lonely last word in paragraphs, kit-coloured native checkboxes and radios. */
:is(html:has(meta[name="nz-app"]), body[data-nz-app]) :is(h1, h2, h3) { text-wrap: balance; }
:is(html:has(meta[name="nz-app"]), body[data-nz-app]) :is(p, li, dd) { text-wrap: pretty; }
:is(html:has(meta[name="nz-app"]), body[data-nz-app]) :is(input[type="checkbox"], input[type="radio"], progress) { accent-color: var(--nz-accent); }
/* The browser's grey file button becomes a kit button. */
input[type="file"] { max-width: 100%; color: var(--nz-ink-2); font-size: var(--nz-text-sm); }
input[type="file"]::file-selector-button {
  margin-right: 12px; min-height: 32px; padding: 4px 12px;
  border: 1px solid var(--nz-line); border-radius: var(--nz-radius-control);
  background: var(--nz-surface); color: var(--nz-ink); font: inherit; font-weight: 500; cursor: pointer;
  box-shadow: var(--nz-hairline);
  transition: background-color var(--nz-fast) var(--nz-ease), border-color var(--nz-fast) var(--nz-ease);
}
input[type="file"]::file-selector-button:hover { background: var(--nz-raised); border-color: var(--nz-line-strong); }
