/* kobychev.com · shared UI v1 · reference: ui.shadcn.com (light, 2026-10-13).
   Namespaced shadcn tokens avoid collisions with the legacy --muted text token. */
@font-face {
  font-family: Geist; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("./fonts/geist-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: Geist; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("./fonts/geist-cyrillic.woff2") format("woff2");
  unicode-range: U+0400-052F,U+2116;
}
@font-face {
  font-family: "Geist Mono"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("./fonts/geist-mono-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: "Geist Mono"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("./fonts/geist-mono-cyrillic.woff2") format("woff2");
  unicode-range: U+0400-052F,U+2116;
}
:root {
  --ui-background: oklch(1 0 0);
  --ui-foreground: oklch(0 0 0);
  --ui-card: oklch(1 0 0);
  --ui-card-foreground: oklch(0 0 0);
  --ui-primary: oklch(0 0 0);
  --ui-primary-hover: rgb(0 0 0 / .7);
  --ui-primary-foreground: oklch(.985 0 0);
  --ui-secondary: oklch(.97 0 0);
  --ui-secondary-foreground: oklch(.205 0 0);
  --ui-muted: oklch(.97 0 0);
  --ui-muted-foreground: oklch(.556 0 0);
  --ui-accent: oklch(.97 0 0);
  --ui-accent-foreground: oklch(.205 0 0);
  --ui-destructive: oklch(.577 .245 27.325);
  --ui-border: oklch(.922 0 0);
  --ui-input: oklch(.922 0 0);
  --ui-ring: oklch(.708 0 0);
  --ui-radius: .625rem;
  --ui-radius-sm: calc(var(--ui-radius) * .6);
  --ui-radius-md: calc(var(--ui-radius) * .8);
  --ui-radius-lg: var(--ui-radius);
  --ui-radius-xl: calc(var(--ui-radius) * 1.4);
  --ui-shadow-sm: 0 1px 2px rgb(0 0 0 / .05);
  --ui-font-sans: Geist, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --ui-font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --ui-container-max: 1360px;
  --ui-container-gutter: 24px;
  /* Compatibility aliases. Page-specific layout variables remain untouched. */
  --ink: var(--ui-foreground); --black: var(--ui-primary);
  --muted: var(--ui-muted-foreground); --faint: var(--ui-muted-foreground);
  --line: var(--ui-border); --border: var(--ui-border);
  --surface: var(--ui-card); --soft: var(--ui-muted); --radius: var(--ui-radius-xl);
  --mono: var(--ui-font-mono);
  font-family: var(--ui-font-sans); color: var(--ui-foreground); background: var(--ui-background);
  font-synthesis: none; color-scheme: light;
}
body.ds {
  min-width: 0; overflow-x: clip;
  color: var(--ui-foreground); background: var(--ui-background);
  font-family: var(--ui-font-sans); font-size: 16px; line-height: 1.6;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
body.ds *, body.ds *::before, body.ds *::after { box-sizing: border-box; }
/* Shared outer frame: CV, header, main sections and footer use the same edges. */
.ds-public .container,.ds-guide .guide-container {
  width: min(calc(100% - var(--ui-container-gutter) * 2),var(--ui-container-max));
  max-width: var(--ui-container-max); margin-inline: auto;
}
@media(max-width:800px) { :root { --ui-container-gutter:16px; } }
body.ds :is(button,input,select,textarea) { font-family: var(--ui-font-sans); }
body.ds :is(code,pre,.mono,.block-no) { font-family: var(--ui-font-mono); }
body.ds :is(h1,h2,h3) { color: var(--ui-foreground); font-weight: 600; }
body.ds :is(h1,h2) { letter-spacing: -.04em; text-wrap: balance; }
body.ds :is(h3) { letter-spacing: -.02em; }
body.ds a { text-underline-offset: 4px; }
body.ds :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
  outline: 2px solid var(--ui-ring); outline-offset: 3px;
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--ui-ring) 35%, transparent);
}
body.ds :is(button,input,select,textarea):disabled {
  pointer-events: none; cursor: not-allowed; opacity: .5;
}
body.ds .button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 40px; max-width: 100%; padding: 9px 16px;
  border: 1px solid transparent; border-radius: var(--ui-radius-md);
  color: var(--ui-primary-foreground); background: var(--ui-primary);
  font: 500 14px/1.4 var(--ui-font-sans); text-decoration: none;
  box-shadow: var(--ui-shadow-sm); cursor: pointer;
  transition: background-color .26s ease-out, box-shadow .26s ease-out;
}
@media (hover:hover) and (pointer:fine) {
  body.ds .button:not(:disabled):hover { color:var(--ui-primary-foreground); background:var(--ui-primary-hover); }
}
body.ds .button:active { transform: none; }
body.ds :is(a,button,summary,.file-card,.featured,.nav-card,.filter-tabs button,.project-control) { transition:background-color .26s ease-out,color .26s ease-out,border-color .26s ease-out,box-shadow .26s ease-out,text-decoration-color .26s ease-out; }
body.ds :is(.footer-grid a:not(.button),.breadcrumbs a,.brand,.work-title,.service-hub-card h2 a) { text-decoration-line:underline; text-decoration-color:transparent; text-decoration-thickness:1px; }
@media (hover:hover) and (pointer:fine) {
  body.ds :is(.footer-grid a:not(.button),.breadcrumbs a,.brand,.work-title,.service-hub-card h2 a):hover { text-decoration-color:currentColor; }
  body.ds .wire-card:hover { background:var(--ui-muted); border-color:var(--ui-ring); }
  body.ds .public-nav a:hover { color:var(--ui-foreground); background:var(--ui-accent); box-shadow:inset 0 0 0 1px var(--ui-border); }
  body.ds .mobile-estimate:hover { background:var(--ui-primary-hover); }
  body.ds :is(.text-action,.promo-banner button):not(:disabled):hover { text-decoration-color:var(--ui-muted-foreground); }
  body.ds .promo-banner :is(a,button):hover { background:rgb(255 255 255 / .12); }
  body.ds summary:hover { background:var(--ui-accent); }
  body.ds :is(input,select,textarea):not(:disabled):not([type=hidden]):not([aria-invalid=true]):hover { border-color:var(--ui-ring); }
  body.ds :is(.checkbox-line,.consent-line):hover { background:var(--ui-accent); }
}
body.ds :is(.checkbox-line,.consent-line,summary) { cursor:pointer; border-radius:var(--ui-radius-sm); transition:background-color .26s ease-out; }
/* Calculator options signal hover through text, not a full-width painted row. */
body.ds .calculator-component :is(.checkbox-line,.flexible-details>summary) { transition:color .26s ease-out; }
body.ds .calculator-component .service-choice strong { text-decoration-line:underline; text-decoration-color:transparent; text-decoration-thickness:1px; text-underline-offset:3px; transition:color .26s ease-out,text-decoration-color .26s ease-out; }
@media (hover:hover) and (pointer:fine) {
  body.ds .calculator-component :is(.checkbox-line,.flexible-details>summary):hover { background:transparent; color:var(--ui-primary-hover); }
  body.ds .calculator-component .service-choice:hover strong { text-decoration-color:currentColor; }
}
body.ds .button:is(.button-secondary,.secondary,.outline) {
  color: var(--ui-foreground); background: var(--ui-background); border-color: var(--ui-border);
}
@media (hover:hover) and (pointer:fine) {
  body.ds .button:is(.button-secondary,.secondary,.outline):not(:disabled):hover { color:var(--ui-accent-foreground); background:var(--ui-accent); }
  body.ds :is(.dialog-close,.estimate-table button,.ds-sheet-close,.ds-contents-toggle,.project-control):not(:disabled):hover { background:var(--ui-accent); border-color:var(--ui-ring); }
  body.ds :is(.filter-tabs button,.tabs [role=tab]):not([aria-selected=true]):not(:disabled):hover { color:var(--ui-foreground); background:var(--ui-background); }
}
body.ds :is(.dialog-close,.estimate-table button,.ds-sheet-close,.ds-contents-toggle) { transition:background-color .26s ease-out,border-color .26s ease-out; }
body.ds .button.button-small { min-height: 36px; padding: 7px 12px; }
body.ds .button svg { flex: none; width: 16px; height: 16px; }
body.ds :is(.badge,.eyebrow,.status,.pill,.priority,.format,.file-status) {
  display: inline-flex; align-items: center; width: fit-content; max-width: 100%;
  border: 1px solid var(--ui-border); border-radius: var(--ui-radius-sm);
  padding: 3px 8px; color: var(--ui-secondary-foreground); background: var(--ui-secondary);
  font: 500 12px/1.4 var(--ui-font-sans); letter-spacing: 0; text-transform: none;
}
body.ds :is(.work-tag,.intent-tag,.keyword-tag,.status.ready,.file-status.review) {
  color: var(--ui-primary-foreground); background: var(--ui-primary); border-color: transparent;
}
body.ds :is(.pill,.priority,.format,.status.wait) { background: var(--ui-background); }
body.ds :is(.card,.file-card,.featured,.home-card,.skills-panel,.stat-card,.nav-card) {
  border-color: var(--ui-border); border-radius: var(--ui-radius-xl);
  color: var(--ui-card-foreground); background: var(--ui-card); box-shadow: var(--ui-shadow-sm);
}
body.ds :is(input:not([type=hidden]),select,textarea) {
  min-width: 0; min-height: 40px; border: 1px solid var(--ui-input); border-radius: var(--ui-radius-md);
  padding: 8px 12px; color: var(--ui-foreground); background: var(--ui-background);
  font-size: 14px; box-shadow: var(--ui-shadow-sm);
}
body.ds :is(input,textarea)::placeholder { color: var(--ui-muted-foreground); }
body.ds input[aria-invalid=true] { border-color: var(--ui-destructive); }
body.ds table { width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.5; }
body.ds :is(th,td) { padding: 12px 14px; border-color: var(--ui-border); }
body.ds th { color: var(--ui-muted-foreground); background: var(--ui-background); font-weight: 500; text-align: left; }
body.ds .filter-tabs {
  display: flex; gap: 4px; padding: 4px; border-radius: var(--ui-radius-lg); background: var(--ui-muted);
}
body.ds .filter-tabs button {
  min-height: 36px; border: 1px solid transparent; border-radius: var(--ui-radius-sm);
  padding: 7px 12px; color: var(--ui-muted-foreground); background: transparent; font-size: 14px;
}
body.ds .filter-tabs button[aria-selected=true] {
  color: var(--ui-foreground); background: var(--ui-background); box-shadow: var(--ui-shadow-sm);
}
body.ds .tabs > [role=tablist] { gap: 4px; padding: 4px; border: 0; border-radius: var(--ui-radius-lg); background: var(--ui-muted); }
body.ds .tabs [role=tab] { min-height: 36px; padding: 7px 12px; border: 1px solid transparent; border-radius: var(--ui-radius-sm); font-size: 14px; color: var(--ui-muted-foreground); background: transparent; }
body.ds .tabs [role=tab][aria-selected=true] { color: var(--ui-foreground); background: var(--ui-background); box-shadow: var(--ui-shadow-sm); }
body.ds .file-card { padding: 24px; gap: 12px; }
body.ds .file-card :is(h3,p,code) { overflow-wrap: anywhere; }
body.ds .file-card h3 { font-size: 16px; line-height: 1.4; }
body.ds .file-card p { color: var(--ui-muted-foreground); font-size: 14px; line-height: 1.6; }
body.ds .file-card :is(.actions,.button) { margin-top: auto; }
body.ds .file-card .actions .button { margin-top: 0; }
body.ds .file-card code { font-size: 12px; }
body.ds .file-card > .file-meta { order: 0; }
body.ds .file-card > h3 { order: 1; }
body.ds .file-card > p { order: 2; }
body.ds .file-card > code { order: 3; }
body.ds .file-card > :is(.actions,.button) { order: 4; }
body.ds .accordion { border-color: var(--ui-border); border-radius: var(--ui-radius-xl); background: var(--ui-card); }
body.ds .accordion summary { min-height: 56px; padding: 16px 24px; font-size: 14px; font-weight: 500; }
body.ds .file-center { border-color: var(--ui-border); border-radius: var(--ui-radius-xl); background: var(--ui-card); }
body.ds .file-center > summary { min-height: 56px; padding: 16px 24px; font-size: 14px; font-weight: 500; }
body.ds .file-center > summary:hover { background: var(--ui-muted); }
body.ds .file-center-body { padding: 24px; border-color: var(--ui-border); }
body.ds mark { color: var(--ui-secondary-foreground); background: var(--ui-secondary); }
body.ds ::selection { color: white; background: black; }
.ds-skip { position: fixed; left: 12px; top: 8px; z-index: 250; padding: 10px 14px; border-radius: var(--ui-radius-md); color: white; background: black; transform: translateY(-160%); }
.ds-skip:focus { transform: none; }
@media (pointer: coarse) {
  body.ds :is(.button,.project-control,.filter-tabs button) { min-height: 44px; }
}
@media (max-width: 600px) {
  body.ds .file-card,body.ds .file-center-body { padding: 20px; }
  body.ds .filter-tabs { flex-wrap: nowrap; overflow-x: auto; }
  body.ds .filter-tabs button { flex: none; white-space: nowrap; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body.ds *,body.ds *::before,body.ds *::after { scroll-behavior: auto!important; transition: none!important; animation: none!important; }
}
