/* cyrillic-ext */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-cyrillic-ext.var.woff2") format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-cyrillic.var.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek-ext */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-greek-ext.var.woff2") format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-greek.var.woff2") format("woff2");
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* vietnamese */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-vietnamese.var.woff2") format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-ext.var.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/assets/fonts/inter-latin.var.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;
}

:root {
  color-scheme: light;
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  --font-display: "Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  --page-max-width: 1720px;
  --sidebar-width: 430px;
  --page-padding-inline: clamp(18px, 2.6vw, 34px);

  --color-bg-top: #fbfbfd;
  --color-bg-bottom: #f2f2f7;
  --color-bg-grid: rgba(60, 60, 67, 0.08);

  --color-surface-glass: rgba(255, 255, 255, 0.68);
  --color-surface-card: rgba(255, 255, 255, 0.9);
  --color-surface-card-strong: rgba(255, 255, 255, 0.98);
  --color-surface-overlay: rgba(250, 250, 252, 0.94);
  --color-surface-inset: rgba(242, 242, 247, 0.88);
  --color-surface-disabled: rgba(229, 229, 234, 0.82);

  --color-surface-border: rgba(255, 255, 255, 0.7);
  --color-surface-card-border: rgba(60, 60, 67, 0.16);
  --color-border-strong: rgba(60, 60, 67, 0.34);
  --color-border-soft: rgba(60, 60, 67, 0.16);

  --color-text-primary: #1d1d1f;
  --color-text-secondary: rgba(60, 60, 67, 0.82);
  --color-text-tertiary: rgba(60, 60, 67, 0.62);
  --color-text-inverse: #ffffff;

  --color-accent: #0a84ff;
  --color-accent-strong: #006bd6;
  --color-accent-soft: rgba(10, 132, 255, 0.13);
  --color-success: #248a3d;
  --color-success-soft: rgba(52, 199, 89, 0.14);
  --color-warning: #a15c00;
  --color-warning-soft: rgba(255, 149, 0, 0.14);
  --color-danger: #d70015;
  --color-danger-soft: rgba(255, 59, 48, 0.12);

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-7: 32px;
  --space-8: 40px;

  --radius-xs: 8px;
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 18px;
  --radius-xl: 22px;
  --radius-pill: 999px;

  --font-size-caption: 0.75rem;
  --font-size-body-sm: 0.875rem;
  --font-size-body: 0.9375rem;
  --font-size-body-lg: 1rem;
  --font-size-title-sm: 1rem;
  --font-size-title: 1.125rem;
  --font-size-title-lg: clamp(1.85rem, 3vw, 2.6rem);
  --line-height-tight: 1.1;
  --line-height-body: 1.45;

  --control-height-sm: 32px;
  --control-height-md: 44px;
  --control-height-lg: 50px;
  --control-padding-inline: 14px;

  --shadow-card: 0 18px 42px rgba(28, 43, 56, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.72);
  --shadow-panel: 0 8px 22px rgba(28, 43, 56, 0.08);
  --shadow-floating: 0 22px 48px rgba(16, 28, 38, 0.26);
  --shadow-interactive: 0 5px 14px rgba(18, 34, 48, 0.09);

  --focus-ring: 0 0 0 3px rgba(10, 132, 255, 0.24);
  --state-disabled-opacity: 0.55;

  --workflow-masthead-bg: rgba(251, 251, 253, 0.74);
  --workflow-masthead-bg-bottom: rgba(251, 251, 253, 0.42);
  --workflow-masthead-cta: #0a84ff;
  --workflow-masthead-cta-hover: #006bd6;
  --workflow-masthead-border: rgba(60, 60, 67, 0.14);
  --workflow-masthead-muted: rgba(60, 60, 67, 0.66);

  --viewer-info-width: 246px;
  --viewer-hierarchy-width: 136px;
  --viewer-panel-radius: 16px;
  --viewer-panel-pad-x: 10px;
  --viewer-panel-pad-y: 8px;
  --viewer-panel-bg: rgba(16, 24, 31, 0.78);
  --viewer-panel-border-outer: rgba(173, 196, 211, 0.16);
  --viewer-panel-shadow: 0 18px 30px rgba(5, 10, 16, 0.24);
  --app-footer-height: 84px;
  --app-workspace-chrome: 298px;
  --workflow-side-menu-width: 84px;
  --workspace-height: clamp(320px, calc(100dvh - var(--app-workspace-chrome) - var(--app-footer-height)), 660px);

  --ink: var(--color-text-primary);
  --ink-muted: var(--color-text-secondary);
  --accent: var(--color-accent);
  --danger: var(--color-danger);
  --ok: var(--color-success);
}

@media (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --color-bg-top: #161618;
    --color-bg-bottom: #0f1012;
    --color-bg-grid: rgba(235, 235, 245, 0.07);

    --color-surface-glass: rgba(30, 30, 32, 0.68);
    --color-surface-card: rgba(28, 28, 30, 0.9);
    --color-surface-card-strong: rgba(36, 36, 38, 0.98);
    --color-surface-overlay: rgba(28, 28, 30, 0.94);
    --color-surface-inset: rgba(44, 44, 46, 0.9);
    --color-surface-disabled: rgba(58, 58, 60, 0.78);

    --color-surface-border: rgba(255, 255, 255, 0.12);
    --color-surface-card-border: rgba(235, 235, 245, 0.14);
    --color-border-strong: rgba(235, 235, 245, 0.3);
    --color-border-soft: rgba(235, 235, 245, 0.14);

    --color-text-primary: #f5f5f7;
    --color-text-secondary: rgba(235, 235, 245, 0.78);
    --color-text-tertiary: rgba(235, 235, 245, 0.56);

    --color-accent: #0a84ff;
    --color-accent-strong: #64a9ff;
    --color-accent-soft: rgba(10, 132, 255, 0.2);
    --color-success: #32d74b;
    --color-success-soft: rgba(50, 215, 75, 0.16);
    --color-warning: #ffd60a;
    --color-warning-soft: rgba(255, 214, 10, 0.16);
    --color-danger: #ff453a;
    --color-danger-soft: rgba(255, 69, 58, 0.16);

    --shadow-card: 0 18px 42px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.08);
    --shadow-panel: 0 10px 28px rgba(0, 0, 0, 0.28);
    --shadow-floating: 0 24px 54px rgba(0, 0, 0, 0.58);
    --shadow-interactive: 0 7px 18px rgba(0, 0, 0, 0.22);

    --workflow-masthead-bg: rgba(28, 28, 30, 0.74);
    --workflow-masthead-bg-bottom: rgba(28, 28, 30, 0.42);
    --workflow-masthead-cta-hover: #409cff;
    --workflow-masthead-border: rgba(235, 235, 245, 0.12);
    --workflow-masthead-muted: rgba(235, 235, 245, 0.58);

    --viewer-panel-bg: rgba(22, 22, 24, 0.82);
    --viewer-panel-border-outer: rgba(235, 235, 245, 0.12);
  }
}

@media (prefers-contrast: more) {
  :root {
    --color-surface-card-border: rgba(60, 60, 67, 0.42);
    --color-border-soft: rgba(60, 60, 67, 0.34);
    --focus-ring: 0 0 0 3px rgba(0, 122, 255, 0.5);
    --state-disabled-opacity: 0.72;
  }
}

@media (prefers-color-scheme: dark) and (prefers-contrast: more) {
  :root {
    --color-surface-card-border: rgba(235, 235, 245, 0.42);
    --color-border-soft: rgba(235, 235, 245, 0.34);
    --focus-ring: 0 0 0 3px rgba(100, 169, 255, 0.58);
  }
}

html:has(.app-footer--app) {
  --app-footer-height: 44px;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

body {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100dvh;
  font-family: var(--font-sans);
  font-size: 17px;
  color: var(--color-text-primary);
  overflow-x: hidden;
  background:
    linear-gradient(180deg, var(--color-bg-top) 0%, var(--color-bg-bottom) 100%),
    linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
    linear-gradient(180deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px));
  background-size: auto, 48px 48px, 48px 48px;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  font-optical-sizing: auto;
}

button,
input,
select,
output {
  font: inherit;
}

.site-container {
  width: min(100%, var(--page-max-width));
  margin-inline: auto;
  padding-inline: max(var(--page-padding-inline), env(safe-area-inset-left), env(safe-area-inset-right));
}

.site-readable {
  width: min(840px, calc(100% - 32px));
  margin-inline: auto;
}

.site-section {
  display: grid;
  gap: var(--space-6);
  padding-block: var(--space-8);
}

.site-section--divided {
  border-top: 1px solid var(--color-border-soft);
}

.site-section-heading,
.site-copy {
  display: grid;
  gap: var(--space-2);
  min-width: 0;
}

.site-section-heading {
  max-width: 760px;
}

.site-kicker {
  margin: 0;
  color: var(--color-accent-strong);
  font-size: var(--font-size-caption);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.site-title {
  margin: 0;
  color: var(--color-text-primary);
  font-family: var(--font-display);
  font-size: clamp(1.55rem, 2.5vw, 2.4rem);
  line-height: 1.08;
  letter-spacing: 0;
}

.site-title--hero {
  font-size: clamp(2.2rem, 4.8vw, 4.8rem);
  line-height: 1.02;
}

.site-lead {
  max-width: 650px;
  margin: 0;
  color: var(--color-text-secondary);
  font-size: clamp(1rem, 1.4vw, 1.18rem);
  line-height: 1.55;
}

.site-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
}

.site-grid {
  display: grid;
  gap: var(--space-4);
}

.site-grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.site-grid--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.site-grid--4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.surface {
  min-width: 0;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
}

.surface--solid {
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-panel);
}

.surface--glass {
  background: var(--color-surface-glass);
  box-shadow: var(--shadow-card);
  backdrop-filter: blur(22px) saturate(150%);
  -webkit-backdrop-filter: blur(22px) saturate(150%);
}

.surface--inset {
  background: var(--color-surface-inset);
}

.surface--hero {
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-card);
}

.promo-card {
  padding: var(--space-5);
}

@media (max-width: 980px) {
  .site-grid--3,
  .site-grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .site-container {
    padding-inline: max(var(--space-5), env(safe-area-inset-left), env(safe-area-inset-right));
  }

  .site-grid--2,
  .site-grid--3,
  .site-grid--4 {
    grid-template-columns: 1fr;
  }

  .site-actions,
  .site-actions > a,
  .site-actions > button {
    width: 100%;
  }
}

.page {
  display: flex;
  align-items: flex-start;
  gap: var(--space-6);
  width: min(100%, var(--page-max-width));
  max-width: var(--page-max-width);
  margin: 0 auto;
  padding: 10px max(var(--page-padding-inline), env(safe-area-inset-right)) 10px max(var(--page-padding-inline), env(safe-area-inset-left));
  min-width: 0;
}

/* Сетка: верх + рабочее поле на всю ширину контента (как на шаге 1) */
.page.page--upload-layout {
  width: 100%;
  max-width: var(--page-max-width);
  display: grid;
  grid-template-columns: var(--workflow-side-menu-width) minmax(340px, var(--sidebar-width)) minmax(520px, 1fr);
  grid-template-rows: auto auto minmax(0, 1fr);
  align-content: start;
  align-items: stretch;
  align-self: stretch;
  margin-inline: auto;
  gap: 14px;
}

.workflow-side-menu {
  position: sticky;
  top: calc(var(--header-height) + 10px);
  align-self: start;
  display: grid;
  align-content: start;
  gap: 12px;
  min-width: 0;
  min-height: 0;
  padding: 2px 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.workflow-side-menu__group {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.workflow-side-menu__eyebrow {
  display: block;
  min-width: 0;
  overflow: hidden;
  color: var(--color-text-tertiary);
  font-size: 0.52rem;
  font-weight: 820;
  letter-spacing: 0.05em;
  line-height: 1;
  text-align: center;
  text-overflow: ellipsis;
  text-transform: uppercase;
}

.workflow-side-menu__button {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 6px;
  min-width: 0;
  width: 100%;
  min-height: 72px;
  padding: 7px 4px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: var(--color-surface-inset);
  color: var(--color-text-secondary);
  cursor: pointer;
}

.workflow-side-menu__button:hover {
  border-color: rgba(10, 132, 255, 0.34);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.workflow-side-menu__button[aria-current="page"] {
  border-color: rgba(10, 132, 255, 0.48);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.workflow-side-menu__button:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.workflow-side-menu__button:disabled {
  cursor: not-allowed;
  opacity: var(--state-disabled-opacity);
}

.workflow-side-menu__icon {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
  color: currentColor;
}

.workflow-side-menu__icon svg {
  width: 18px;
  height: 18px;
}

.workflow-side-menu__icon path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.workflow-side-menu__label {
  display: block;
  max-width: 100%;
  overflow-wrap: anywhere;
  color: currentColor;
  font-size: 0.63rem;
  font-weight: 760;
  line-height: 1.12;
  text-align: center;
  white-space: normal;
}

.page.page--upload-layout .controls-card {
  position: static;
  top: auto;
  flex: 0 0 auto;
  width: 100%;
  max-width: none;
  min-height: 0;
  max-height: none;
  overflow: visible;
}

.page.page--upload-layout #workflow-panel-upload {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

/* Шаг «Загрузка»: левая колонка с полноценной зоной загрузки */
.page.page--upload-layout .upload-island,
.page.page--upload-layout .my-models-island {
  min-width: 0;
  min-height: 0;
  height: auto;
  padding: 12px;
}

.page.page--upload-layout .upload-island .panel__header--compact-bar,
.page.page--upload-layout .my-models-island .panel__header--compact-bar {
  gap: 4px;
  margin-bottom: 8px;
}

.page.page--upload-layout .upload-island .panel__title,
.page.page--upload-layout .my-models-island .panel__title {
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  line-height: 1.2;
}

.page.page--upload-layout .my-models-island .panel__eyebrow {
  font-size: 0.62rem;
}

.page.page--upload-layout .upload-form {
  gap: 12px;
}

.page.page--upload-layout .upload-error-banner {
  padding: 4px 8px;
  font-size: 0.72rem;
}

.page.page--upload-layout .upload-dropzone {
  min-height: clamp(150px, 21vh, 215px);
  padding: 16px 22px;
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  border-width: 2px;
  border-radius: 22px;
}

.page.page--upload-layout .upload-dropzone__icon {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  font-size: 1rem;
  flex-shrink: 0;
}

.page.page--upload-layout .upload-dropzone__title {
  flex: 0 0 auto;
  font-size: 1.1rem;
  font-weight: 760;
  min-width: 0;
  white-space: normal;
  overflow: visible;
  text-overflow: initial;
}

.page.page--upload-layout .upload-dropzone__button {
  flex: 0 0 auto;
  min-width: 190px;
  min-height: 44px;
  padding: 0 22px;
  font-size: 0.95rem;
  font-weight: 760;
}

.page.page--upload-layout .my-models-compact {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0;
  margin-top: 4px;
}

.page.page--upload-layout .my-models-open-btn {
  min-height: 64px;
  padding: 10px 12px;
}

.page.page--upload-layout .viewer-column {
  grid-column: 3;
  grid-row: 1 / span 3;
  flex: 1 1 auto;
  width: 100%;
  max-width: none;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-content: stretch;
}

.page.page--upload-layout .viewer {
  flex: 1 1 auto;
  min-height: var(--workspace-height);
  height: var(--workspace-height);
}

/* Та же внутренняя ширина, что и у полосы шага 1 (controls-card: 10px 12px) */
.page.page--upload-layout .viewer-card {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  flex: 0 0 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 12px;
  border-radius: 20px;
}

/* Панели шагов 2–4: компактно сверху, при необходимости — вертикальный скролл */
.page.page--upload-layout .controls-card {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 0;
  max-height: var(--workspace-height);
  min-height: 0;
}

.page.page--upload-layout .controls-card .workflow-panel[data-step-panel="position"],
.page.page--upload-layout .controls-card .workflow-panel[data-step-panel="setup"],
.page.page--upload-layout .controls-card .workflow-panel[data-step-panel="generate"],
.page.page--upload-layout .controls-card .workflow-panel[data-step-panel="export"] {
  min-height: 0;
  max-height: var(--workspace-height);
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  padding-right: 2px;
  padding-bottom: 2px;
  scrollbar-gutter: stable;
}

.page.page--upload-layout .setup-workspace {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  align-items: start;
}

.page.page--upload-layout[data-workflow-step="setup"] .setup-workspace {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.page.page--upload-layout[data-workflow-step="setup"] .setup-generate-card {
  grid-column: 2;
  grid-row: 1;
}

.page.page--upload-layout[data-workflow-step="setup"] #workflow-panel-setup .setup-card[aria-label="Опалубка"] {
  grid-column: 1;
  grid-row: 1 / span 2;
}

.page.page--upload-layout[data-workflow-step="setup"] #workflow-panel-setup .setup-card[aria-label="Параметры формы"] {
  grid-column: 2;
  grid-row: 2;
}

/* Step 2: denser and cleaner settings composition on wide screens */
.page.page--upload-layout #workflow-panel-setup {
  overflow-x: hidden;
}

.page.page--upload-layout #workflow-panel-setup .setup-card {
  border-radius: var(--radius-md);
}

.page.page--upload-layout #workflow-panel-setup .setup-card .panel__body {
  gap: 10px;
}

.page.page--upload-layout #workflow-panel-setup .setup-card__head,
.page.page--upload-layout #workflow-panel-setup .setup-group__header,
.page.page--upload-layout #workflow-panel-setup .setup-subgroup__title {
  display: none;
}

.page.page--upload-layout #workflow-panel-setup .setup-workspace,
.page.page--upload-layout #workflow-panel-setup .setup-card,
.page.page--upload-layout #workflow-panel-setup .setup-card .panel__body,
.page.page--upload-layout #workflow-panel-setup .setup-mode-panels,
.page.page--upload-layout #workflow-panel-setup .setup-subgroups,
.page.page--upload-layout #workflow-panel-setup .setup-subgroup,
.page.page--upload-layout #workflow-panel-setup .setup-grid,
.page.page--upload-layout #workflow-panel-setup .setup-group {
  gap: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroups {
  display: grid;
  gap: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroups--adaptive {
  grid-template-columns: 1fr;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroups--form {
  grid-template-columns: 1fr;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup {
  display: grid;
  gap: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__title {
  margin: 0;
  font-size: 0.66rem;
  line-height: 1.2;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-tertiary);
}

.page.page--upload-layout #workflow-panel-setup .setup-grid--compact {
  grid-template-columns: 1fr;
  gap: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-grid--double {
  grid-template-columns: 1fr;
  gap: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Опалубка"] .panel__body {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  align-items: start;
}

.page.page--upload-layout #workflow-panel-setup #formwork-mode-switch {
  grid-area: auto;
}

.page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Опалубка"] .panel__body > .setup-group--compact:first-of-type {
  grid-area: auto;
}

.page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Опалубка"] .panel__body > .setup-mode-panels {
  grid-area: auto;
}

.page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Опалубка"] .panel__body > .setup-group--compact:last-of-type {
  grid-area: auto;
}

.page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Параметры формы"] .setup-grid {
  grid-template-columns: 1fr;
  gap: 0;
}

.page.page--upload-layout .setup-card,
.page.page--upload-layout #workflow-panel-position .panel,
.page.page--upload-layout #workflow-panel-generate .panel,
.page.page--upload-layout #workflow-panel-export .panel,
.page.page--upload-layout #workflow-panel-export .settings-island {
  padding: 9px 10px;
}

.page.page--upload-layout .setup-card .setup-card__head {
  margin-bottom: 0;
  gap: 2px;
}

.page.page--upload-layout .setup-card .panel__eyebrow,
.page.page--upload-layout #workflow-panel-position .panel__eyebrow,
.page.page--upload-layout #workflow-panel-generate .panel__eyebrow,
.page.page--upload-layout #workflow-panel-export .panel__eyebrow {
  font-size: 0.6rem;
}

.page.page--upload-layout .setup-card .panel__title,
.page.page--upload-layout #workflow-panel-position .panel__title,
.page.page--upload-layout #workflow-panel-generate .panel__title,
.page.page--upload-layout #workflow-panel-export .panel__title {
  font-size: 0.98rem;
}

.page.page--upload-layout .setup-card .panel__description,
.page.page--upload-layout #workflow-panel-position .panel__description,
.page.page--upload-layout #workflow-panel-generate .panel__description,
.page.page--upload-layout #workflow-panel-export .panel__description {
  font-size: 0.72rem;
  line-height: 1.3;
  margin: 0;
}

.page.page--upload-layout .workflow-panel,
.page.page--upload-layout .setup-workspace,
.page.page--upload-layout .panel__body {
  gap: var(--space-3);
}

.page.page--upload-layout .setup-group,
.page.page--upload-layout .action-group {
  padding: 8px;
  gap: 7px;
}

.page.page--upload-layout #workflow-panel-setup .setup-group {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.page.page--upload-layout .setup-group__header,
.page.page--upload-layout .action-group__header {
  gap: 2px;
}

.page.page--upload-layout .setup-group__title,
.page.page--upload-layout .action-group__title {
  font-size: 0.8rem;
}

.page.page--upload-layout .setup-group__description,
.page.page--upload-layout .action-group__description {
  font-size: 0.68rem;
  line-height: 1.28;
}

.page.page--upload-layout .setup-mode-panels,
.page.page--upload-layout .formwork-mode-controls {
  gap: var(--space-3);
}

.page.page--upload-layout .action-stack {
  gap: var(--space-3);
}

.page.page--upload-layout .input-field > span,
.page.page--upload-layout .input-field input,
.page.page--upload-layout .input-field select {
  font-size: 0.8rem;
}

.page.page--upload-layout #workflow-panel-setup .input-field {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(76px, min(42%, 160px));
  gap: 8px;
  align-items: center;
  min-height: 38px;
  padding: 5px 0;
  border-bottom: 1px solid var(--color-border-soft);
}

.page.page--upload-layout #workflow-panel-setup .input-field > span {
  grid-column: 1;
  grid-row: 1;
  font-size: 0.72rem;
  line-height: 1.25;
}

.page.page--upload-layout #workflow-panel-setup .input-field::before,
.page.page--upload-layout #workflow-panel-setup .formwork-mode-switch::before {
  content: "-";
  grid-column: 2;
  grid-row: 1;
  color: var(--color-text-tertiary);
  font-size: 0.72rem;
  font-weight: 700;
}

.page.page--upload-layout #workflow-panel-setup .input-field input,
.page.page--upload-layout #workflow-panel-setup .input-field select {
  grid-column: 3;
  grid-row: 1;
}

.page.page--upload-layout #workflow-panel-setup .input-field__calculation {
  grid-column: 3;
  grid-row: 2;
  margin-top: -3px;
  font-size: 0.68rem;
  line-height: 1.25;
}

.page.page--upload-layout #workflow-panel-setup .input-field input[type="number"],
.page.page--upload-layout #workflow-panel-setup .input-field select {
  min-height: 30px;
  padding: 0 10px;
  border-radius: 7px;
  background: var(--color-surface-inset);
  box-shadow: none;
  font-size: 0.82rem;
  font-weight: 500;
  line-height: 1.2;
}

.page.page--upload-layout #workflow-panel-setup .input-field--parting-axis-mode {
  grid-template-columns: minmax(92px, 1fr) auto minmax(220px, min(56%, 320px));
  row-gap: 3px;
}

.page.page--upload-layout #workflow-panel-setup .input-field--parting-axis-mode .segmented-control {
  grid-column: 3;
  grid-row: 1;
  width: 100%;
  min-height: 36px;
}

.page.page--upload-layout #workflow-panel-setup .input-field--parting-axis-mode .segmented-control__option {
  min-height: 28px;
  padding: 0 10px;
}

.page.page--upload-layout #workflow-panel-setup .input-field--parting-axis-mode .input-field__hint {
  display: block;
  grid-column: 3;
  grid-row: 2;
  min-width: 0;
  margin-top: -2px;
  font-size: 0.68rem;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.page.page--upload-layout #workflow-panel-setup .input-field input[type="number"]:focus-visible,
.page.page--upload-layout #workflow-panel-setup .input-field select:focus-visible {
  border-color: rgba(10, 132, 255, 0.62);
  box-shadow: 0 0 0 3px var(--color-accent-soft);
}

.page.page--upload-layout #workflow-panel-setup .source-resize {
  gap: 9px;
}

.page.page--upload-layout #workflow-panel-setup .source-resize__mode-panel {
  display: grid;
  gap: 8px;
}

.page.page--upload-layout #workflow-panel-setup .source-resize-preview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  margin: 0;
}

.page.page--upload-layout #workflow-panel-setup .source-resize-preview > div {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 7px 8px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: var(--color-surface-inset);
}

.page.page--upload-layout #workflow-panel-setup .source-resize-preview dt {
  margin: 0;
  font-size: 0.62rem;
  font-weight: 800;
  color: var(--color-text-tertiary);
}

.page.page--upload-layout #workflow-panel-setup .source-resize-preview dd {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.76rem;
  font-weight: 800;
  color: var(--color-text-primary);
}

.page.page--upload-layout #workflow-panel-setup .source-resize__submit {
  width: 100%;
}

.page.page--upload-layout #workflow-panel-setup .input-field--checkbox {
  justify-content: initial;
}

.page.page--upload-layout #workflow-panel-setup .input-field--checkbox > span {
  margin: 0;
}

.page.page--upload-layout #workflow-panel-setup .input-field--checkbox input[type="checkbox"] {
  width: 18px;
  height: 18px;
  min-height: 18px;
  justify-self: end;
}

.page.page--upload-layout .source-resize-mode-switch .button--secondary {
  min-height: 32px;
  padding: 5px 9px;
  font-size: 0.82rem;
}

.page.page--upload-layout #workflow-panel-setup button,
.page.page--upload-layout #workflow-panel-position button,
.page.page--upload-layout #workflow-panel-generate button,
.page.page--upload-layout #workflow-panel-export button {
  min-height: 34px;
  padding: 0 10px;
  font-size: 0.82rem;
}

.page.page--upload-layout #workflow-panel-setup .formwork-mode-switch {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto repeat(2, minmax(72px, 120px));
  gap: 7px;
  align-items: center;
  min-height: 38px;
  padding: 5px 0;
  border-bottom: 1px solid var(--color-border-soft);
}

.page.page--upload-layout #workflow-panel-setup .formwork-mode-switch__label {
  grid-column: 1;
  grid-row: 1;
  font-size: 0.72rem;
}

.page.page--upload-layout #workflow-panel-setup .formwork-mode-switch .button--secondary {
  min-height: 32px;
  gap: 0;
  padding: 0 10px;
  font-size: 0.76rem;
  grid-template-rows: 1fr;
}

.page.page--upload-layout #workflow-panel-setup .formwork-mode-switch__icon {
  display: none;
}

.position-panel,
.review-card {
  align-content: start;
}

.position-panel__summary {
  display: grid;
  gap: 8px;
}

.position-panel__item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 38px;
  padding: 7px 10px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: var(--color-surface-inset);
}

.position-panel__item span {
  min-width: 0;
  color: var(--color-text-tertiary);
  font-size: 0.72rem;
  font-weight: 720;
}

.position-panel__item strong {
  min-width: 0;
  color: var(--color-text-primary);
  font-size: 0.78rem;
  font-weight: 800;
  line-height: 1.15;
  text-align: right;
}

.position-panel__continue {
  width: 100%;
}

.review-workspace {
  display: grid;
  gap: 10px;
}

.page.page--upload-layout[data-workflow-step="position"],
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) {
  --workspace-height: clamp(460px, calc(100dvh - 242px), 820px);

  grid-template-columns: var(--workflow-side-menu-width) minmax(286px, 318px) minmax(640px, 1fr);
  grid-template-rows: auto auto;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel,
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .position-panel {
  gap: 8px;
  padding: 10px 12px;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__header,
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .position-panel .panel__header {
  gap: 3px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--color-border-soft);
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__description,
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .position-panel .panel__description {
  display: none;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__body,
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .position-panel .panel__body {
  gap: 8px;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__summary,
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .position-panel__summary {
  display: none;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item {
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 8px;
  min-height: 34px;
  padding: 7px 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item + .position-panel__item {
  border-top: 1px solid var(--color-border-soft);
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: var(--radius-pill);
  background: var(--color-success);
  box-shadow: 0 0 0 3px var(--color-success-soft);
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item:nth-child(2)::before {
  background: var(--color-accent);
  box-shadow: 0 0 0 3px var(--color-accent-soft);
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item:nth-child(3)::before {
  background: var(--color-warning);
  box-shadow: 0 0 0 3px var(--color-warning-soft);
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item span {
  font-size: 0.68rem;
  line-height: 1.2;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__item strong {
  overflow-wrap: anywhere;
  font-size: 0.72rem;
  line-height: 1.16;
}

.page.page--upload-layout[data-workflow-step="position"] .position-panel__continue,
.page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .position-panel__continue {
  min-height: 38px;
}

.page.page--upload-layout[data-workflow-step="generate"],
.page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) {
  --workspace-height: clamp(460px, calc(100dvh - 242px), 820px);

  grid-template-columns: var(--workflow-side-menu-width) minmax(304px, 342px) minmax(640px, 1fr);
  grid-template-rows: auto auto;
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card {
  gap: 9px;
  padding: 10px;
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__header {
  gap: 3px;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--color-border-soft);
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__description {
  display: none;
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__body {
  gap: 8px;
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card .action-group {
  gap: 6px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card .action-group__header {
  display: none;
}

.page.page--upload-layout[data-workflow-step="generate"] .review-card .action-grid {
  gap: 7px;
}

.page.page--upload-layout[data-workflow-step="generate"] #build-result-actions {
  padding-top: 1px;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist {
  display: grid;
  gap: 6px;
  margin-top: 2px;
  padding-top: 8px;
  border-top-color: var(--color-border-soft);
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist__eyebrow {
  margin: 0;
  font-size: 0.61rem;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist__hint {
  display: none;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__checks {
  gap: 5px;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 7px;
  row-gap: 1px;
  max-width: none;
  padding: 6px 7px;
  border-radius: 8px;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-head {
  display: contents;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-badge {
  grid-column: 1;
  grid-row: 1;
  min-width: 34px;
  padding: 2px 5px;
  font-size: 0.5rem;
  align-self: start;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-title {
  grid-column: 2;
  grid-row: 1;
  font-size: 0.7rem;
  line-height: 1.18;
}

.page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-message {
  grid-column: 2;
  margin: 0;
  font-size: 0.66rem;
  line-height: 1.24;
}

@media (max-width: 1180px) {
  .page.page--upload-layout[data-workflow-step="position"],
  .page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) {
    grid-template-columns: var(--workflow-side-menu-width) minmax(260px, 286px) minmax(500px, 1fr);
  }

  .page.page--upload-layout[data-workflow-step="generate"],
  .page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) {
    grid-template-columns: var(--workflow-side-menu-width) minmax(280px, 306px) minmax(500px, 1fr);
  }
}

@media (max-width: 940px) {
  .page.page--upload-layout[data-workflow-step="position"],
  .page.page--upload-layout[data-workflow-step="generate"] {
    --workspace-height: min(520px, 64vh);
  }
}

@media (min-width: 1181px) {
  .page.page--upload-layout[data-workflow-step="position"],
  .page.page--upload-layout:has(#workflow-panel-position:not(.hidden)),
  .page.page--upload-layout[data-workflow-step="generate"],
  .page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) {
    grid-template-columns: var(--workflow-side-menu-width) minmax(304px, 342px) minmax(720px, 1fr);
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel,
  .page.page--upload-layout[data-workflow-step="generate"] .review-card {
    gap: 8px;
    padding: 10px 12px;
    overflow: hidden;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__header,
  .page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__header {
    gap: 2px;
    padding-bottom: 6px;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__eyebrow,
  .page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__eyebrow {
    font-size: 0.54rem;
    line-height: 1;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__title,
  .page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__title {
    font-size: 0.98rem;
    line-height: 1.12;
    overflow-wrap: anywhere;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel .panel__body,
  .page.page--upload-layout[data-workflow-step="generate"] .review-card .panel__body {
    gap: 7px;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel__item {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 8px;
    min-height: 34px;
    padding: 7px 8px;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel__item::before {
    grid-row: 1 / span 2;
    align-self: center;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel__item span,
  .page.page--upload-layout[data-workflow-step="position"] .position-panel__item strong {
    grid-column: 2;
    min-width: 0;
    text-align: left;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel__item span {
    overflow: visible;
    font-size: 0.68rem;
    line-height: 1.2;
    text-transform: none;
    white-space: normal;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel__item strong {
    font-size: 0.72rem;
    line-height: 1.16;
  }

  .page.page--upload-layout[data-workflow-step="position"] .position-panel__continue,
  .page.page--upload-layout[data-workflow-step="generate"] .review-card button {
    width: 100%;
    min-width: 0;
    min-height: 36px;
    padding-inline: 10px;
    font-size: 0.78rem;
    line-height: 1.12;
    white-space: normal;
  }

  .page.page--upload-layout[data-workflow-step="position"] .viewer-column,
  .page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .viewer-column,
  .page.page--upload-layout[data-workflow-step="generate"] .viewer-column,
  .page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) .viewer-column {
    grid-row: 1;
    margin-top: 16px;
  }

  .page.page--upload-layout[data-workflow-step="position"] .controls-card,
  .page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) .controls-card {
    margin-top: 16px;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .controls-card,
  .page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) .controls-card {
    margin-top: 32px;
  }

  .page.page--upload-layout[data-workflow-step="position"] > .status,
  .page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) > .status,
  .page.page--upload-layout[data-workflow-step="generate"] > .status,
  .page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) > .status {
    grid-column: 3;
    grid-row: 2;
  }

  .page.page--upload-layout[data-workflow-step="position"] > .job-progress-container,
  .page.page--upload-layout:has(#workflow-panel-position:not(.hidden)) > .job-progress-container,
  .page.page--upload-layout[data-workflow-step="generate"] > .job-progress-container,
  .page.page--upload-layout:has(#workflow-panel-generate:not(.hidden)) > .job-progress-container {
    grid-column: 3;
    grid-row: 3;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .review-card .action-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist {
    gap: 5px;
    padding-top: 6px;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist__eyebrow {
    overflow: hidden;
    font-size: 0.54rem;
    line-height: 1;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1px 7px;
    padding: 6px 7px;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-head {
    display: contents;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-badge,
  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-title,
  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-message {
    grid-column: auto;
    grid-row: auto;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-badge {
    grid-column: 1;
    grid-row: 1;
    min-width: 31px;
    padding: 2px 5px;
    font-size: 0.5rem;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-title {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    font-size: 0.7rem;
    line-height: 1.16;
  }

  .page.page--upload-layout[data-workflow-step="generate"] .pre-pour-checklist .stl-info__check-message {
    grid-column: 2;
    font-size: 0.63rem;
    line-height: 1.2;
  }

  .page.page--upload-layout[data-workflow-step="export"] .export-grid {
    grid-template-columns: minmax(220px, 0.46fr) minmax(0, 1.54fr);
  }
}

.page.page--upload-layout #workflow-panel-export {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  align-items: start;
}

.page.page--upload-layout[data-workflow-step="upload"],
.page.page--upload-layout[data-workflow-step="setup"],
.page.page--upload-layout[data-workflow-step="export"] {
  grid-template-columns: var(--workflow-side-menu-width) minmax(0, 960px);
  justify-content: center;
}

.page.page--upload-layout[data-workflow-step="upload"] .viewer-column,
.page.page--upload-layout[data-workflow-step="setup"] .viewer-column,
.page.page--upload-layout[data-workflow-step="export"] .viewer-column {
  display: none;
}

.page.page--upload-layout[data-workflow-step="upload"] .controls-card,
.page.page--upload-layout[data-workflow-step="upload"] .controls-card .workflow-panel[data-step-panel="upload"],
.page.page--upload-layout[data-workflow-step="setup"] .controls-card,
.page.page--upload-layout[data-workflow-step="setup"] .controls-card .workflow-panel[data-step-panel="setup"],
.page.page--upload-layout[data-workflow-step="export"] .controls-card,
.page.page--upload-layout[data-workflow-step="export"] .controls-card .workflow-panel[data-step-panel="export"] {
  max-height: none;
}

.page.page--upload-layout[data-workflow-step="setup"] .controls-card .workflow-panel[data-step-panel="setup"],
.page.page--upload-layout[data-workflow-step="export"] .controls-card .workflow-panel[data-step-panel="export"] {
  overflow: visible;
  padding-right: 0;
  scrollbar-gutter: auto;
}

.page.page--upload-layout.workflow-loading {
  grid-template-columns: var(--workflow-side-menu-width) minmax(340px, var(--sidebar-width)) minmax(520px, 1fr);
  justify-content: stretch;
}

.page.page--upload-layout.workflow-loading .viewer-column {
  display: flex;
}

.page.page--upload-layout #workflow-panel-export .export-workspace,
.page.page--upload-layout #workflow-panel-export .viewer-pour-price-card,
.page.page--upload-layout #workflow-panel-export .control-island {
  min-width: 0;
  margin: 0;
}

.export-workspace {
  display: grid;
  gap: 12px;
}

.export-hero {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  background:
    linear-gradient(135deg, rgba(10, 132, 255, 0.1), rgba(52, 199, 89, 0.08)),
    var(--color-surface-card-strong);
}

.export-hero__copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.export-hero__status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 32px;
  padding: 6px 10px;
  border: 1px solid rgba(10, 132, 255, 0.26);
  border-radius: var(--radius-pill);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
  font-size: 0.72rem;
  font-weight: 760;
  line-height: 1.2;
  white-space: normal;
}

.export-hero__status-dot {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: currentColor;
}

.export-grid {
  display: grid;
  grid-template-columns: minmax(300px, 0.92fr) minmax(0, 1.08fr);
  gap: 12px;
  align-items: stretch;
}

.export-download-panel,
.export-estimate-panel {
  align-content: start;
}

.export-package-list {
  display: grid;
  gap: 8px;
}

.export-package-list__item {
  display: grid;
  grid-template-columns: 18px 36px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: var(--color-surface-inset);
  cursor: pointer;
}

.export-package-list__item:has(.export-package-list__checkbox:checked) {
  border-color: rgba(10, 132, 255, 0.34);
  background: linear-gradient(180deg, var(--color-accent-soft), transparent), var(--color-surface-inset);
}

.export-package-list__checkbox {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--color-accent);
}

.export-package-list__checkbox:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.export-package-list__item:has(.export-package-list__checkbox:disabled) {
  cursor: not-allowed;
  opacity: var(--state-disabled-opacity);
}

.export-package-list__icon {
  display: inline-grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: var(--radius-xs);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.export-package-list__icon svg {
  width: 20px;
  height: 20px;
}

.export-package-list__icon path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.55;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.export-package-list__item strong,
.export-package-list__item small {
  display: block;
  min-width: 0;
}

.export-package-list__item strong {
  color: var(--color-text-primary);
  font-size: 0.84rem;
  line-height: 1.2;
}

.export-package-list__item small {
  margin-top: 2px;
  color: var(--color-text-tertiary);
  font-size: 0.72rem;
  line-height: 1.25;
}

.build-history-refresh {
  width: 40px;
  height: 40px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-inset);
  color: var(--color-text-secondary);
  cursor: pointer;
}

.build-history-refresh:hover {
  border-color: rgba(10, 132, 255, 0.34);
  color: var(--color-accent-strong);
}

.build-history-refresh:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.build-history-refresh:disabled {
  cursor: not-allowed;
  opacity: var(--state-disabled-opacity);
}

.build-history-refresh svg {
  width: 18px;
  height: 18px;
}

.build-history-refresh path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.build-history-list {
  display: grid;
  gap: 8px;
  max-height: 62vh;
  overflow: auto;
  padding-right: 2px;
}

.build-history-list--overlay {
  padding: 18px;
}

.build-history-list__empty,
.build-history-list__error {
  margin: 0;
  padding: 10px 12px;
  border: 1px dashed var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-inset);
  color: var(--color-text-tertiary);
  font-size: 0.82rem;
  line-height: 1.35;
}

.build-history-list__error {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-color: rgba(180, 71, 71, 0.34);
  color: var(--color-danger);
}

.build-history-list__retry {
  min-height: 30px;
  padding: 5px 10px;
  border: 1px solid rgba(180, 71, 71, 0.34);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
  color: var(--color-danger);
  font-size: 0.72rem;
  font-weight: 760;
  cursor: pointer;
}

.build-history-item {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  min-width: 0;
  padding: 14px 14px 14px 16px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-inset);
  overflow: hidden;
}

.build-history-item::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 2px;
  background: transparent;
}

.build-history-item--succeeded::before {
  background: var(--color-success);
}

.build-history-item--running::before,
.build-history-item--queued::before {
  background: var(--color-accent-strong);
}

.build-history-item--failed::before {
  background: var(--color-danger);
}

.build-history-item--cancelled::before {
  background: var(--color-text-tertiary);
}

.build-history-item--active {
  border-color: rgba(29, 138, 98, 0.36);
  background: var(--color-surface-inset);
}

.build-history-item__main {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.build-history-item__header {
  display: flex;
  min-width: 0;
}

.build-history-item__title {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  align-items: center;
  min-width: 0;
  color: var(--color-text-primary);
  font-size: 0.86rem;
  font-weight: 780;
  line-height: 1.2;
}

.build-history-item__name {
  min-width: 0;
  overflow-wrap: anywhere;
}

.status-badge,
.build-history-item__badge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 3px 8px;
  border-radius: var(--radius-pill);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
  font-size: 0.68rem;
  font-weight: 780;
  line-height: 1;
}

.status-badge--success,
.build-history-item__badge--success {
  background: rgba(29, 138, 98, 0.16);
  color: var(--color-success);
}

.status-badge--progress,
.build-history-item__badge--progress {
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.status-badge--danger,
.build-history-item__badge--danger {
  background: rgba(180, 71, 71, 0.16);
  color: var(--color-danger);
}

.status-badge--muted,
.build-history-item__badge--muted {
  background: var(--color-surface-card);
  color: var(--color-text-tertiary);
}

.build-history-item__meta {
  max-width: 72ch;
  color: var(--color-text-secondary);
  font-size: 0.72rem;
  line-height: 1.35;
}

.build-history-item__status-note {
  max-width: 72ch;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid rgba(126, 144, 161, 0.16);
  border-radius: var(--radius-xs);
  background: rgba(255, 255, 255, 0.035);
  color: var(--color-text-secondary);
  font-size: 0.76rem;
  font-weight: 650;
  line-height: 1.35;
}

.build-history-item__params {
  display: grid;
  grid-template-columns: repeat(5, minmax(112px, 1fr));
  gap: 6px;
  margin: 0;
  min-width: 0;
}

.build-history-item__params--extra {
  margin-top: 8px;
}

.build-history-item__param {
  display: grid;
  gap: 3px;
  min-width: 0;
  min-height: 48px;
  padding: 7px 8px;
  border: 1px solid rgba(126, 144, 161, 0.16);
  border-radius: var(--radius-xs);
  background: rgba(255, 255, 255, 0.035);
}

.build-history-item__param dt {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: 0.58rem;
  font-weight: 820;
  letter-spacing: 0;
  line-height: 1.1;
  text-transform: none;
  overflow-wrap: anywhere;
}

.build-history-item__param dd {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 0.78rem;
  font-weight: 760;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.build-history-item__details {
  min-width: 0;
}

.build-history-item__details summary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: max-content;
  max-width: 100%;
  padding: 4px 0;
  color: var(--color-text-secondary);
  font-size: 0.72rem;
  font-weight: 760;
  line-height: 1.2;
  cursor: pointer;
}

.build-history-item__details summary:hover {
  color: var(--color-accent-strong);
}

.build-history-item__actions {
  display: flex;
  flex-wrap: wrap;
  align-self: center;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
}

.build-history-item__action {
  min-height: 36px;
  padding: 7px 14px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
  color: var(--color-text-primary);
  font-size: 0.78rem;
  font-weight: 740;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
}

.build-history-item__action[data-busy="true"] {
  cursor: progress;
  opacity: 0.76;
}

.build-history-item__action:hover {
  border-color: rgba(10, 132, 255, 0.34);
  color: var(--color-accent-strong);
}

.build-history-item__action--secondary {
  color: var(--color-text-secondary);
}

.build-history-item__action:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.build-history-item__action:disabled {
  cursor: not-allowed;
  opacity: var(--state-disabled-opacity);
}

.export-actions {
  display: grid;
  grid-template-columns: minmax(178px, 0.46fr) minmax(210px, 0.54fr);
  gap: 10px;
  align-items: end;
}

.export-download-button {
  width: 100%;
  min-height: 44px;
}

.export-format-control {
  display: grid;
  gap: 7px;
  min-width: 0;
}

.export-format-control__label {
  color: var(--color-text-secondary);
  font-size: 0.8rem;
  font-weight: 700;
  line-height: 1.2;
}

.segmented-control,
.export-format-switch {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
  min-height: 44px;
  padding: 4px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: var(--color-surface-inset);
}

.segmented-control--wrap {
  display: flex;
  flex-wrap: wrap;
  grid-template-columns: none;
  width: max-content;
  max-width: 100%;
}

.segmented-control__option,
.export-format-option {
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: calc(var(--radius-sm) - 4px);
  background: transparent;
  color: var(--color-text-secondary);
  box-shadow: none;
  font-size: 0.86rem;
}

.segmented-control__option[aria-pressed="true"],
.export-format-option[aria-pressed="true"] {
  border-color: rgba(10, 132, 255, 0.34);
  background: var(--color-surface-card-strong);
  color: var(--color-accent-strong);
  box-shadow: 0 5px 12px rgba(10, 132, 255, 0.12);
}

.segmented-control__option:not(:disabled):hover,
.export-format-option:not(:disabled):hover {
  transform: none;
  color: var(--color-accent-strong);
}

.export-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.export-metric {
  position: relative;
  gap: 5px;
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: var(--color-surface-inset);
}

.export-metric--wide {
  grid-column: 1 / -1;
}

.export-metric .result-output {
  min-height: 34px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  font-size: 1rem;
}

.export-metric small {
  position: absolute;
  right: 9px;
  bottom: 8px;
  color: var(--color-text-tertiary);
  font-size: 0.66rem;
  font-weight: 760;
}

.export-inputs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.page.page--upload-layout .status {
  grid-column: 2;
  grid-row: 2;
  width: 100%;
  align-self: start;
  margin: 0;
  padding: 6px 10px;
  font-size: 0.78rem;
  flex-shrink: 0;
}

.page.page--upload-layout .adaptive-build-debug,
.page.page--upload-layout .job-progress-container {
  grid-column: 2;
  grid-row: 3;
  width: 100%;
  align-self: start;
  margin: 0;
  flex-shrink: 0;
}

@media (max-width: 1040px) {
  .page.page--upload-layout .setup-workspace {
    grid-template-columns: 1fr;
  }

  .page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Опалубка"] .panel__body {
    grid-template-columns: 1fr;
    grid-template-areas: none;
  }

  .page.page--upload-layout[data-workflow-step="setup"] .setup-generate-card {
    grid-column: 1;
    grid-row: auto;
  }

  .page.page--upload-layout[data-workflow-step="setup"] #workflow-panel-setup .setup-card[aria-label="Опалубка"],
  .page.page--upload-layout[data-workflow-step="setup"] #workflow-panel-setup .setup-card[aria-label="Параметры формы"] {
    grid-column: 1;
    grid-row: auto;
  }

  .page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Параметры формы"] .setup-grid {
    grid-template-columns: 1fr;
  }

  .page.page--upload-layout #workflow-panel-setup .setup-subgroups--adaptive,
  .page.page--upload-layout #workflow-panel-setup .setup-grid--compact {
    grid-template-columns: 1fr;
  }

  .page.page--upload-layout #workflow-panel-setup .setup-grid .setup-grid__full:last-child {
    grid-column: 1 / -1;
  }

  .page.page--upload-layout #workflow-panel-export {
    grid-template-columns: 1fr;
  }

  .export-hero,
  .export-grid,
  .export-actions,
  .export-inputs {
    grid-template-columns: 1fr;
  }

  .export-hero__status {
    justify-self: start;
  }
}

.app-stub-shell {
  position: relative;
  overflow-x: clip;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.app-stub-shell > main.page--stub {
  flex: 1 1 auto;
  min-height: 0;
}

.construction-ribbon {
  position: absolute;
  top: 92px;
  right: 22px;
  z-index: 50;
  width: auto;
  padding: 8px 12px;
  margin: 0;
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #0f172a;
  background: linear-gradient(120deg, #fbbf24, #f59e0b);
  border-radius: var(--radius-pill);
  box-shadow: 0 8px 18px rgba(15, 23, 42, 0.14);
  pointer-events: none;
}

.page--stub {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: var(--space-8);
  padding-bottom: var(--space-10);
}

.construction-card {
  max-width: 440px;
  width: 100%;
  text-align: center;
}

.construction-card__title {
  margin: 0 0 var(--space-3);
  font-size: clamp(1.2rem, 2vw, 1.55rem);
  letter-spacing: 0;
}

.construction-card__lead {
  margin: 0;
  color: var(--color-text-secondary);
  line-height: 1.55;
}

.workflow-header {
  position: sticky;
  top: 0;
  z-index: 100;
  display: grid;
  gap: 0;
  padding-top: 0;
  background: linear-gradient(180deg, var(--workflow-masthead-bg), var(--workflow-masthead-bg-bottom));
  backdrop-filter: blur(24px) saturate(160%);
  -webkit-backdrop-filter: blur(24px) saturate(160%);
}

.workflow-header__masthead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-width: 0;
  padding: 8px max(var(--page-padding-inline), env(safe-area-inset-right)) 8px max(var(--page-padding-inline), env(safe-area-inset-left));
  background: transparent;
  border-bottom: 1px solid var(--workflow-masthead-border);
  box-shadow: none;
}

.workflow-brand {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.workflow-brand:focus-visible {
  outline: none;
  border-radius: var(--radius-sm);
  box-shadow: var(--focus-ring);
}

.dev-runtime-metrics {
  flex: 1 1 520px;
  max-width: 700px;
  min-width: 360px;
  display: grid;
  gap: 4px;
  padding: 6px 8px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  background: rgba(22, 28, 34, 0.08);
}

.dev-runtime-metrics__head,
.dev-runtime-metrics__legend,
.dev-runtime-chart__top {
  display: flex;
  align-items: center;
}

.dev-runtime-metrics__head {
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}

.dev-runtime-metrics__stage {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--color-text-secondary);
}

.dev-runtime-metrics__legend {
  flex: 0 0 auto;
  gap: 8px;
  font-size: 0.62rem;
  color: var(--color-text-tertiary);
}

.dev-runtime-metrics__key::before {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-radius: 50%;
  vertical-align: 0;
  background: currentColor;
}

.dev-runtime-metrics__key--total {
  color: #0a84ff;
}

.dev-runtime-metrics__key--root {
  color: #248a3d;
}

.dev-runtime-metrics__key--children {
  color: #a15c00;
}

.dev-runtime-metrics__charts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.dev-runtime-chart {
  min-width: 0;
}

.dev-runtime-chart__top {
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 2px;
  font-size: 0.64rem;
  color: var(--color-text-tertiary);
  font-variant-numeric: tabular-nums;
}

.dev-runtime-chart__top span:first-child {
  font-weight: 800;
  color: var(--color-text-secondary);
}

.dev-runtime-chart canvas {
  display: block;
  width: 100%;
  height: 46px;
  border-radius: 6px;
  background: rgba(5, 12, 20, 0.08);
}

.workflow-brand__logo {
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  padding: 0;
  border-radius: 0;
  object-fit: contain;
  background: transparent;
  box-shadow: none;
}

.workflow-brand__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.workflow-brand__tagline {
  margin: 0;
  font-size: 0.76rem;
  line-height: 1.25;
  color: var(--color-text-secondary);
  letter-spacing: 0;
}

.workflow-header__toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 10px;
  min-width: 0;
}

.workflow-header__textlink {
  margin: 0;
  min-height: var(--control-height-md);
  padding: 7px 13px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-border-soft);
  background: var(--color-surface-glass);
  font: inherit;
  font-size: var(--font-size-body-sm);
  font-weight: 600;
  color: var(--color-text-secondary);
  cursor: pointer;
  text-decoration: none;
  border-radius: 999px;
  transition:
    color 0.15s ease,
    background-color 0.15s ease,
    border-color 0.15s ease;
}

.workflow-header__textlink:hover {
  color: var(--color-text-primary);
  background: var(--color-surface-card);
  border-color: var(--color-border-strong);
}

.workflow-header__textlink:disabled,
.workflow-header__textlink[aria-disabled="true"] {
  color: rgba(183, 188, 199, 0.48);
  background: rgba(255, 255, 255, 0.035);
  border-color: rgba(183, 188, 199, 0.16);
  cursor: not-allowed;
}

.workflow-header__textlink:disabled:hover,
.workflow-header__textlink[aria-disabled="true"]:hover {
  color: rgba(183, 188, 199, 0.48);
  background: rgba(255, 255, 255, 0.035);
  border-color: rgba(183, 188, 199, 0.16);
}

.workflow-header__textlink:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.workflow-header__textlink--quiet {
  font-weight: 500;
  color: var(--workflow-masthead-muted);
}

.workflow-header__language {
  min-height: var(--control-height-md);
  padding: 7px 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, 0.68);
  color: var(--color-text-primary);
  cursor: pointer;
  font-family: inherit;
  font-size: var(--font-size-body-sm);
  font-weight: 760;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.74);
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease,
    transform 0.12s ease;
}

.workflow-header__language:hover {
  border-color: var(--color-border-strong);
  background: var(--color-surface-card);
}

.workflow-header__language:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.workflow-header__language:active {
  transform: translateY(1px);
}

.workflow-header__language:disabled {
  cursor: progress;
  opacity: 0.64;
  transform: none;
}

.workflow-header__language-flag {
  font-size: 1.08em;
  line-height: 1;
}

.workflow-header__language-code {
  font-size: 0.82em;
  letter-spacing: 0;
}

@media (prefers-color-scheme: dark) {
  .workflow-header__language {
    background: rgba(44, 44, 46, 0.72);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }
}

.workflow-header__email--masthead {
  font-size: var(--font-size-body-sm);
  color: var(--color-text-secondary);
  max-width: min(200px, 28vw);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 0 2px;
}

.workflow-header__toolbar--account {
  position: relative;
  flex-wrap: nowrap;
}

.account-menu {
  position: relative;
  flex: 0 0 auto;
}

.account-menu__trigger {
  width: 42px;
  height: 42px;
  margin: 0;
  padding: 0;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--color-border-soft);
  border-radius: 50%;
  background: var(--color-surface-glass);
  color: var(--color-text-primary);
  cursor: pointer;
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease,
    transform 0.12s ease;
}

.account-menu__trigger:hover,
.account-menu__trigger[aria-expanded="true"] {
  background: var(--color-surface-card);
  border-color: var(--color-border-strong);
}

.account-menu__trigger:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.account-menu__trigger:active {
  transform: translateY(1px);
}

.account-menu__trigger svg {
  width: 22px;
  height: 22px;
}

.account-menu__dropdown {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 140;
  width: 220px;
  padding: 6px;
  display: grid;
  gap: 2px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-md);
  background: var(--color-surface-card);
  box-shadow: var(--shadow-floating);
}

.account-menu__item {
  width: 100%;
  min-height: 38px;
  padding: 9px 10px;
  display: flex;
  align-items: center;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-text-primary);
  font: inherit;
  font-size: var(--font-size-body-sm);
  font-weight: 650;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}

.account-menu__item:hover,
.account-menu__item:focus-visible {
  outline: none;
  background: var(--color-surface-glass);
}

.account-menu__item--danger {
  color: var(--color-danger, #ff453a);
}

.workflow-header__cta {
  margin: 0;
  min-height: var(--control-height-md);
  padding: 9px 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(10, 88, 180, 0.28);
  border-radius: var(--radius-pill);
  background: linear-gradient(180deg, #4fb2ff 0%, var(--workflow-masthead-cta) 100%);
  color: var(--color-text-inverse);
  font: inherit;
  font-size: var(--font-size-body-sm);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-decoration: none;
  cursor: pointer;
  transition:
    background 0.15s ease,
    transform 0.12s ease;
  box-shadow: 0 14px 28px rgba(10, 84, 170, 0.24);
}

.workflow-header__cta:hover {
  background: var(--workflow-masthead-cta-hover);
}

.workflow-header__cta:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 2px rgba(247, 250, 253, 0.9),
    var(--focus-ring);
}

.workflow-header__cta:active {
  transform: translateY(1px);
}

.workflow-header__rest {
  width: min(100%, var(--page-max-width));
  max-width: var(--page-max-width);
  margin: 0 auto;
  padding: 6px max(var(--page-padding-inline), env(safe-area-inset-right)) 0 max(var(--page-padding-inline), env(safe-area-inset-left));
  display: grid;
  gap: var(--space-3);
  align-content: start;
}

.auth-gate--profile .workflow-header__rest {
  display: none;
}

.paywall-tariff {
  position: relative;
  min-width: 0;
  min-height: 520px;
  display: flex;
  overflow: hidden;
  border: 1px solid rgba(116, 132, 156, 0.25);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(33, 43, 58, 0.62), rgba(18, 25, 36, 0.84)),
    rgba(13, 19, 29, 0.94);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.05),
    0 18px 36px rgba(0, 0, 0, 0.24);
}

.paywall-tariff--best {
  border-color: rgba(42, 160, 255, 0.95);
  box-shadow:
    0 0 0 1px rgba(42, 160, 255, 0.34),
    0 0 44px rgba(22, 133, 255, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.paywall-tariff--best::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 0%, rgba(34, 166, 255, 0.3), transparent 34%);
}

.paywall-tariff__badge {
  position: absolute;
  top: 0;
  right: 34px;
  z-index: 2;
  max-width: calc(100% - 68px);
  min-width: 168px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 0;
  padding: 9px 18px 10px;
  border: 1px solid rgba(73, 161, 255, 0.58);
  border-top: 0;
  border-radius: 0 0 16px 16px;
  background: linear-gradient(180deg, #185bda, #0d69e8);
  color: #f7fbff;
  font-size: 0.94rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  box-shadow: 0 13px 28px rgba(10, 132, 255, 0.34);
}

.paywall-tariff__badge::before {
  content: "★";
  font-size: 0.9rem;
  line-height: 1;
}

.paywall-tariff__content {
  position: relative;
  z-index: 1;
  width: 100%;
  min-height: 100%;
  display: grid;
  grid-template-rows: auto minmax(54px, auto) 1fr auto;
  gap: 18px;
  padding: 30px 30px 22px;
}

.paywall-tariff--best .paywall-tariff__content {
  padding-top: 30px;
}

.paywall-tariff__title,
.paywall-tariff__price,
.paywall-tariff__promo,
.paywall-tariff__subtitle,
.paywall-tariff__unit {
  margin: 0;
}

.paywall-tariff__head {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr);
  align-items: start;
  gap: 22px;
}

.paywall-tariff__icon {
  width: 68px;
  height: 68px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.025)),
    rgba(255, 255, 255, 0.04);
  color: #2aa0ff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.paywall-tariff__icon svg {
  width: 38px;
  height: 38px;
}

.paywall-tariff__icon--start {
  color: #35bfff;
}

.paywall-tariff__icon--master {
  color: #24a8ff;
}

.paywall-tariff__title-group {
  min-width: 0;
  padding-top: 7px;
  display: grid;
  grid-template-rows: auto auto 32px;
  align-content: start;
}

.paywall-tariff__title {
  color: #f7f9ff;
  font-size: 1.35rem;
  font-weight: 850;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.paywall-tariff__price {
  margin-top: 10px;
  color: #f7f9ff;
  font-size: clamp(2.2rem, 3vw, 3.05rem);
  font-weight: 880;
  line-height: 1;
  overflow-wrap: anywhere;
}

.paywall-tariff__promo {
  width: fit-content;
  max-width: 100%;
  margin-top: 14px;
  padding: 5px 14px 6px;
  border-radius: var(--radius-pill);
  background: rgba(8, 92, 184, 0.7);
  color: #48b8ff;
  font-size: 0.93rem;
  font-weight: 800;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.paywall-tariff__promo--empty {
  visibility: hidden;
}

.paywall-tariff__subtitle {
  align-self: start;
  color: rgba(235, 239, 247, 0.76);
  font-size: 0.98rem;
  font-weight: 520;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.paywall-tariff__list {
  display: grid;
  align-content: start;
  gap: 12px;
  margin: 0;
  padding: 20px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.09);
  border-bottom: 1px solid rgba(255, 255, 255, 0.09);
  color: rgba(235, 239, 247, 0.78);
  font-size: 0.98rem;
  line-height: 1.35;
  list-style: none;
}

.paywall-tariff__list li {
  position: relative;
  min-height: 24px;
  padding-left: 39px;
  min-width: 0;
  overflow-wrap: anywhere;
}

.paywall-tariff__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1px;
  width: 22px;
  height: 22px;
  border: 2px solid #2aa0ff;
  border-radius: 50%;
  background: rgba(42, 160, 255, 0.08);
}

.paywall-tariff__list li::after {
  content: "";
  position: absolute;
  left: 7px;
  top: 8px;
  width: 8px;
  height: 4px;
  border-left: 2px solid #2aa0ff;
  border-bottom: 2px solid #2aa0ff;
  transform: rotate(-45deg);
}

.paywall-tariff__footer {
  display: flex;
  align-items: center;
  gap: 18px;
  min-width: 0;
}

.paywall-tariff__unit {
  flex: 1 1 0;
  min-width: 0;
  color: rgba(235, 239, 247, 0.74);
  font-size: 1rem;
  font-weight: 720;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.paywall-tariff__button {
  flex: 0 1 220px;
  max-width: 100%;
  min-height: 50px;
  min-width: 148px;
  margin: 0;
  padding: 11px 22px;
  border: 1px solid rgba(42, 160, 255, 0.68);
  border-radius: 9px;
  background: rgba(9, 17, 31, 0.22);
  color: #f7f9ff;
  font: inherit;
  font-size: 1rem;
  font-weight: 820;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition:
    background 0.15s ease,
    border-color 0.15s ease,
    transform 0.12s ease;
}

.paywall-tariff__button:hover,
.paywall-tariff__button:focus-visible {
  outline: none;
  border-color: rgba(70, 174, 255, 0.95);
  background: rgba(20, 93, 188, 0.22);
  box-shadow: 0 0 0 3px rgba(42, 160, 255, 0.2);
}

.paywall-tariff__button:active {
  transform: translateY(1px);
}

.paywall-tariff--best .paywall-tariff__button {
  border-color: rgba(42, 160, 255, 0.95);
  background: linear-gradient(180deg, #2aa6ff, #0c65e7);
  box-shadow: 0 12px 24px rgba(10, 101, 231, 0.34);
}

.profile-page {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-4);
  align-content: start;
  width: min(100%, 980px);
  max-width: 980px;
  min-height: calc(100vh - 160px);
  margin: 0 auto;
  padding-top: var(--space-5);
}

.profile-hero {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-4);
  padding: 0 0 var(--space-4);
  border-bottom: 1px solid var(--color-border-soft);
}

.profile-hero__avatar {
  width: 58px;
  height: 58px;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 50%;
  background:
    radial-gradient(circle at 34% 24%, rgba(255, 255, 255, 0.72), transparent 34%),
    linear-gradient(135deg, #0a84ff, #30d158);
  color: var(--color-text-inverse);
  font-size: 1.45rem;
  font-weight: 850;
  box-shadow: 0 12px 28px rgba(10, 132, 255, 0.2);
}

.profile-hero__copy {
  flex: 1 1 auto;
  min-width: 0;
  display: grid;
  gap: 6px;
}

.profile-hero__back {
  align-self: center;
  justify-self: end;
  gap: 8px;
}

.profile-hero__back svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.profile-hero__eyebrow {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.profile-hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(1.65rem, 2.8vw, 2.35rem);
  line-height: var(--line-height-tight);
  letter-spacing: 0;
}

.profile-hero__email {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-lg);
}

.profile-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.profile-card {
  min-width: 0;
  padding: var(--space-5);
  border-radius: var(--radius-md);
}

.profile-card__label {
  display: block;
  margin-bottom: 8px;
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.profile-card__value {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--color-text-primary);
  font-size: 1.05rem;
  line-height: 1.35;
}

.profile-card__value--mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: 0.92rem;
}

.profile-card__note {
  margin: 12px 0 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.5;
}

.profile-purchases-list {
  display: grid;
  gap: 8px;
  margin: 12px 0 0;
  padding: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.45;
  list-style: none;
}

.profile-purchases-list li {
  min-width: 0;
  overflow-wrap: anywhere;
}

.profile-legal-note {
  margin: var(--space-3) 0 0;
  color: var(--color-text-tertiary);
  font-size: var(--font-size-body-sm);
  line-height: 1.45;
  text-align: right;
}

.profile-legal-note a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.workflow-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--font-size-title-lg);
  line-height: var(--line-height-tight);
  letter-spacing: 0;
  min-width: 0;
}

.workflow-title--masthead {
  font-size: 1.18rem;
  letter-spacing: 0;
  color: var(--color-text-primary);
}

.badge {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(20, 84, 202, 0.16);
  background: var(--color-surface-glass);
  color: var(--color-accent-strong);
  font-size: var(--font-size-caption);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}

.workflow-nav {
  position: relative;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  min-width: 0;
  padding: 0;
}

.workflow-step-button {
  --workflow-step-border: rgba(60, 60, 67, 0.14);
  --workflow-step-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.78), rgba(255, 255, 255, 0.58)), var(--color-surface-card);
  --workflow-step-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.74), 0 6px 14px rgba(24, 38, 50, 0.05);
  position: relative;
  isolation: isolate;
  min-height: 64px;
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding: 9px 12px 9px 10px;
  font-size: 0.86rem;
  text-align: left;
  color: var(--color-text-secondary);
  border: 1px solid var(--workflow-step-border);
  border-radius: 8px;
  background: var(--workflow-step-bg);
  box-shadow: var(--workflow-step-shadow);
  cursor: pointer;
  transition:
    color 0.18s ease,
    filter 0.18s ease;
}

.workflow-step-button:last-child {
  padding-right: 14px;
}

.workflow-step-button:not(:disabled):hover {
  transform: none;
  filter: brightness(1.02);
}

.workflow-step-button:not(:disabled):active {
  transform: none;
}

.workflow-step-button__index {
  position: relative;
  z-index: 2;
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: rgba(60, 60, 67, 0.08);
  color: var(--color-text-secondary);
  font-size: 0.78rem;
  font-weight: 850;
  line-height: 1;
}

.workflow-step-button__label {
  position: relative;
  z-index: 2;
  min-width: 0;
  display: grid;
  gap: 3px;
  line-height: 1.18;
}

.workflow-step-button__title,
.workflow-step-button__subtitle {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.workflow-step-button__title {
  font-weight: 800;
  letter-spacing: 0;
}

.workflow-step-button__subtitle {
  color: var(--color-text-tertiary);
  font-size: 0.75rem;
  font-weight: 700;
}

.workflow-step-button[aria-current="step"] {
  --workflow-step-border: rgba(10, 88, 180, 0.36);
  --workflow-step-bg: linear-gradient(180deg, rgba(79, 178, 255, 0.95) 0%, rgba(10, 132, 255, 0.9) 100%), #0a84ff;
  --workflow-step-shadow: 0 12px 24px rgba(10, 132, 255, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.34);
  color: var(--color-text-inverse);
}

.workflow-step-button[aria-current="step"] .workflow-step-button__index {
  background: rgba(255, 255, 255, 0.76);
  color: #0a84ff;
}

.workflow-step-button[aria-current="step"] .workflow-step-button__subtitle {
  color: rgba(255, 255, 255, 0.78);
}

.workflow-step-button:disabled {
  --workflow-step-border: rgba(60, 60, 67, 0.16);
  --workflow-step-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.56), rgba(242, 242, 247, 0.42)), var(--color-surface-inset);
  --workflow-step-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.55);
  opacity: 1;
  color: var(--color-text-secondary);
  cursor: not-allowed;
}

.workflow-step-button:disabled .workflow-step-button__index {
  background: rgba(60, 60, 67, 0.08);
  color: var(--color-text-secondary);
}

.workflow-step-button:disabled .workflow-step-button__subtitle {
  color: var(--color-text-tertiary);
}

@media (prefers-color-scheme: dark) {
  .workflow-step-button {
    --workflow-step-border: rgba(235, 235, 245, 0.13);
    --workflow-step-bg: linear-gradient(180deg, rgba(58, 58, 60, 0.52), rgba(28, 28, 30, 0.62)), rgba(28, 28, 30, 0.76);
    --workflow-step-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.07), 0 8px 18px rgba(0, 0, 0, 0.16);
    color: rgba(235, 235, 245, 0.74);
  }

  .workflow-step-button__index {
    color: rgba(235, 235, 245, 0.62);
    background: rgba(235, 235, 245, 0.08);
  }

  .workflow-step-button__subtitle {
    color: rgba(235, 235, 245, 0.5);
  }

  .workflow-step-button[aria-current="step"] {
    --workflow-step-border: rgba(10, 132, 255, 0.42);
    --workflow-step-bg: linear-gradient(180deg, rgba(10, 132, 255, 0.42), rgba(10, 132, 255, 0.26)), rgba(22, 30, 42, 0.92);
    --workflow-step-shadow: 0 14px 28px rgba(10, 132, 255, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.12);
    color: #f5f5f7;
  }

  .workflow-step-button[aria-current="step"] .workflow-step-button__index {
    color: #f5f5f7;
    background: rgba(10, 132, 255, 0.7);
  }

  .workflow-step-button:disabled {
    --workflow-step-border: rgba(235, 235, 245, 0.11);
    --workflow-step-bg: linear-gradient(180deg, rgba(44, 44, 46, 0.42), rgba(28, 28, 30, 0.48)), rgba(28, 28, 30, 0.64);
    --workflow-step-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
    color: rgba(235, 235, 245, 0.5);
  }

  .workflow-step-button:disabled .workflow-step-button__index {
    color: rgba(235, 235, 245, 0.48);
    background: rgba(235, 235, 245, 0.07);
  }

  .workflow-step-button:disabled .workflow-step-button__subtitle {
    color: rgba(235, 235, 245, 0.42);
  }
}

.workflow-caption {
  margin: 0;
  padding: 12px 14px;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border-soft);
  background: var(--color-surface-glass);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.35;
}

.workflow-continue-row {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}

.workflow-continue-setup-btn {
  min-height: var(--control-height-md);
}

.card {
  border-radius: var(--radius-xl);
  border: 1px solid var(--color-surface-border);
  background: var(--color-surface-glass);
  box-shadow: var(--shadow-card);
  backdrop-filter: blur(22px) saturate(150%);
  -webkit-backdrop-filter: blur(22px) saturate(150%);
}

.controls-card {
  flex: 0 0 380px;
  width: 380px;
  max-width: 380px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
  align-self: flex-start;
  border: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.workflow-panel,
.setup-workspace,
.panel__body,
.formwork-mode-controls {
  display: grid;
  gap: var(--space-4);
  min-width: 0;
}

.panel {
  display: grid;
  gap: var(--space-4);
  padding: var(--space-5);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-surface-card-border);
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-panel);
  min-width: 0;
}

.panel--feature {
  background: var(--color-surface-card-strong);
}

.panel__header {
  display: grid;
  gap: 6px;
}

.panel__header--compact {
  gap: 4px;
}

.panel__eyebrow {
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.panel__title,
.control-island h2,
.settings-island h2 {
  margin: 0;
  font-size: var(--font-size-title-sm);
  letter-spacing: 0;
  line-height: 1.2;
}

.panel__description,
.control-hint {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: var(--font-size-body-sm);
  line-height: 1.4;
}

.panel__body--compact {
  gap: var(--space-3);
}

.upload-island {
  padding: var(--space-5);
  border-color: var(--color-border-soft);
  background: var(--color-surface-card-strong);
}

.upload-form {
  gap: var(--space-3);
}

.upload-dropzone {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-width: 0;
  min-height: 160px;
  padding: 16px 22px;
  border-radius: 22px;
  border: 2px dashed rgba(10, 132, 255, 0.56);
  background: var(--color-surface-overlay);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.1),
    0 18px 36px rgba(0, 0, 0, 0.16);
  text-align: center;
  cursor: pointer;
  transition:
    border-color 0.18s ease,
    box-shadow 0.18s ease,
    transform 0.18s ease;
}

.upload-dropzone:hover {
  transform: translateY(-1px);
  border-color: rgba(10, 132, 255, 0.78);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.12),
    0 22px 42px rgba(0, 0, 0, 0.2);
}

.upload-dropzone.is-dragover {
  border-color: rgba(10, 132, 255, 0.92);
  box-shadow:
    var(--focus-ring),
    inset 0 1px 0 rgba(255, 255, 255, 0.12),
    0 22px 42px rgba(0, 0, 0, 0.2);
}

.upload-dropzone.is-disabled {
  opacity: 0.65;
  cursor: not-allowed;
}

.upload-dropzone__input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.upload-dropzone__icon {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  color: var(--color-accent);
  background: var(--color-accent-soft);
}

.upload-dropzone__icon svg {
  width: 28px;
  height: 28px;
}

.upload-dropzone__title {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 1.1rem;
  font-weight: 760;
  letter-spacing: 0;
  line-height: 1.15;
}

.upload-dropzone__meta {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: 0.9rem;
  line-height: 1.25;
}

.upload-dropzone__separator {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: 0.85rem;
  font-weight: 650;
  line-height: 1.2;
}

.upload-error-banner {
  width: 100%;
  min-width: 0;
  padding: 10px 12px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255, 59, 48, 0.28);
  background: var(--color-danger-soft);
  color: var(--color-danger);
  font-size: var(--font-size-body-sm);
  line-height: 1.35;
}

.upload-error-banner.hidden {
  display: none;
}

.upload-dropzone__button {
  min-width: 190px;
  min-height: 44px;
  margin-top: 2px;
  padding-inline: 22px;
  border-radius: 14px;
  font-size: 0.95rem;
  font-weight: 760;
}

.upload-consent {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: flex-start;
  max-width: 520px;
  margin: 0 auto;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  color: var(--color-text-secondary);
  font-size: 0.8rem;
  line-height: 1.4;
}

.upload-consent input {
  margin-top: 2px;
}

.upload-consent.is-invalid {
  border-color: rgba(255, 59, 48, 0.48);
  background: var(--color-danger-soft);
  color: var(--color-danger);
}

.source-component-picker {
  display: grid;
  gap: var(--space-3);
  width: 100%;
  min-width: 0;
  padding: 12px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(56, 189, 248, 0.34);
  background: rgba(56, 189, 248, 0.08);
}

.source-component-picker.hidden {
  display: none;
}

.source-component-picker__summary {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.35;
}

.source-component-picker__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-2);
}

.source-component-picker__actions .button--primary,
.source-component-picker__actions .button--secondary {
  width: 100%;
  min-width: 0;
}

.setup-card {
  padding: var(--space-5);
}

.setup-card__head {
  gap: 6px;
}

.setup-card__action {
  width: 100%;
}

.setup-mode-panels,
.action-stack {
  display: grid;
  gap: var(--space-4);
}

.setup-group,
.action-group {
  display: grid;
  gap: var(--space-3);
  padding: var(--space-4);
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-border-soft);
  background: var(--color-surface-inset);
}

.setup-group--compact {
  gap: var(--space-2);
}

.setup-expert-fields {
  gap: var(--space-2);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.setup-expert-fields > .input-field {
  margin-left: 10px;
  padding-left: 10px;
  border-left: 2px solid var(--color-border-soft);
}

.setup-subgroup--collapsible {
  gap: var(--space-2);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.setup-subgroup--collapsible:not([open]) {
  padding-bottom: 0;
}

.setup-subgroup--collapsible > .setup-grid {
  padding-top: 0;
  padding-left: 10px;
  border-left: 2px solid var(--color-border-soft);
}

.setup-subgroup__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 38px;
  padding: 5px 0;
  border-bottom: 1px solid var(--color-border-soft);
  color: var(--color-text-primary);
  cursor: pointer;
  font-size: var(--font-size-body-sm);
  font-weight: 700;
  list-style: none;
}

.setup-subgroup__summary--with-switch {
  cursor: default;
}

.setup-subgroup--collapsible > .setup-subgroup__summary--with-switch::after,
.setup-subgroup--collapsible[open] > .setup-subgroup__summary--with-switch::after {
  content: none;
  display: none;
}

.setup-subgroup__summary-title {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1 1 auto;
  min-width: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__switch.input-field {
  flex: 0 1 auto;
  display: inline-grid;
  grid-template-columns: 34px;
  align-items: center;
  justify-content: end;
  min-height: 28px;
  padding: 0;
  border: 0;
  color: var(--color-text-secondary);
  cursor: pointer;
  min-width: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__switch.input-field::before {
  content: none;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__switch.input-field input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  min-height: 1px;
  margin: 0;
  opacity: 0;
  pointer-events: none;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__switch-track {
  display: block;
  position: relative;
  grid-column: 1;
  grid-row: 1;
  width: 34px;
  height: 20px;
  border: 1px solid var(--color-border-strong);
  border-radius: 999px;
  background: var(--color-surface-inset);
  transition:
    background-color 0.18s ease,
    border-color 0.18s ease,
    box-shadow 0.18s ease;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__switch-track::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--color-text-tertiary);
  transition:
    background-color 0.18s ease,
    transform 0.18s ease;
}

.page.page--upload-layout #workflow-panel-setup
  .setup-subgroup__switch.input-field
  input[type="checkbox"]:checked
  + .setup-subgroup__switch-track {
  border-color: var(--color-accent);
  background: var(--color-accent);
}

.page.page--upload-layout #workflow-panel-setup
  .setup-subgroup__switch.input-field
  input[type="checkbox"]:checked
  + .setup-subgroup__switch-track::after {
  background: var(--color-text-inverse);
  transform: translateX(14px);
}

.page.page--upload-layout #workflow-panel-setup
  .setup-subgroup__switch.input-field
  input[type="checkbox"]:focus-visible
  + .setup-subgroup__switch-track {
  box-shadow: var(--focus-ring);
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__switch.input-field:has(input:disabled) {
  cursor: not-allowed;
  opacity: 0.62;
}

.setup-subgroup__summary::-webkit-details-marker {
  display: none;
}

.setup-subgroup__summary::after {
  content: "+";
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1px solid var(--color-border-soft);
  color: var(--color-text-tertiary);
  font-size: 0.82rem;
  line-height: 1;
}

.setup-subgroup--collapsible[open] > .setup-subgroup__summary::after {
  content: "-";
}

.setup-subgroup--collapsible:not([open]) > .setup-subgroup__summary {
  border-bottom: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup--collapsible {
  gap: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup--collapsible:not([open]) {
  padding-bottom: 0;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup__summary,
.page.page--upload-layout #workflow-panel-setup .setup-expert-fields__summary {
  min-height: 38px;
  padding: 5px 0;
  font-size: 0.8rem;
  font-weight: 700;
}

.page.page--upload-layout #workflow-panel-setup .setup-subgroup--collapsible > .setup-grid {
  padding-top: 0;
  padding-left: 10px;
  border-left: 2px solid var(--color-border-soft);
}

.page.page--upload-layout #workflow-panel-setup .setup-expert-fields {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.page.page--upload-layout #workflow-panel-setup .setup-expert-fields > .input-field {
  margin-left: 10px;
  padding-left: 10px;
  border-left: 2px solid var(--color-border-soft);
}

.setup-expert-fields__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 38px;
  padding: 5px 0;
  border-bottom: 1px solid var(--color-border-soft);
  color: var(--color-text-primary);
  cursor: pointer;
  font-size: var(--font-size-body-sm);
  font-weight: 700;
  list-style: none;
}

.setup-expert-fields__summary::-webkit-details-marker {
  display: none;
}

.setup-expert-fields__summary::after {
  content: "+";
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1px solid var(--color-border-soft);
  color: var(--color-text-tertiary);
  font-size: 0.82rem;
  line-height: 1;
}

.setup-expert-fields[open] > .setup-expert-fields__summary::after {
  content: "-";
}

.action-group--primary {
  background: var(--color-accent-soft);
}

.rebuild-charge-notice {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid rgba(180, 109, 29, 0.34);
  border-radius: var(--radius-sm);
  background: var(--color-warning-soft);
  color: var(--color-warning);
  font-size: var(--font-size-caption);
  font-weight: 680;
  line-height: 1.35;
}

.setup-group__header,
.action-group__header {
  display: grid;
  gap: 4px;
}

.setup-group__title,
.action-group__title {
  margin: 0;
  font-size: var(--font-size-body);
  font-weight: 700;
  letter-spacing: 0;
  color: var(--color-text-primary);
}

.setup-group__description,
.action-group__description {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  line-height: 1.4;
}

.setup-grid {
  display: grid;
  gap: var(--space-3);
}

.setup-grid--double {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.setup-grid--triple {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.setup-grid__full,
#split-axis-field {
  grid-column: 1 / -1;
}

.control-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--space-2);
}

.formwork-mode-switch {
  position: relative;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.formwork-mode-switch__label {
  grid-column: 1 / -1;
  font-size: var(--font-size-body-sm);
  font-weight: 700;
  line-height: 1.25;
  color: var(--color-text-secondary);
}

.formwork-mode-switch .button--secondary {
  min-height: 88px;
  display: grid;
  grid-template-rows: 34px auto;
  place-items: center;
  gap: 8px;
  padding: 12px 8px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
  color: var(--color-text-secondary);
  box-shadow: 0 1px 2px rgba(60, 60, 67, 0.08);
  line-height: 1.15;
  text-align: center;
  white-space: normal;
}

.formwork-mode-switch .button--secondary[data-active="true"] {
  border-color: var(--color-accent);
  background: #ffffff;
  color: var(--color-accent-strong);
  box-shadow:
    0 0 0 2px var(--color-accent-soft),
    0 8px 18px rgba(10, 132, 255, 0.12);
}

.formwork-mode-switch .button--secondary:not(:disabled):hover {
  transform: translateY(-1px);
  border-color: rgba(10, 132, 255, 0.42);
}

.formwork-mode-switch .button--secondary:disabled {
  opacity: 0.58;
}

.formwork-mode-switch__icon {
  width: 34px;
  height: 34px;
  object-fit: contain;
  opacity: 0.72;
}

.formwork-mode-switch .button--secondary[data-active="true"] .formwork-mode-switch__icon {
  opacity: 1;
}

.formwork-mode-switch__text {
  min-width: 0;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.source-resize-mode-switch {
  position: relative;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
  padding: 4px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border-soft);
  background: var(--color-surface-inset);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.86);
}

.source-resize-mode-switch::before {
  content: "";
  position: absolute;
  top: 4px;
  left: 4px;
  width: calc(50% - 2px);
  height: calc(100% - 8px);
  border-radius: var(--radius-pill);
  background: linear-gradient(180deg, #4fb2ff 0%, #0a84ff 100%);
  box-shadow: 0 6px 12px rgba(10, 132, 255, 0.22);
  transition: transform 0.16s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.source-resize-mode-switch[data-mode="dimension"]::before {
  transform: translateX(calc(100% + 4px));
}

.source-resize-mode-switch .button--secondary {
  position: relative;
  z-index: 1;
  min-height: 40px;
  padding: 8px 12px;
  border: 0;
  background: transparent;
  color: var(--color-text-secondary);
  box-shadow: none;
}

.source-resize-mode-switch .button--secondary[data-active="true"] {
  background: transparent;
  color: var(--color-text-inverse);
}

.source-resize-mode-switch .button--secondary:not(:disabled):hover {
  transform: none;
}

.input-field,
.file-field {
  display: grid;
  gap: var(--space-2);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body);
}

.input-field > span,
.file-field > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  font-size: var(--font-size-body-sm);
  font-weight: 600;
  color: var(--color-text-secondary);
}

.formwork-mode-switch__label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.input-field__info {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid rgba(10, 132, 255, 0.32);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
  cursor: help;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 800;
  line-height: 1;
}

.input-field__calculation {
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  font-weight: 600;
  line-height: 1.3;
  font-variant-numeric: tabular-nums;
}

.input-field__hint {
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  font-weight: 600;
  line-height: 1.3;
}

.setting-field-tooltip {
  position: fixed;
  z-index: 10000;
  width: max-content;
  max-width: min(360px, calc(100vw - 16px));
  padding: 8px 10px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-floating);
  color: var(--color-text-primary);
  font-size: var(--font-size-caption);
  font-weight: 600;
  line-height: 1.35;
  pointer-events: none;
  text-align: left;
  white-space: normal;
}

.input-field input[type="number"],
.input-field input[type="email"],
.input-field input[type="password"],
.input-field input[type="text"],
.input-field select,
.file-field input[type="file"],
.result-output {
  width: 100%;
  min-height: var(--control-height-md);
  padding: 0 var(--control-padding-inline);
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-border-soft);
  background: var(--color-surface-card-strong);
  color: var(--color-text-primary);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
  transition:
    border-color 0.18s ease,
    box-shadow 0.18s ease,
    background-color 0.18s ease;
}

.input-field input[type="number"] {
  appearance: textfield;
  -moz-appearance: textfield;
  font-variant-numeric: tabular-nums;
}

.input-field input[type="number"]::-webkit-outer-spin-button,
.input-field input[type="number"]::-webkit-inner-spin-button {
  margin: 0;
  -webkit-appearance: none;
}

.input-field input::placeholder {
  color: var(--color-text-tertiary);
}

.result-output {
  display: flex;
  align-items: center;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.input-field input[type="number"]:focus-visible,
.input-field input[type="email"]:focus-visible,
.input-field input[type="password"]:focus-visible,
.input-field input[type="text"]:focus-visible,
.input-field select:focus-visible,
.file-field input[type="file"]:focus-visible,
.zoom-panel__slider:focus-visible,
button:focus-visible,
.upload-dropzone:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.input-field input[type="number"]:disabled,
.input-field input[type="email"]:disabled,
.input-field input[type="password"]:disabled,
.input-field input[type="text"]:disabled,
.input-field select:disabled,
.file-field input[type="file"]:disabled,
.result-output:disabled {
  background: var(--color-surface-disabled);
  color: var(--color-text-tertiary);
}

.input-field input[type="number"]:user-invalid,
.input-field input[type="email"]:user-invalid,
.input-field input[type="password"]:user-invalid,
.input-field input[type="text"]:user-invalid,
.input-field select:user-invalid {
  border-color: rgba(255, 59, 48, 0.62);
  background: var(--color-danger-soft);
}

.input-field input[type="checkbox"],
.upload-consent input[type="checkbox"],
.cookie-settings__option input {
  accent-color: var(--color-accent);
}

button,
.button {
  min-height: var(--control-height-md);
  padding: 0 var(--space-4);
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  background: var(--color-accent);
  color: var(--color-text-inverse);
  font-size: var(--font-size-body);
  font-weight: 700;
  line-height: 1.2;
  box-shadow: var(--shadow-interactive);
  transition:
    transform 0.16s ease,
    border-color 0.18s ease,
    background-color 0.18s ease,
    box-shadow 0.18s ease,
  opacity 0.18s ease;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}

button:not(:disabled):hover,
.button:not([aria-disabled="true"]):hover {
  transform: translateY(-1px);
}

button:not(:disabled):active,
.button:not([aria-disabled="true"]):active {
  transform: scale(0.985);
}

button:disabled,
.button[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: var(--state-disabled-opacity);
  transform: none;
}

.button--primary {
  border-color: rgba(10, 88, 180, 0.34);
  background: linear-gradient(180deg, #4fb2ff 0%, #0a84ff 100%);
}

.button--secondary {
  border-color: var(--color-border-soft);
  background: var(--color-surface-card);
  color: var(--color-text-primary);
}

.button--build {
  border-color: rgba(148, 86, 18, 0.42);
  background: linear-gradient(180deg, #f0aa54 0%, #dd7e24 100%);
}

.button--danger {
  border-color: rgba(137, 43, 43, 0.58);
  background: linear-gradient(180deg, #d96565 0%, #b84040 100%);
}

.button--secondary.active,
.button--secondary[aria-pressed="true"] {
  border-color: rgba(10, 132, 255, 0.34);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.action-grid {
  display: grid;
  gap: var(--space-3);
}

.action-grid--secondary {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
}

.action-grid__wide {
  grid-column: 1 / -1;
}

#draw-formwork-walls-btn,
#draw-adaptive-formwork-walls-btn,
#draw-adaptive-formwork-sock-btn {
  min-height: 46px;
  line-height: 1.15;
  white-space: normal;
}

.status {
  margin: 0;
  padding: 13px 14px;
  border-radius: var(--radius-md);
  border-left: 4px solid transparent;
  border: 1px solid var(--color-border-soft);
  background: var(--color-surface-overlay);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.4;
}

.status.info {
  border-color: rgba(10, 132, 255, 0.3);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.status.ok {
  border-color: rgba(29, 138, 98, 0.34);
  background: var(--color-success-soft);
  color: var(--color-success);
}

.status.warn {
  border-color: rgba(180, 109, 29, 0.34);
  background: var(--color-warning-soft);
  color: var(--color-warning);
}

.status.error {
  border-color: rgba(180, 71, 71, 0.34);
  background: var(--color-danger-soft);
  color: var(--color-danger);
}

.adaptive-build-debug {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-3);
  margin: 0;
  margin-top: 8px;
  padding: 10px 12px;
  border-radius: var(--radius-md);
  border: 1px dashed rgba(156, 173, 199, 0.55);
  background: var(--color-surface-inset);
  font-size: var(--font-size-body-sm);
  line-height: 1.4;
  color: var(--color-text-secondary);
}

.adaptive-build-debug__line {
  margin: 0;
  flex: 1 1 220px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: 0.9em;
}

.network-connection-notice {
  position: fixed;
  inset-block-start: clamp(14px, 3vw, 26px);
  inset-inline: 16px;
  z-index: 1400;
  display: flex;
  justify-content: center;
  pointer-events: none;
}

.network-connection-notice__panel {
  width: min(430px, 100%);
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 12px 14px;
  border: 1px solid rgba(180, 109, 29, 0.34);
  border-radius: 8px;
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-floating);
  color: var(--color-text-primary);
  pointer-events: auto;
}

.network-connection-notice__icon {
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--color-warning-soft);
  color: var(--color-warning);
  font-size: 0.85rem;
  font-weight: 800;
  line-height: 1;
}

.network-connection-notice__copy {
  min-width: 0;
}

.network-connection-notice__title {
  margin: 0;
  font-size: var(--font-size-body);
  line-height: 1.25;
  font-weight: 750;
}

.network-connection-notice__message {
  margin: 3px 0 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.35;
}

.hidden {
  display: none !important;
}

/* Job progress bar with cancel button */
.job-progress-container {
  margin-top: 10px;
  padding: 12px 14px;
  border: 1px solid rgba(156, 173, 199, 0.42);
  border-radius: 10px;
  background: var(--color-surface-overlay);
}

.job-progress-row {
  display: flex;
  align-items: center;
  gap: 10px;
}

.job-progress-bar-wrapper {
  flex: 1;
  height: 8px;
  background: var(--color-surface-inset);
  border-radius: 4px;
  overflow: hidden;
}

.job-progress-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--color-accent-strong) 0%, var(--color-accent) 100%);
  border-radius: 4px;
  transition: width 0.3s ease;
}

.job-progress-stage {
  margin-top: 6px;
  font-size: 12px;
  color: var(--color-text-secondary);
}

.button--sm {
  min-height: 34px;
  padding: 6px 12px;
  font-size: 12px;
  flex-shrink: 0;
  white-space: nowrap;
}

.viewer-column {
  flex: 1 1 auto;
  display: grid;
  align-content: start;
  justify-items: stretch;
  width: 100%;
  min-width: 0;
}

.viewer-card {
  width: 100%;
  min-width: 0;
  padding: 16px;
  display: grid;
  gap: 12px;
  border-radius: var(--radius-xl);
  background: linear-gradient(160deg, rgba(19, 20, 21, 0.97), rgba(30, 31, 32, 0.97));
  border-color: rgba(93, 108, 120, 0.62);
  box-shadow: 0 28px 56px rgba(10, 15, 20, 0.3);
}

.model-check-alert {
  --model-check-alert-pulse-rgb: 246, 77, 77;

  appearance: none;
  border: 1px solid rgba(173, 196, 211, 0.22);
  background: rgba(18, 29, 37, 0.82);
  color: rgba(230, 239, 245, 0.9);
  min-height: 34px;
  padding: 0 8px;
  border-radius: var(--radius-pill);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  transition: transform 0.15s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.model-check-alert:hover {
  transform: translateY(-1px);
}

.model-check-alert:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.model-check-alert__icon {
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  border-radius: var(--radius-pill);
  background: rgba(34, 121, 71, 0.2);
  color: #99e7bc;
  font-size: 0.74rem;
  font-weight: 800;
  line-height: 1;
}

.model-check-alert__label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1;
}

.model-check-alert__count {
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: var(--radius-pill);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.66rem;
  font-weight: 800;
  color: #0e1f1b;
  background: #9ce7be;
  line-height: 1;
}

.model-check-alert--danger {
  --model-check-alert-pulse-rgb: 246, 77, 77;

  border-color: rgba(223, 92, 92, 0.45);
  background: rgba(59, 17, 17, 0.84);
  color: #ffdada;
}

.model-check-alert--warning {
  --model-check-alert-pulse-rgb: 245, 158, 11;

  border-color: rgba(245, 158, 11, 0.42);
  background: rgba(68, 43, 8, 0.84);
  color: #ffe7b8;
}

.model-check-alert--danger .model-check-alert__icon {
  background: rgba(230, 77, 77, 0.22);
  color: #ff9f9f;
}

.model-check-alert--warning .model-check-alert__icon {
  background: rgba(245, 158, 11, 0.2);
  color: #fbbf24;
}

.model-check-alert--danger .model-check-alert__count {
  color: #fff2f2;
  background: #d64040;
}

.model-check-alert--warning .model-check-alert__count {
  color: #211405;
  background: #f59e0b;
}

.model-check-alert--critical {
  border-color: rgba(246, 77, 77, 0.64);
  box-shadow: 0 0 0 1px rgba(246, 77, 77, 0.2);
}

.model-check-alert--blink {
  animation: model-check-alert-breathe 2.4s ease-in-out infinite;
}

.model-check-alert--blink .model-check-alert__icon,
.model-check-alert--blink .model-check-alert__count {
  animation: model-check-alert-marker-breathe 2.4s ease-in-out infinite;
}

.viewer {
  position: relative;
  width: 100%;
  min-width: 0;
  min-height: var(--workspace-height);
  height: var(--workspace-height);
  max-height: var(--workspace-height);
  aspect-ratio: auto;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid rgba(98, 127, 145, 0.36);
  background:
    linear-gradient(180deg, rgba(11, 18, 24, 0.96), rgba(18, 28, 36, 0.96)),
    linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
    linear-gradient(180deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px));
}

.viewer.viewer--workspace {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 0;
  border-color: rgba(98, 127, 145, 0.4);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.03),
    0 18px 42px rgba(6, 11, 16, 0.24);
}

.viewer-canvas-host {
  position: relative;
  z-index: 0;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  width: 100%;
  align-self: stretch;
  overflow: hidden;
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
}

#viewer:has(#stl-info.hidden) .viewer-canvas-host {
  border-radius: var(--radius-lg);
}

.viewer--workspace .viewer-canvas-host {
  background:
    linear-gradient(115deg, rgba(154, 106, 47, 0.12), transparent 42%),
    linear-gradient(180deg, rgba(12, 17, 21, 0.98) 0%, rgba(18, 23, 27, 0.98) 58%, rgba(22, 24, 24, 0.98) 100%);
}

.viewer-canvas-host canvas {
  display: block;
  width: 100%;
  height: 100%;
  transition: opacity 0.24s ease;
}

.viewer > canvas {
  display: block;
  width: 100%;
  height: 100%;
  transition: opacity 0.24s ease;
}

.viewer.loading .viewer-canvas-host canvas,
.viewer.loading > canvas {
  opacity: 0.62;
}

.viewer-loader {
  /* Viewer loader overlay config. */
  --viewer-loader-overlay-bg: rgba(8, 17, 24, 0.94);

  position: absolute;
  inset: 0;
  z-index: 4;
  display: grid;
  place-items: center;
  border-radius: inherit;
  background: var(--viewer-loader-overlay-bg);
  overflow: hidden;
}

.viewer-panel {
  border-radius: var(--viewer-panel-radius);
  border: 1px solid var(--viewer-panel-border-outer);
  background: var(--viewer-panel-bg);
  box-shadow: var(--viewer-panel-shadow);
}

.viewer.viewer--bottom-pick .viewer-panel,
.viewer.viewer--section-plane-pick .viewer-panel,
.viewer.viewer--parting-axis-pick .viewer-panel {
  pointer-events: none;
}

.bottom-pick-instruction,
.section-plane-pick-instruction,
.parting-axis-pick-instruction {
  position: absolute;
  top: clamp(78px, 12vh, 126px);
  right: clamp(96px, 9vw, 172px);
  left: clamp(96px, 10vw, 180px);
  z-index: 7;
  display: grid;
  gap: 4px;
  justify-items: center;
  padding: clamp(16px, 2vw, 24px) clamp(20px, 4vw, 48px);
  border: 3px solid rgba(123, 214, 202, 0.62);
  background: rgba(10, 16, 21, 0.56);
  color: rgba(231, 248, 249, 0.94);
  font-size: 1.45rem;
  font-weight: 500;
  line-height: 1.22;
  text-align: center;
  text-shadow: 0 2px 10px rgba(2, 6, 10, 0.88);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.04),
    0 14px 34px rgba(2, 6, 10, 0.18);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-6px);
  transition:
    opacity 0.16s ease,
    visibility 0.16s ease,
    transform 0.16s ease;
}

.viewer.viewer--bottom-pick .bottom-pick-instruction,
.viewer.viewer--section-plane-pick .section-plane-pick-instruction,
.viewer.viewer--parting-axis-pick .parting-axis-pick-instruction {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.section-plane-pick-instruction,
.parting-axis-pick-instruction {
  top: 72px;
  right: auto;
  left: 50%;
  width: min(460px, calc(100% - 32px));
  justify-items: start;
  padding: 10px 12px;
  border-width: 1px;
  font-size: 0.78rem;
  font-weight: 600;
  text-align: left;
  transform: translate(-50%, -6px);
}

.viewer.viewer--section-plane-pick .section-plane-pick-instruction,
.viewer.viewer--parting-axis-pick .parting-axis-pick-instruction {
  transform: translate(-50%, 0);
}

.source-proxy-notice {
  position: absolute;
  top: 8px;
  left: calc(8px + var(--viewer-hierarchy-width) + 8px + var(--viewer-info-width) + 8px);
  z-index: 6;
  width: min(310px, calc(100% - 16px));
  padding: 9px 11px;
  border: 1px solid rgba(255, 190, 103, 0.34);
  border-radius: 14px;
  background: rgba(18, 24, 30, 0.78);
  color: rgba(255, 222, 168, 0.94);
  font-size: 0.74rem;
  font-weight: 720;
  line-height: 1.28;
  text-align: left;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.72);
  box-shadow:
    0 16px 34px rgba(6, 10, 14, 0.26),
    inset 0 0 0 1px rgba(255, 190, 103, 0.06);
  pointer-events: none;
}

@media (max-width: 900px) {
  .source-proxy-notice {
    right: 8px;
    left: auto;
    width: min(280px, calc(100% - 16px));
    font-size: 0.72rem;
  }
}

.stl-info {
  position: relative;
  z-index: 1;
  flex: 0 0 auto;
  width: 100%;
  max-width: none;
  display: block;
  margin: 0;
  padding: 0;
  pointer-events: none;
  border-bottom: 1px solid rgba(173, 196, 211, 0.14);
  background: linear-gradient(180deg, rgba(16, 24, 31, 0.9), rgba(22, 32, 40, 0.74));
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

.stl-info__bar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: flex-end;
  gap: 6px 16px;
  padding: 6px 8px 7px;
  min-width: 0;
}

.stl-info__bar-group {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  min-width: 0;
  max-width: 100%;
}

.stl-info__bar-group--checks {
  flex: 1 1 auto;
  min-width: 0;
  flex-direction: column;
  align-items: stretch;
  align-self: center;
  gap: 2px 8px;
}

.stl-info__kpi {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  white-space: nowrap;
  font-size: 0.68rem;
  line-height: 1.2;
}

.stl-info__bbox-inline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  min-width: 0;
  gap: 4px 12px;
  line-height: 1.2;
  font-size: 0.66rem;
}

.stl-info__bbox-pair {
  display: inline-flex;
  align-items: baseline;
  gap: 2px;
  white-space: nowrap;
}

@media (max-width: 520px) {
  .stl-info__bar {
    grid-template-columns: 1fr;
  }
}

.viewer-hierarchy {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 5;
  width: min(var(--viewer-hierarchy-width), calc(100% - 16px));
  display: grid;
  gap: 1px;
  padding: 6px 7px;
  border-radius: 14px;
}

.viewer-model-checks {
  --model-check-alert-pulse-rgb: 245, 158, 11;

  position: absolute;
  top: 8px;
  left: calc(8px + var(--viewer-hierarchy-width) + 8px);
  z-index: 5;
  width: var(--viewer-info-width);
  max-height: min(34vh, 270px);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 7px;
  padding: 9px 10px;
  overflow: hidden;
}

.viewer-model-checks--warning {
  border-color: rgba(245, 158, 11, 0.34);
  box-shadow: 0 16px 34px rgba(12, 16, 20, 0.32), inset 0 0 0 1px rgba(245, 158, 11, 0.08);
}

.viewer-model-checks--danger {
  --model-check-alert-pulse-rgb: 246, 77, 77;

  border-color: rgba(246, 77, 77, 0.38);
  box-shadow: 0 16px 34px rgba(12, 16, 20, 0.32), inset 0 0 0 1px rgba(246, 77, 77, 0.08);
}

.viewer-model-checks--blink {
  animation: model-check-alert-breathe 2.4s ease-in-out infinite;
}

.viewer-model-checks.hidden {
  display: none;
}

.viewer-model-checks--legend-hidden {
  width: fit-content;
  min-width: 0;
  max-width: none;
  grid-template-rows: auto;
  gap: 0;
  padding: 6px;
  border-radius: var(--radius-md);
}

.viewer-model-checks__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.viewer-model-checks--legend-hidden .viewer-model-checks__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  justify-items: center;
  gap: 5px;
}

.viewer-model-checks__copy {
  flex: 1 1 auto;
  min-width: 0;
  display: grid;
  gap: 4px;
}

.viewer-model-checks--legend-hidden .viewer-model-checks__copy {
  flex: none;
  justify-items: center;
  gap: 0;
}

.viewer-model-checks__status {
  justify-self: start;
  max-width: 100%;
  min-height: 30px;
  padding: 0 7px;
}

.viewer-model-checks--legend-hidden .viewer-model-checks__status {
  justify-self: center;
  max-width: none;
  min-height: 26px;
  padding: 0 5px;
  gap: 5px;
}

.viewer-model-checks__status .model-check-alert__icon {
  width: 17px;
  height: 17px;
}

.viewer-model-checks__status .model-check-alert__label {
  min-width: 0;
  font-size: 0.64rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.viewer-model-checks--legend-hidden .viewer-model-checks__status .model-check-alert__label {
  display: none;
}

.viewer-model-checks__summary {
  margin: 0;
  color: rgba(223, 233, 239, 0.74);
  font-size: 0.6rem;
  font-weight: 600;
  line-height: 1.25;
}

.viewer-model-checks--legend-hidden .viewer-model-checks__summary {
  display: none;
}

.viewer-model-checks__toggle {
  appearance: none;
  flex: 0 0 auto;
  min-height: 25px;
  min-width: 80px;
  max-width: 92px;
  padding: 0 9px;
  border: 1px solid rgba(173, 196, 211, 0.16);
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, 0.06);
  color: rgba(245, 250, 252, 0.94);
  cursor: pointer;
  font-size: 0.58rem;
  font-weight: 800;
  line-height: 1.1;
  text-align: center;
  white-space: nowrap;
}

.viewer-model-checks--legend-hidden .viewer-model-checks__toggle {
  justify-self: center;
  width: auto;
  min-width: 76px;
  max-width: none;
  min-height: 24px;
  padding-inline: 10px;
}

.viewer-model-checks__toggle:hover {
  background: rgba(255, 255, 255, 0.1);
}

.viewer-model-checks__toggle:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.viewer-model-checks__legend {
  display: grid;
  gap: 0;
  min-height: 0;
  overflow-y: auto;
  padding-right: 2px;
  scrollbar-width: thin;
  scrollbar-color: rgba(100, 122, 158, 0.28) transparent;
}

.viewer-model-checks__legend-row {
  display: grid;
  grid-template-columns: 13px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  min-width: 0;
  min-height: 43px;
  padding: 6px 0;
  border-top: 1px solid rgba(173, 196, 211, 0.1);
}

.viewer-model-checks__swatch {
  width: 11px;
  height: 11px;
  border-radius: 3px;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.12);
}

.viewer-model-checks__swatch--watertight {
  background: #ef4444;
}

.viewer-model-checks__swatch--non-manifold {
  background: #f97316;
}

.viewer-model-checks__swatch--winding {
  background: #a855f7;
}

.viewer-model-checks__swatch--components {
  background: #38bdf8;
}

.viewer-model-checks__swatch--degenerate {
  background: #ec4899;
}

.viewer-model-checks__swatch--flat-bottom {
  background: #facc15;
}

.viewer-model-checks__swatch--support-fragments {
  background: #14b8a6;
}

.viewer-model-checks__legend-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.viewer-model-checks__legend-line {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.viewer-model-checks__legend-title {
  flex: 1 1 auto;
  min-width: 0;
  color: rgba(245, 250, 252, 0.94);
  font-size: 0.66rem;
  font-weight: 800;
  line-height: 1.2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.viewer-model-checks__legend-count {
  flex: 0 0 auto;
  min-width: 30px;
  padding: 2px 5px;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(173, 196, 211, 0.14);
  background: rgba(255, 255, 255, 0.06);
  color: rgba(223, 233, 239, 0.8);
  font-size: 0.52rem;
  font-weight: 800;
  line-height: 1;
  text-align: center;
}

.viewer-model-checks__legend-detail {
  color: rgba(223, 233, 239, 0.74);
  font-size: 0.58rem;
  font-weight: 600;
  line-height: 1.25;
  overflow: hidden;
  overflow-wrap: anywhere;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.viewer-workspace-actions {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 8;
  display: grid;
  gap: 8px;
  pointer-events: auto;
}

.viewer-workspace-actions__button {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  width: 44px;
  height: 44px;
  min-height: 44px;
  display: grid;
  place-items: center;
  padding: 0;
  border-radius: 999px;
  border: 1px solid rgba(173, 196, 211, 0.18);
  background: rgba(10, 16, 21, 0.74);
  color: rgba(223, 233, 239, 0.84);
  cursor: pointer;
  box-shadow: 0 14px 28px rgba(6, 11, 16, 0.24);
  transition:
    background-color 0.16s ease,
    border-color 0.16s ease,
    color 0.16s ease,
    transform 0.16s ease,
    box-shadow 0.16s ease;
}

.viewer-workspace-actions__button:not(:disabled):hover {
  transform: translateY(-1px);
  border-color: rgba(123, 214, 202, 0.36);
  color: #f4fbfd;
  background: rgba(20, 31, 39, 0.9);
}

.viewer-workspace-actions__button:focus-visible {
  outline: 2px solid rgba(123, 214, 202, 0.86);
  outline-offset: 2px;
}

.viewer-workspace-actions__button--active,
.viewer-workspace-actions__button[aria-pressed="true"] {
  border-color: rgba(84, 200, 186, 0.36);
  background: rgba(220, 238, 255, 0.14);
  color: #dff7ff;
}

.viewer-workspace-actions__button--manual-axis-set {
  border-color: rgba(34, 197, 94, 0.68);
  background: rgba(34, 197, 94, 0.18);
  color: #dcfce7;
  box-shadow:
    0 0 0 3px rgba(34, 197, 94, 0.16),
    0 14px 28px rgba(6, 11, 16, 0.24);
}

.viewer-workspace-actions__button--manual-axis-set:not(:disabled):hover,
.viewer-workspace-actions__button--manual-axis-set[aria-pressed="true"] {
  border-color: rgba(74, 222, 128, 0.86);
  background: rgba(34, 197, 94, 0.24);
  color: #f0fdf4;
  box-shadow:
    0 0 0 4px rgba(34, 197, 94, 0.22),
    0 16px 34px rgba(6, 11, 16, 0.28);
}

.viewer-workspace-actions__button--bottom-error {
  border-color: #ffbe0b;
  color: #fff7d1;
  box-shadow:
    0 0 0 3px rgba(255, 190, 11, 0.95),
    0 0 0 7px rgba(255, 69, 58, 0.56),
    0 16px 34px rgba(255, 69, 58, 0.34);
  animation: bottom-action-alert 1.2s ease-in-out infinite;
}

.viewer-workspace-actions__button--bottom-error:not(:disabled):hover,
.viewer-workspace-actions__button--bottom-error[aria-pressed="true"] {
  border-color: #ffd54f;
  color: #ffffff;
  background: rgba(68, 34, 20, 0.86);
  box-shadow:
    0 0 0 3px rgba(255, 213, 79, 1),
    0 0 0 8px rgba(255, 69, 58, 0.66),
    0 18px 38px rgba(255, 69, 58, 0.38);
}

.viewer-workspace-actions__button:disabled {
  cursor: not-allowed;
  opacity: 0.52;
}

.viewer-workspace-actions__button::before,
.viewer-workspace-actions__button::after {
  position: absolute;
  top: 50%;
  left: calc(100% + 10px);
  z-index: 3;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: translate(-4px, -50%);
  transition:
    opacity 0.14s ease,
    visibility 0.14s ease,
    transform 0.14s ease;
}

.viewer-workspace-actions__button::before {
  content: "";
  left: calc(100% + 4px);
  width: 9px;
  height: 9px;
  border-left: 1px solid rgba(148, 176, 190, 0.2);
  border-bottom: 1px solid rgba(148, 176, 190, 0.2);
  background: rgba(12, 18, 24, 0.96);
  transform: translate(-4px, -50%) rotate(45deg);
}

.viewer-workspace-actions__button::after {
  content: attr(data-tooltip);
  width: max-content;
  max-width: min(220px, calc(100vw - 84px));
  padding: 7px 9px;
  border: 1px solid rgba(148, 176, 190, 0.2);
  border-radius: 6px;
  background: rgba(12, 18, 24, 0.96);
  color: rgba(242, 248, 251, 0.96);
  box-shadow: 0 12px 24px rgba(3, 7, 12, 0.34);
  font-size: 0.72rem;
  font-weight: 740;
  line-height: 1.2;
  text-align: left;
  white-space: normal;
}

.viewer-workspace-actions__button:not(:disabled):hover::before,
.viewer-workspace-actions__button:not(:disabled):hover::after,
.viewer-workspace-actions__button:focus-visible::before,
.viewer-workspace-actions__button:focus-visible::after {
  opacity: 1;
  visibility: visible;
  transform: translate(0, -50%);
}

.viewer-workspace-actions__button:not(:disabled):hover::before,
.viewer-workspace-actions__button:focus-visible::before {
  transform: translate(0, -50%) rotate(45deg);
}

.viewer-workspace-actions__icon {
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.viewer-workspace-actions__icon svg {
  width: 24px;
  height: 24px;
  overflow: visible;
}

.viewer-workspace-actions__icon path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: square;
  stroke-linejoin: miter;
}

.viewer-workspace-actions__icon--bottom path {
  stroke-width: 2.4;
}

.viewer-workspace-actions__icon--parting-axis path {
  stroke-width: 2.1;
}

.viewer-workspace-actions__label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

@keyframes bottom-action-alert {
  0%,
  100% {
    box-shadow:
      0 0 0 3px rgba(255, 190, 11, 0.95),
      0 0 0 7px rgba(255, 69, 58, 0.48),
      0 16px 34px rgba(255, 69, 58, 0.28);
  }

  50% {
    box-shadow:
      0 0 0 4px rgba(255, 213, 79, 1),
      0 0 0 10px rgba(255, 69, 58, 0.72),
      0 18px 38px rgba(255, 69, 58, 0.4);
  }
}

.viewer-source-resize {
  position: absolute;
  top: 8px;
  left: 58px;
  z-index: 6;
  width: min(318px, calc(100% - 74px));
  min-width: min(264px, calc(100% - 74px));
  max-height: min(54vh, 232px);
  display: grid;
  gap: 0;
  padding: 9px 9px 10px;
  border: 1px solid rgba(173, 196, 211, 0.18);
  border-radius: 8px;
  background: rgba(16, 24, 31, 0.86);
  box-shadow: 0 16px 28px rgba(5, 10, 16, 0.24);
  overflow-y: auto;
  overflow-x: hidden;
  pointer-events: auto;
}

.viewer-source-resize::before {
  content: "";
  position: absolute;
  top: 18px;
  left: -7px;
  width: 12px;
  height: 12px;
  border-left: 1px solid rgba(173, 196, 211, 0.18);
  border-bottom: 1px solid rgba(173, 196, 211, 0.18);
  background: rgba(16, 24, 31, 0.86);
  transform: rotate(45deg);
}

.viewer-source-resize .source-resize {
  display: grid;
  gap: 0;
}

.source-resize-mode-switch--hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}

.viewer-source-resize .source-resize__mode-panel {
  display: grid;
  gap: 9px;
}

.source-resize-compact__rows {
  display: grid;
  gap: 6px;
}

.source-resize-compact__row {
  display: grid;
  grid-template-columns: 18px minmax(118px, 1fr) minmax(76px, 0.64fr);
  align-items: center;
  gap: 7px;
  min-width: 0;
}

.source-resize-compact__axis {
  font-size: 0.88rem;
  font-weight: 800;
  line-height: 1;
  text-align: center;
}

.source-resize-compact__row--x .source-resize-compact__axis {
  color: #ff6b6b;
}

.source-resize-compact__row--y .source-resize-compact__axis {
  color: #54c88f;
}

.source-resize-compact__row--z .source-resize-compact__axis {
  color: #5f95ff;
}

.source-resize-compact__field {
  min-height: 35px;
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 5px;
  padding: 0 8px;
  border-bottom: 1px solid rgba(139, 160, 174, 0.46);
  background: rgba(31, 40, 50, 0.72);
}

.source-resize-compact__field--input {
  cursor: text;
}

.source-resize-compact__value,
.source-resize-compact__field input {
  min-width: 0;
  overflow: hidden;
  color: rgba(245, 250, 252, 0.96);
  font-size: 0.88rem;
  font-weight: 720;
  line-height: 1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-resize-compact__field input {
  width: 100%;
  min-height: 33px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  color: rgba(245, 250, 252, 0.96);
  font: inherit;
}

.source-resize-compact__field input:focus {
  outline: none;
}

.source-resize-compact__field input::-webkit-outer-spin-button,
.source-resize-compact__field input::-webkit-inner-spin-button {
  margin: 0;
  -webkit-appearance: none;
}

.source-resize-compact__field input[type="number"] {
  appearance: textfield;
  -moz-appearance: textfield;
}

.source-resize-compact__unit {
  flex: 0 0 auto;
  color: rgba(161, 181, 194, 0.88);
  font-size: 0.68rem;
  font-weight: 720;
  line-height: 1;
}

.viewer-source-resize .source-resize__submit {
  width: 100%;
  min-height: 36px;
  justify-self: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px;
  border-radius: 0;
  border: 1px solid rgba(123, 214, 202, 0.34);
  background: rgba(255, 255, 255, 0.06);
  color: #7bd6ca;
  font-size: 0.86rem;
  font-weight: 800;
  box-shadow: none;
}

.viewer-source-resize .source-resize__submit:not(:disabled):hover {
  background: rgba(123, 214, 202, 0.12);
  transform: none;
}

.viewer-source-resize .source-resize__submit:disabled {
  opacity: 0.55;
}

.source-resize__submit-icon {
  width: 17px;
  height: 17px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: inherit;
}

.source-resize__submit-icon svg {
  width: 17px;
  height: 17px;
}

.source-resize__submit-icon path {
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: square;
  stroke-linejoin: miter;
}

#viewer:has(.stl-info:not(.hidden)) .viewer-hierarchy {
  top: 48px;
  max-height: min(32vh, 200px);
}

.viewer-hierarchy__title {
  color: rgba(173, 196, 211, 0.68);
  font-size: 0.54rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1.1;
  text-transform: uppercase;
}

.viewer-hierarchy__list {
  display: grid;
  gap: 0;
  max-height: 32vh;
  overflow-y: auto;
  padding-right: 1px;
  scrollbar-width: thin;
  scrollbar-color: rgba(100, 122, 158, 0.28) transparent;
}

.viewer-hierarchy__list::-webkit-scrollbar {
  width: 4px;
}

.viewer-hierarchy__list::-webkit-scrollbar-thumb {
  border-radius: var(--radius-pill);
  background: rgba(100, 122, 158, 0.28);
}

.viewer-hierarchy__row {
  display: grid;
  grid-template-columns: 12px minmax(0, 1fr);
  align-items: center;
  column-gap: 2px;
  min-height: 14px;
  padding: 0;
  color: #eff7fb;
  font-size: 0.62rem;
  font-weight: 600;
  line-height: 1.1;
  user-select: none;
  cursor: pointer;
}

.viewer-hierarchy__row--with-remove {
  grid-template-columns: 12px 12px minmax(0, 1fr);
}

.viewer-hierarchy__row--nested {
  padding-left: 6px;
}

.viewer-hierarchy__toggle {
  appearance: none;
  -webkit-appearance: none;
  width: 12px;
  height: 12px;
  min-height: 0;
  display: grid;
  place-items: center;
  border: none;
  border-radius: 0;
  background: transparent !important;
  box-shadow: none;
  color: rgba(199, 221, 233, 0.72);
  cursor: pointer;
  font-size: 0;
  line-height: 1;
  padding: 0;
  margin: 0;
  transition: color 0.12s ease;
  transform: none;
}

.viewer-hierarchy__toggle:not(:disabled):hover {
  transform: none;
}

.viewer-hierarchy__row:hover .viewer-hierarchy__toggle:not(:disabled) {
  color: var(--color-accent-strong);
}

.viewer-hierarchy__remove {
  appearance: none;
  -webkit-appearance: none;
  width: 12px;
  height: 12px;
  min-height: 0;
  display: grid;
  place-items: center;
  border: none;
  border-radius: 0;
  background: transparent !important;
  box-shadow: none;
  color: rgba(225, 161, 161, 0.78);
  cursor: pointer;
  font-size: 0;
  line-height: 1;
  padding: 0;
  margin: 0;
  transition: color 0.12s ease;
  transform: none;
}

.viewer-hierarchy__row:hover .viewer-hierarchy__remove:not(:disabled) {
  color: #c45c5c;
}

.viewer-hierarchy__remove:disabled {
  opacity: 0.45;
  cursor: default;
}

.viewer-hierarchy__toggle:disabled {
  opacity: 0.5;
  cursor: default;
}

.viewer-hierarchy__icon {
  width: 11px;
  height: 11px;
}

.viewer-hierarchy__icon--eye-off {
  display: none;
}

.viewer-hierarchy__toggle[data-visible="false"] .viewer-hierarchy__icon--eye {
  display: none;
}

.viewer-hierarchy__toggle[data-visible="false"] .viewer-hierarchy__icon--eye-off {
  display: block;
}

.viewer-hierarchy__label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.stl-info__title {
  margin: 0;
  color: rgba(173, 196, 211, 0.68);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.15;
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 0;
}

.stl-info__proxy-badge {
  display: inline-flex;
  align-items: center;
  min-height: 18px;
  padding: 1px 6px;
  border: 1px solid rgba(255, 190, 103, 0.32);
  border-radius: 999px;
  background: rgba(255, 149, 0, 0.12);
  color: rgba(255, 214, 150, 0.92);
  font-size: 0.58rem;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  pointer-events: auto;
}

.stl-info__subtitle {
  margin: 0;
  color: rgba(173, 196, 211, 0.62);
  font-size: 0.55rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1.1;
  text-transform: uppercase;
  white-space: nowrap;
}

.stl-info__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
}

.stl-info__bar .stl-info__checks {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: 4px 6px;
  margin: 0;
  max-width: 100%;
  min-width: 0;
}

.stl-info__check {
  display: grid;
  gap: 2px;
  padding: 4px 6px;
  max-width: min(180px, 100%);
  border-radius: 6px;
  border: 1px solid rgba(173, 196, 211, 0.12);
  background: rgba(255, 255, 255, 0.06);
}

.stl-info__check-head {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.stl-info__check-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  padding: 2px 6px;
  border-radius: var(--radius-pill);
  font-size: 0.55rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  line-height: 1;
  text-transform: uppercase;
}

.stl-info__check-title {
  min-width: 0;
  color: #f5fafc;
  font-size: 0.66rem;
  font-weight: 700;
  line-height: 1.15;
}

.stl-info__check-message {
  margin: 0;
  color: rgba(223, 233, 239, 0.76);
  font-size: 0.64rem;
  line-height: 1.3;
}

.stl-info__check--ok {
  border-color: rgba(34, 121, 71, 0.22);
  background: rgba(34, 121, 71, 0.08);
}

.stl-info__check--ok .stl-info__check-badge {
  background: rgba(34, 121, 71, 0.15);
  color: var(--color-success);
}

.stl-info__check--warn {
  border-color: rgba(169, 111, 20, 0.22);
  background: rgba(214, 157, 34, 0.08);
}

.stl-info__check--warn .stl-info__check-badge {
  background: rgba(214, 157, 34, 0.16);
  color: var(--color-warning);
}

.stl-info__check--critical {
  border-color: rgba(179, 61, 61, 0.24);
  background: rgba(179, 61, 61, 0.08);
}

.stl-info__check--critical .stl-info__check-badge {
  background: rgba(179, 61, 61, 0.16);
  color: var(--color-danger);
}

.stl-info__check--modal {
  max-width: none;
  border-radius: 10px;
  padding: 8px 10px;
  gap: 4px;
  border-color: rgba(126, 148, 178, 0.34);
}

.stl-info__check--modal .stl-info__check-title {
  font-size: 0.84rem;
  color: var(--color-text-primary);
}

.stl-info__check--modal .stl-info__check-message {
  font-size: 0.79rem;
  line-height: 1.38;
  color: var(--color-text-secondary);
}

.stl-info__check--modal.stl-info__check--ok {
  border-color: rgba(34, 121, 71, 0.28);
  background: rgba(34, 121, 71, 0.1);
}

.stl-info__check--modal.stl-info__check--warn {
  border-color: rgba(169, 111, 20, 0.28);
  background: rgba(214, 157, 34, 0.14);
}

.stl-info__check--modal.stl-info__check--critical {
  border-color: rgba(179, 61, 61, 0.3);
  background: rgba(179, 61, 61, 0.12);
}

.stl-info__key {
  min-width: 14px;
  color: rgba(188, 207, 218, 0.72);
  font-size: 0.65rem;
  font-weight: 600;
  line-height: 1.15;
}

.stl-info__val {
  color: #f5fafc;
  font-size: 0.68rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
  text-align: right;
}

.viewer-warning {
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 6;
  display: inline-flex;
  align-items: flex-start;
  gap: 10px;
  width: min(320px, calc(100% - 24px));
  padding: 10px 12px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(197, 137, 66, 0.28);
  background: rgba(44, 28, 14, 0.88);
  box-shadow: var(--shadow-floating);
}

#viewer:has(.stl-info:not(.hidden)) .viewer-warning {
  top: 50px;
}

.viewer-warning__icon {
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  border-radius: var(--radius-pill);
  background: rgba(214, 157, 34, 0.18);
  color: #f6bf70;
  font-size: 0.82rem;
  font-weight: 800;
  flex-shrink: 0;
}

.viewer-warning__content {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.viewer-warning__title {
  color: #ffd7a1;
  font-size: var(--font-size-body-sm);
  font-weight: 700;
  line-height: 1.2;
}

.viewer-warning__text {
  color: rgba(255, 226, 184, 0.82);
  font-size: var(--font-size-caption);
  line-height: 1.35;
}

.viewer-overlay {
  position: absolute;
  top: 12px;
  right: 12px;
  bottom: 12px;
  left: 12px;
  z-index: 5;
  pointer-events: none;
}

#viewer:has(.stl-info:not(.hidden)) .viewer-overlay {
  top: 48px;
  right: 8px;
  bottom: 8px;
  left: 8px;
}

.viewer-overlay__stack {
  position: absolute;
  top: 0;
  right: 0;
  width: auto;
  display: grid;
  gap: var(--space-2);
  pointer-events: auto;
}

.viewer-overlay__quick-toggles {
  display: flex;
  justify-self: end;
  gap: var(--space-2);
}

.draft-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  justify-self: end;
  gap: 0;
  width: 34px;
  height: 34px;
  min-height: 34px;
  padding: 0;
  border-radius: 999px;
  border: 1px solid rgba(173, 196, 211, 0.18);
  background: rgba(10, 16, 21, 0.72);
  color: #edf7f1;
  font-size: 0.67rem;
  font-weight: 700;
  letter-spacing: 0;
  box-shadow: none;
}

.draft-toggle::before,
.draft-toggle::after {
  position: absolute;
  top: 50%;
  right: calc(100% + 10px);
  z-index: 3;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: translate(4px, -50%);
  transition:
    opacity 0.14s ease,
    visibility 0.14s ease,
    transform 0.14s ease;
}

.draft-toggle::before {
  content: "";
  right: calc(100% + 4px);
  width: 9px;
  height: 9px;
  border-top: 1px solid rgba(148, 176, 190, 0.2);
  border-right: 1px solid rgba(148, 176, 190, 0.2);
  background: rgba(12, 18, 24, 0.96);
  transform: translate(4px, -50%) rotate(45deg);
}

.draft-toggle::after {
  content: attr(data-tooltip);
  width: max-content;
  max-width: min(220px, calc(100vw - 84px));
  padding: 7px 9px;
  border: 1px solid rgba(148, 176, 190, 0.2);
  border-radius: 6px;
  background: rgba(12, 18, 24, 0.96);
  color: rgba(242, 248, 251, 0.96);
  box-shadow: 0 12px 24px rgba(3, 7, 12, 0.34);
  font-size: 0.72rem;
  font-weight: 740;
  line-height: 1.2;
  text-align: left;
  white-space: normal;
}

.draft-toggle:not(:disabled):hover::before,
.draft-toggle:not(:disabled):hover::after,
.draft-toggle:focus-visible::before,
.draft-toggle:focus-visible::after {
  opacity: 1;
  visibility: visible;
  transform: translate(0, -50%);
}

.draft-toggle:not(:disabled):hover::before,
.draft-toggle:focus-visible::before {
  transform: translate(0, -50%) rotate(45deg);
}

.draft-toggle:hover {
  background: rgba(15, 24, 31, 0.86);
}

.draft-toggle[aria-pressed="true"] {
  border-color: rgba(84, 200, 186, 0.24);
  background: linear-gradient(180deg, rgba(24, 153, 141, 0.92), rgba(15, 118, 110, 0.92));
  color: #ffffff;
}

.draft-toggle[aria-pressed="true"]:hover {
  background: linear-gradient(180deg, rgba(31, 176, 162, 0.96), rgba(17, 137, 127, 0.96));
}

.draft-toggle:focus-visible {
  outline: 2px solid rgba(123, 214, 202, 0.86);
  outline-offset: 2px;
}

.draft-toggle[aria-pressed="false"] {
  color: rgba(223, 233, 239, 0.68);
}

.draft-toggle__text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.draft-toggle__icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
  align-items: center;
  justify-content: center;
}

.draft-toggle__icon svg {
  width: 14px;
  height: 14px;
  overflow: visible;
}

.draft-toggle__icon path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.65;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.draft-toggle__icon-wall {
  fill: rgba(123, 214, 202, 0.08);
}

.draft-toggle__icon-arrow {
  color: #7bd6ca;
}

.draft-toggle__icon-angle {
  color: #ff6b6b;
}

.draft-toggle[aria-pressed="true"] .draft-toggle__icon-arrow,
.draft-toggle[aria-pressed="true"] .draft-toggle__icon-angle {
  color: #ffffff;
}

.draft-toggle[aria-pressed="true"] .draft-toggle__icon-wall {
  fill: rgba(255, 255, 255, 0.16);
}

.draft-toggle[aria-pressed="false"] .draft-toggle__icon path {
  color: inherit;
  opacity: 0.74;
}

.draft-toggle[aria-pressed="false"] .draft-toggle__icon-wall {
  fill: rgba(125, 144, 156, 0.08);
}

.overlay-card {
  display: grid;
  gap: var(--space-3);
  padding: 12px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(173, 196, 211, 0.14);
  background: rgba(15, 24, 31, 0.72);
  box-shadow: 0 18px 32px rgba(6, 11, 16, 0.2);
}

.section-panel {
  gap: 0;
  padding: 6px;
  border-radius: 999px;
  border-color: rgba(173, 196, 211, 0.12);
  background: rgba(10, 16, 21, 0.44);
  box-shadow: none;
}

.section-panel:has(.section-panel__plane:not(.hidden)) {
  border-radius: 20px;
}

.overlay-card__title-row {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-2);
}

.zoom-panel__step,
.section-panel__axis,
.section-panel__ruler,
.section-panel__mode,
.section-panel__plane {
  min-height: var(--control-height-sm);
  padding: 0;
  border-radius: var(--radius-xs);
  border: 1px solid rgba(173, 196, 211, 0.14);
  background: rgba(20, 31, 39, 0.86);
  color: #e6eff4;
  font-size: var(--font-size-body-sm);
  box-shadow: none;
}

.zoom-panel__step {
  width: 30px;
  height: 30px;
  min-height: 30px;
  display: grid;
  place-items: center;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(173, 196, 211, 0.18);
  background: rgba(20, 31, 39, 0.78);
  color: #e6eff4;
  font-size: 1rem;
  font-weight: 700;
  line-height: 0;
  box-shadow: none;
}

.zoom-panel__step-icon {
  display: block;
  line-height: 1;
  transform: translateY(-1px);
}

.zoom-panel__slider {
  width: 6px;
  height: 168px;
  margin: 0;
  border-radius: 999px;
  writing-mode: vertical-lr;
  direction: rtl;
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid rgba(173, 196, 211, 0.18);
  background:
    linear-gradient(0deg, rgba(123, 214, 202, 0.92) 0 var(--zoom-fill, 27%), rgba(72, 88, 100, 0.66) var(--zoom-fill, 27%) 100%),
    transparent;
}

.zoom-panel__slider::-webkit-slider-thumb {
  appearance: none;
  -webkit-appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 1px solid rgba(173, 196, 211, 0.3);
  background: #f4fbfd;
  box-shadow: none;
}

.zoom-panel__slider::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border: 1px solid rgba(173, 196, 211, 0.3);
  border-radius: 50%;
  background: #ffffff;
  box-shadow: none;
}

.zoom-panel__slider::-moz-range-track {
  height: 6px;
  border-radius: 999px;
  border: 1px solid rgba(173, 196, 211, 0.18);
  background: rgba(72, 88, 100, 0.66);
}

.zoom-panel {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  backdrop-filter: none;
  pointer-events: auto;
}

.zoom-panel__value {
  width: 100%;
  text-align: center;
  color: rgba(223, 233, 239, 0.74);
  font-size: 0.55rem;
  font-weight: 700;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  user-select: none;
}

.section-panel__controls {
  display: grid;
  grid-template-columns: repeat(5, minmax(34px, auto));
  gap: 6px;
}

.section-panel__axis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  width: 34px;
  min-height: 34px;
  border-radius: 999px;
  border-color: rgba(173, 196, 211, 0.14);
  background: rgba(20, 31, 39, 0.86);
  font-weight: 600;
  letter-spacing: 0.02em;
}

.section-panel__axis-text {
  font-size: 0.67rem;
  font-weight: 700;
  line-height: 1;
}

.section-panel__axis--x {
  color: #8d3a3a;
}

.section-panel__axis--y {
  color: #2f7a47;
}

.section-panel__axis--z {
  color: #34598f;
}

.section-panel__axis[data-active="true"],
.section-panel__ruler[data-active="true"],
.section-panel__mode[data-active="true"],
.section-panel__plane[data-active="true"] {
  border-color: rgba(84, 200, 186, 0.24);
  background: linear-gradient(180deg, rgba(24, 153, 141, 0.92), rgba(15, 118, 110, 0.92));
  color: #ffffff;
}

.section-panel__ruler,
.section-panel__mode {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  min-height: 34px;
  padding: 0;
  border-radius: 999px;
  border-color: rgba(173, 196, 211, 0.14);
  background: rgba(20, 31, 39, 0.86);
  color: #dbe8ef;
}

.section-panel__ruler-icon {
  width: 16px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.section-panel__ruler-icon svg {
  width: 16px;
  height: 16px;
  overflow: visible;
}

.section-panel__ruler-icon path {
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.section-panel__ruler-body {
  fill: rgba(123, 220, 117, 0.12);
  stroke: none;
}

.section-panel__ruler-edge {
  fill: none;
  stroke-width: 1.45;
}

.section-panel__ruler-mark {
  fill: none;
  stroke-width: 1.25;
  opacity: 0.82;
}

.section-panel__ruler[data-active="true"] .section-panel__ruler-body {
  fill: rgba(255, 255, 255, 0.16);
}

.section-panel__mode-icon {
  width: 14px;
  height: 14px;
  display: none;
}

.section-panel__mode-icon svg {
  width: 14px;
  height: 14px;
}

.section-panel__mode[data-mode="solid"] .section-panel__mode-icon--solid,
.section-panel__mode[data-mode="mesh"] .section-panel__mode-icon--mesh {
  display: inline-flex;
}

.section-panel__plane {
  grid-column: 1 / -1;
  width: 100%;
  min-height: 32px;
  padding: 0 10px;
  gap: 7px;
  font-size: 0.7rem;
  font-weight: 720;
  letter-spacing: 0;
}

.section-panel__plane-icon {
  width: 16px;
  height: 16px;
  display: inline-flex;
  flex: 0 0 16px;
  align-items: center;
  justify-content: center;
}

.section-panel__plane-icon svg {
  width: 16px;
  height: 16px;
  overflow: visible;
}

.section-panel__plane-icon path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.55;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.section-panel__plane-text {
  line-height: 1;
  white-space: nowrap;
}

@keyframes model-check-alert-breathe {
  0%,
  100% {
    box-shadow: 0 0 0 1px rgba(var(--model-check-alert-pulse-rgb), 0.16), 0 0 0 rgba(var(--model-check-alert-pulse-rgb), 0);
    filter: brightness(1);
  }
  50% {
    box-shadow: 0 0 0 1px rgba(var(--model-check-alert-pulse-rgb), 0.28), 0 0 18px rgba(var(--model-check-alert-pulse-rgb), 0.24);
    filter: brightness(1.12);
  }
}

@keyframes model-check-alert-marker-breathe {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
    filter: drop-shadow(0 0 0 rgba(var(--model-check-alert-pulse-rgb), 0));
  }
  50% {
    opacity: 0.78;
    transform: scale(0.96);
    filter: drop-shadow(0 0 8px rgba(var(--model-check-alert-pulse-rgb), 0.36));
  }
}

.viewer-pour-price-card,
.viewer-export-card {
  width: 100%;
}

.viewer-pour-price-card {
  gap: var(--space-3);
  padding: var(--space-4);
}

.viewer-pour-price-card .panel__header {
  gap: 4px;
}

.viewer-pour-price-card .setup-grid {
  gap: var(--space-2);
}

.viewer-pour-price-card .input-field {
  gap: 6px;
}

.viewer-pour-price-card .input-field > span {
  font-size: var(--font-size-caption);
}

.viewer-pour-price-card .input-field input[type="number"],
.viewer-pour-price-card .result-output {
  min-height: 42px;
}

.pre-pour-checklist {
  margin-top: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.pre-pour-checklist__eyebrow {
  margin-bottom: 2px;
}

.pre-pour-checklist__hint {
  margin: 0 0 6px;
  font-size: var(--font-size-caption);
  line-height: 1.35;
  color: var(--color-text-secondary);
}

.pre-pour-checklist .stl-info__checks {
  display: grid;
  gap: 6px;
  margin-top: 0;
}

.viewer-side-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
}

.viewer-meta-action {
  position: absolute;
  top: 124px;
  left: 12px;
  z-index: 5;
  width: var(--viewer-info-width);
  padding: 7px 9px;
  border-radius: var(--radius-sm);
  font-size: 0.66rem;
  line-height: 1.15;
}

@media (max-width: 1280px) {
  .page {
    gap: var(--space-5);
    padding-inline: 22px;
  }

  .controls-card {
    flex-basis: 348px;
    width: 348px;
    max-width: 348px;
  }

  .workflow-header__masthead,
  .workflow-header__rest {
    padding-inline: 22px;
  }

  .viewer {
    min-height: var(--workspace-height);
    height: var(--workspace-height);
    aspect-ratio: auto;
    max-height: none;
  }
}

@media (max-width: 1180px) {
  .page {
    gap: var(--space-4);
    padding-inline: 18px;
  }

  .page.page--upload-layout {
    grid-template-columns: var(--workflow-side-menu-width) minmax(320px, 400px) minmax(420px, 1fr);
    gap: 14px;
  }

  .controls-card {
    flex-basis: 340px;
    width: 340px;
    max-width: 340px;
  }

  .workflow-header__masthead,
  .workflow-header__rest {
    padding-inline: 18px;
  }

  .workflow-header__toolbar {
    gap: var(--space-3);
  }

  .workflow-header__email--masthead {
    max-width: min(180px, 24vw);
  }

  .viewer {
    min-height: var(--workspace-height);
    height: var(--workspace-height);
    aspect-ratio: auto;
    max-height: var(--workspace-height);
  }

  .setup-group,
  .action-group {
    padding: var(--space-3);
  }
}

@media (max-width: 940px) {
  .page.page--upload-layout {
    display: flex;
    flex-direction: column;
  }

  .workflow-side-menu {
    position: static;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    min-height: 0;
    width: 100%;
    padding: 10px;
    order: -2;
  }

  .workflow-side-menu__group {
    display: flex;
    flex: 1 1 220px;
    align-items: stretch;
    gap: 8px;
  }

  .workflow-side-menu__eyebrow {
    align-self: center;
    flex: 0 0 auto;
    width: auto;
    text-align: left;
  }

  .workflow-side-menu__button {
    grid-template-columns: auto minmax(0, 1fr);
    justify-items: start;
    align-content: center;
    min-height: 46px;
    padding: 7px 9px;
  }

  .workflow-side-menu__icon {
    width: 28px;
    height: 28px;
  }

  .workflow-side-menu__label {
    text-align: left;
  }

  .workflow-header__masthead {
    flex-direction: column;
    align-items: stretch;
    padding: var(--space-3) var(--space-5);
    gap: var(--space-2);
  }

  .dev-runtime-metrics {
    flex-basis: auto;
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  .workflow-header__toolbar {
    justify-content: flex-start;
  }

  .workflow-header__rest {
    padding: var(--space-2) var(--space-5) 0;
  }

  .workflow-title:not(.workflow-title--masthead) {
    font-size: 1.95rem;
  }

  .page {
    display: flex;
    gap: var(--space-4);
    padding: var(--space-5);
  }

  .profile-page {
    display: grid;
    width: min(100%, 980px);
    max-width: 980px;
  }

  .profile-grid {
    grid-template-columns: 1fr;
  }

  .page.page--upload-layout #workflow-panel-upload {
    grid-template-columns: 1fr;
  }

  .controls-card {
    position: static;
    width: 320px;
    max-width: 320px;
  }

  .page.page--upload-layout .controls-card {
    position: static;
    top: auto;
    width: 100%;
    max-width: none;
    max-height: none;
    min-height: 0;
    overflow: visible;
  }

  .page.page--upload-layout .controls-card .workflow-panel[data-step-panel="position"],
  .page.page--upload-layout .controls-card .workflow-panel[data-step-panel="setup"],
  .page.page--upload-layout .controls-card .workflow-panel[data-step-panel="generate"],
  .page.page--upload-layout .controls-card .workflow-panel[data-step-panel="export"] {
    max-height: none;
    overflow: visible;
    padding-right: 0;
    scrollbar-gutter: auto;
  }

  .workflow-nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .setup-grid--double,
  .setup-grid--triple,
  .action-grid--secondary {
    grid-template-columns: 1fr;
  }

  .viewer-column {
    width: 100%;
  }

  .page.page--upload-layout[data-workflow-step="position"] .viewer-column,
  .page.page--upload-layout[data-workflow-step="setup"] .viewer-column,
  .page.page--upload-layout[data-workflow-step="generate"] .viewer-column,
  .page.page--upload-layout[data-workflow-step="export"] .viewer-column {
    order: -1;
  }

  .page.page--upload-layout[data-workflow-step="position"] .controls-card,
  .page.page--upload-layout[data-workflow-step="setup"] .controls-card,
  .page.page--upload-layout[data-workflow-step="generate"] .controls-card,
  .page.page--upload-layout[data-workflow-step="export"] .controls-card {
    order: 0;
  }

  .page.page--upload-layout.workflow-loading .viewer-column {
    order: -1;
  }

  .page.page--upload-layout.workflow-loading .controls-card {
    order: 0;
  }

  .viewer {
    min-height: min(520px, 64vh);
    height: min(520px, 64vh);
  }

  .viewer-warning {
    top: 10px;
    width: min(300px, calc(100% - 20px));
  }

  .bottom-pick-instruction,
  .section-plane-pick-instruction {
    top: 62px;
    right: 14px;
    left: 14px;
    padding: 14px 16px;
    font-size: 1.05rem;
  }

  .section-plane-pick-instruction {
    right: auto;
    left: 50%;
    width: min(420px, calc(100% - 28px));
    padding: 10px 12px;
    font-size: 0.78rem;
    transform: translate(-50%, -6px);
  }

  .viewer.viewer--section-plane-pick .section-plane-pick-instruction {
    transform: translate(-50%, 0);
  }

  .viewer-overlay {
    inset: 10px;
  }

  .viewer-overlay__stack {
    width: auto;
  }
}

@media (max-width: 640px) {
  .workflow-header__toolbar--account {
    justify-content: space-between;
    width: 100%;
  }

  .workflow-header__email--masthead {
    max-width: calc(100vw - 104px);
  }

  .account-menu__dropdown {
    right: 0;
    width: min(220px, calc(100vw - 40px));
  }

  .profile-hero {
    align-items: flex-start;
    grid-template-columns: auto minmax(0, 1fr);
  }

  .profile-hero__back {
    grid-column: 1 / -1;
    justify-self: start;
  }

  .profile-hero__avatar {
    width: 52px;
    height: 52px;
    font-size: 1.3rem;
  }

  .dev-runtime-metrics__head {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }

  .dev-runtime-metrics__charts {
    grid-template-columns: 1fr;
  }

  .workflow-nav {
    grid-template-columns: 1fr;
  }

  .controls-card {
    width: 100%;
    max-width: none;
    padding: 14px;
  }

  .panel,
  .upload-island,
  .setup-card {
    padding: var(--space-4);
  }

  .setup-group,
  .action-group {
    padding: 12px;
  }

  .upload-dropzone {
    min-height: 118px;
    padding: 14px var(--space-4);
  }

  .page.page--upload-layout .upload-dropzone {
    min-height: 140px;
    padding: 14px 16px;
    gap: 7px;
    border-radius: 18px;
  }

  .upload-dropzone__icon,
  .page.page--upload-layout .upload-dropzone__icon {
    width: 40px;
    height: 40px;
    border-radius: 13px;
  }

  .upload-dropzone__icon svg {
    width: 26px;
    height: 26px;
  }

  .upload-dropzone__title,
  .page.page--upload-layout .upload-dropzone__title {
    font-size: 1.05rem;
  }

  .upload-dropzone__meta,
  .upload-dropzone__separator {
    font-size: 0.82rem;
  }

  .upload-dropzone__button,
  .page.page--upload-layout .upload-dropzone__button {
    min-width: min(190px, 100%);
    min-height: 42px;
    font-size: 0.92rem;
  }

  .page.page--upload-layout .setup-subgroups--form,
  .page.page--upload-layout #workflow-panel-setup .setup-subgroups--adaptive,
  .page.page--upload-layout #workflow-panel-setup .setup-grid--compact,
  .page.page--upload-layout #workflow-panel-setup .setup-card[aria-label="Параметры формы"] .setup-grid {
    grid-template-columns: 1fr;
  }

  .export-metrics {
    grid-template-columns: 1fr;
  }

  .viewer-warning {
    align-items: center;
  }

  .bottom-pick-instruction,
  .section-plane-pick-instruction {
    border-width: 2px;
    font-size: 0.92rem;
  }

  .viewer-warning__title {
    font-size: var(--font-size-caption);
  }

  .viewer-warning__text {
    font-size: 0.72rem;
  }

  .overlay-card {
    padding: 10px;
  }

  .zoom-panel {
    gap: 8px;
  }

  .zoom-panel__slider {
    height: 142px;
  }

  .zoom-panel__value {
    font-size: 0.55rem;
  }

  .section-panel__controls {
    grid-template-columns: repeat(4, minmax(32px, auto));
  }

  .section-panel__mode {
    grid-column: auto;
  }

  .my-models-list__row--with-delete {
    grid-template-columns: minmax(0, 1fr) 42px;
  }

  .my-models-list__delete {
    width: 42px;
    height: 42px;
    min-height: 0;
  }
}

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

}

@media (prefers-reduced-transparency: reduce) {
  .workflow-header,
  .workflow-nav,
  .card,
  .surface--glass,
  .landing-visual__workspace,
  .viewer-panel,
  .bottom-pick-instruction,
  .section-plane-pick-instruction,
  .cookie-settings__backdrop,
  .my-models-overlay__backdrop,
  .my-models-overlay__dialog,
  .my-models-overlay__close,
  .my-models-list__btn,
  .my-models-list__delete {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .workflow-header,
  .workflow-nav,
  .surface--glass,
  .bottom-pick-instruction,
  .section-plane-pick-instruction,
  .my-models-overlay__dialog {
    background: var(--color-surface-card-strong);
  }

  .my-models-overlay__close {
    background: var(--color-surface-card);
  }
}

/* Auth gate + landing */
.auth-gate {
  flex: 1 1 auto;
  min-height: 0;
}

.public-shell,
.login-shell {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow-x: clip;
}

#app-authenticated.auth-gate {
  display: flex;
  flex-direction: column;
}

#app-authenticated > main.page {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
}

.landing-page {
  width: min(100%, var(--page-max-width));
  margin: 0 auto;
  padding: clamp(20px, 3vw, 34px) max(var(--page-padding-inline), env(safe-area-inset-right)) 54px
    max(var(--page-padding-inline), env(safe-area-inset-left));
}

.public-shell > .workflow-header {
  position: fixed;
  top: max(12px, env(safe-area-inset-top));
  left: max(14px, env(safe-area-inset-left));
  right: max(14px, env(safe-area-inset-right));
  z-index: 200;
  width: min(1180px, calc(100% - 28px));
  margin-inline: auto;
  border: 1px solid rgba(255, 255, 255, 0.72);
  border-radius: 999px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.82), rgba(255, 255, 255, 0.56)),
    rgba(251, 251, 253, 0.62);
  box-shadow:
    0 18px 46px rgba(24, 38, 50, 0.13),
    inset 0 1px 0 rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(28px) saturate(180%);
  -webkit-backdrop-filter: blur(28px) saturate(180%);
}

.public-shell > .workflow-header .workflow-header__masthead {
  min-height: 58px;
  padding: 8px 10px 8px 14px;
  border-bottom: 0;
}

.public-shell > .workflow-header .workflow-brand__logo {
  width: 34px;
  height: 34px;
  border-radius: 12px;
}

.public-shell > .workflow-header .workflow-title--masthead {
  font-size: 1.05rem;
}

.public-shell > .workflow-header .workflow-brand__tagline {
  display: none;
}

.public-shell > .workflow-header .workflow-header__textlink {
  min-height: 38px;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}

.public-shell > .workflow-header .workflow-header__cta {
  min-height: 40px;
  box-shadow: 0 12px 28px rgba(0, 122, 255, 0.25);
}

.landing-hero {
  position: relative;
  min-height: clamp(640px, calc(100dvh - 120px), 740px);
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(360px, 0.78fr);
  align-items: center;
  gap: clamp(24px, 4vw, 64px);
  overflow: hidden;
  padding: clamp(78px, 7vw, 108px) clamp(24px, 4.5vw, 64px) clamp(30px, 4vw, 48px);
  border: 1px solid rgba(255, 255, 255, 0.76);
  border-radius: 28px;
  background:
    radial-gradient(circle at 72% 22%, rgba(255, 255, 255, 0.86) 0 10%, transparent 32%),
    linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(244, 248, 252, 0.92) 45%, rgba(226, 233, 238, 0.7) 100%);
  box-shadow:
    0 34px 90px rgba(24, 38, 50, 0.14),
    inset 0 1px 0 rgba(255, 255, 255, 0.96);
}

.landing-hero__ambient {
  position: absolute;
  inset: auto -10% -24% 36%;
  height: 52%;
  background:
    radial-gradient(circle at 20% 28%, rgba(0, 122, 255, 0.18), transparent 31%),
    radial-gradient(circle at 74% 46%, rgba(255, 149, 0, 0.16), transparent 28%),
    radial-gradient(circle at 48% 78%, rgba(52, 199, 89, 0.14), transparent 34%);
  filter: blur(24px);
  opacity: 0.92;
  pointer-events: none;
}

.landing-hero__copy {
  position: relative;
  z-index: 2;
  display: grid;
  gap: var(--space-4);
  max-width: 720px;
}

.landing-hero__eyebrow,
.landing-section-heading__eyebrow {
  margin: 0;
  color: var(--color-accent-strong);
  font-size: var(--font-size-caption);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.landing-hero__title {
  margin: 0;
  color: var(--color-text-primary);
  font-family: var(--font-display);
  font-size: clamp(2.45rem, 4.9vw, 5rem);
  line-height: 0.98;
  letter-spacing: 0;
}

.landing-hero__lead {
  max-width: 650px;
  margin: 0;
  color: var(--color-text-secondary);
  font-size: clamp(1rem, 1.25vw, 1.14rem);
  line-height: 1.5;
}

.landing-hero__search-copy {
  max-width: 640px;
  margin: 0;
  color: var(--color-text-muted);
  font-size: var(--font-size-small);
  line-height: 1.55;
}

.landing-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
}

.landing-hero__access-note {
  margin: calc(var(--space-3) * -0.55) 0 0;
  color: var(--color-text-muted);
  font-size: var(--font-size-caption);
  line-height: 1.4;
}

.landing-hero__action {
  min-height: var(--control-height-lg);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 20px;
  border: 1px solid transparent;
  border-radius: var(--radius-pill);
  color: var(--color-text-inverse);
  font-size: var(--font-size-body);
  font-weight: 800;
  line-height: 1.2;
  text-decoration: none;
  box-shadow: var(--shadow-interactive);
  transition:
    background-color 0.18s ease,
    border-color 0.18s ease,
    box-shadow 0.18s ease,
    transform 0.18s ease;
}

.landing-hero__action.button--secondary {
  border-color: rgba(60, 60, 67, 0.14);
  background: rgba(255, 255, 255, 0.72);
  color: var(--color-text-primary);
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
}

.landing-hero__action:hover {
  transform: translateY(-1px);
}

.landing-hero__metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  max-width: 680px;
  margin: var(--space-2) 0 0;
}

.landing-hero__metrics div {
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid rgba(255, 255, 255, 0.76);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.58);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(18px) saturate(170%);
  -webkit-backdrop-filter: blur(18px) saturate(170%);
}

.landing-hero__metrics dt {
  color: var(--color-text-primary);
  font-weight: 850;
  line-height: 1.1;
}

.landing-hero__metrics dd {
  margin: 4px 0 0;
  color: var(--color-text-secondary);
  font-size: 0.78rem;
  line-height: 1.3;
}

.landing-visual {
  position: relative;
  z-index: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  pointer-events: none;
}

.landing-visual__workspace {
  width: min(100%, 660px);
  aspect-ratio: 1.05 / 1;
  display: grid;
  grid-template-rows: auto 1fr auto;
  overflow: hidden;
  transform: perspective(1000px) rotateY(-7deg) rotateX(3deg);
  border: 1px solid rgba(255, 255, 255, 0.74);
  border-radius: 26px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.34)),
    rgba(250, 250, 252, 0.62);
  box-shadow:
    0 30px 80px rgba(24, 38, 50, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
}

.landing-visual__topbar {
  display: flex;
  gap: 7px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--color-border-soft);
}

.landing-visual__topbar span {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--color-text-tertiary);
}

.landing-visual__topbar span:nth-child(2) {
  background: var(--color-success);
}

.landing-visual__topbar span:nth-child(3) {
  background: var(--color-warning);
}

.landing-visual__stage {
  position: relative;
  min-height: 0;
  background:
    radial-gradient(circle at 50% 46%, rgba(10, 132, 255, 0.11), transparent 38%),
    linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
    linear-gradient(180deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px));
  background-size: 34px 34px;
}

.landing-visual__base,
.landing-visual__walls,
.landing-visual__model {
  position: absolute;
  left: 50%;
  transform: translateX(-50%) skewX(-12deg);
}

.landing-visual__base {
  bottom: 20%;
  width: 58%;
  height: 12%;
  border-radius: 8px;
  background: linear-gradient(180deg, #4cd964, #248a3d);
  box-shadow: 0 20px 28px rgba(12, 46, 42, 0.16);
}

.landing-visual__walls {
  bottom: 30%;
  width: 48%;
  height: 34%;
  border: 12px solid rgba(29, 29, 31, 0.86);
  border-top-width: 8px;
  border-radius: 10px;
  opacity: 0.9;
}

.landing-visual__model {
  bottom: 35%;
  width: 30%;
  height: 30%;
  border-radius: 48% 44% 42% 46%;
  background:
    radial-gradient(circle at 28% 24%, rgba(255, 255, 255, 0.95), transparent 24%),
    linear-gradient(160deg, #f5f5f7 0%, rgba(142, 142, 147, 0.76) 100%);
  box-shadow:
    inset -14px -18px 26px rgba(43, 62, 74, 0.18),
    0 18px 36px rgba(24, 38, 50, 0.16);
}

.landing-visual__axis {
  position: absolute;
  left: 50%;
  bottom: 25%;
  width: 32%;
  height: 2px;
  transform-origin: left center;
  background: rgba(255, 59, 48, 0.74);
}

.landing-visual__axis--x {
  transform: rotate(-14deg);
}

.landing-visual__axis--y {
  background: rgba(0, 122, 255, 0.74);
  transform: rotate(-76deg);
}

.landing-visual__panel {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 14px;
  border-top: 1px solid var(--color-border-soft);
}

.landing-visual__panel span {
  min-width: 0;
  padding: 8px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--color-text-secondary);
  font-size: 0.8rem;
  font-weight: 800;
  text-align: center;
}

.landing-band {
  display: grid;
  gap: var(--space-6);
  padding: clamp(44px, 6vw, 74px) 0;
  border-top: 0;
  scroll-margin-top: 96px;
}

.landing-band--process {
  padding-bottom: 14px;
}

.landing-section-heading {
  display: grid;
  gap: var(--space-2);
  max-width: 840px;
}

.landing-section-heading h2 {
  margin: 0;
  font-size: clamp(1.55rem, 2.5vw, 2.4rem);
  line-height: 1.08;
  letter-spacing: 0;
}

.landing-feature-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
  gap: var(--space-4);
}

.landing-feature {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: var(--space-3);
  min-height: 230px;
  padding: clamp(20px, 3vw, 30px);
  border: 1px solid rgba(255, 255, 255, 0.74);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.76), rgba(255, 255, 255, 0.46)),
    rgba(250, 250, 252, 0.66);
  box-shadow:
    0 18px 42px rgba(24, 38, 50, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(18px) saturate(170%);
  -webkit-backdrop-filter: blur(18px) saturate(170%);
}

.landing-feature--wide {
  grid-row: span 2;
  min-height: 476px;
}

.landing-feature__icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  color: #006bd6;
  background: rgba(10, 132, 255, 0.12);
}

.landing-feature__icon svg {
  width: 24px;
  height: 24px;
}

.landing-feature h3 {
  margin: 0;
  font-size: clamp(1.15rem, 1.6vw, 1.55rem);
  line-height: 1.22;
  letter-spacing: 0;
}

.landing-feature p {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.45;
}

.landing-decision {
  grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);
  align-items: start;
}

.landing-decision__lead {
  margin: var(--space-2) 0 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-lg);
  line-height: 1.55;
}

.landing-decision-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.landing-decision-card {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: var(--space-3);
  min-height: 190px;
  padding: clamp(20px, 2.4vw, 28px);
  border: 1px solid rgba(255, 255, 255, 0.72);
  border-radius: 20px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.44)),
    rgba(250, 250, 252, 0.64);
  box-shadow:
    0 16px 34px rgba(24, 38, 50, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(16px) saturate(165%);
  -webkit-backdrop-filter: blur(16px) saturate(165%);
}

.landing-decision-card--accent {
  border-color: rgba(10, 132, 255, 0.2);
  background:
    linear-gradient(180deg, rgba(229, 243, 255, 0.86), rgba(255, 255, 255, 0.5)),
    rgba(250, 250, 252, 0.7);
}

.landing-decision-card h3 {
  margin: 0;
  color: var(--color-text-primary);
  font-size: clamp(1.05rem, 1.25vw, 1.28rem);
  line-height: 1.22;
  letter-spacing: 0;
}

.landing-decision-card p,
.landing-decision-card li {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.46;
}

.landing-decision-card ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 18px;
}

.landing-process-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: landing-step;
}

.landing-process-list li {
  min-width: 0;
  min-height: 166px;
  padding: 18px;
  border: 1px solid rgba(255, 255, 255, 0.72);
  border-radius: 20px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.44)),
    rgba(250, 250, 252, 0.64);
  color: var(--color-text-primary);
  font-weight: 800;
  line-height: 1.32;
  counter-increment: landing-step;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(16px) saturate(165%);
  -webkit-backdrop-filter: blur(16px) saturate(165%);
}

.landing-process-list li::before {
  content: counter(landing-step);
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  margin-bottom: var(--space-3);
  border-radius: 50%;
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
  font-size: 0.82rem;
}

.landing-process-list span,
.landing-process-list small {
  display: block;
}

.landing-process-list small {
  margin-top: var(--space-2);
  color: var(--color-text-secondary);
  font-size: 0.82rem;
  font-weight: 500;
  line-height: 1.42;
}

@media (prefers-color-scheme: dark) {
  .public-shell > .workflow-header {
    border-color: rgba(255, 255, 255, 0.13);
    background:
      linear-gradient(180deg, rgba(36, 36, 38, 0.82), rgba(36, 36, 38, 0.54)),
      rgba(28, 28, 30, 0.62);
    box-shadow:
      0 18px 46px rgba(0, 0, 0, 0.38),
      inset 0 1px 0 rgba(255, 255, 255, 0.12);
  }

  .landing-hero {
    border-color: rgba(255, 255, 255, 0.12);
    background:
      radial-gradient(circle at 72% 22%, rgba(255, 255, 255, 0.12) 0 10%, transparent 32%),
      linear-gradient(135deg, rgba(36, 36, 38, 0.98) 0%, rgba(28, 29, 32, 0.92) 48%, rgba(18, 20, 24, 0.86) 100%);
    box-shadow:
      0 34px 90px rgba(0, 0, 0, 0.5),
      inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }

  .landing-hero__metrics div,
  .landing-visual__workspace,
  .landing-feature,
  .landing-decision-card,
  .landing-process-list li {
    border-color: rgba(255, 255, 255, 0.12);
    background:
      linear-gradient(180deg, rgba(44, 44, 46, 0.72), rgba(36, 36, 38, 0.5)),
      rgba(28, 28, 30, 0.62);
    box-shadow:
      0 24px 58px rgba(0, 0, 0, 0.32),
      inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }

  .landing-visual__panel span,
  .landing-hero__action.button--secondary {
    background: rgba(44, 44, 46, 0.72);
  }

  .landing-visual__walls {
    border-color: rgba(245, 245, 247, 0.82);
  }

  .landing-decision-card--accent {
    border-color: rgba(100, 169, 255, 0.24);
    background:
      linear-gradient(180deg, rgba(28, 52, 74, 0.72), rgba(36, 36, 38, 0.5)),
      rgba(28, 28, 30, 0.62);
  }
}

.page--login {
  position: relative;
  flex: 1 1 auto;
  align-items: center;
  justify-content: center;
  padding-top: clamp(34px, 8vh, 82px);
  padding-bottom: clamp(34px, 8vh, 82px);
}

.login-shell {
  background:
    radial-gradient(circle at 50% 18%, rgba(10, 132, 255, 0.1), transparent 34%),
    linear-gradient(180deg, transparent, rgba(10, 132, 255, 0.04));
}

.login-shell > .workflow-header {
  border-bottom: 1px solid var(--workflow-masthead-border);
}

.login-status-ribbon {
  position: fixed;
  top: clamp(76px, 5.4vw, 108px);
  right: clamp(-172px, -7.4vw, -126px);
  z-index: 3;
  width: clamp(440px, 32vw, 640px);
  pointer-events: none;
  transform: rotate(45deg);
  transform-origin: center;
  color: #fff;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.24), transparent 48%),
    linear-gradient(135deg, #ff5f2f 0%, #ff7a1a 54%, #f06d10 100%);
  box-shadow:
    0 18px 44px rgba(255, 111, 22, 0.22),
    0 3px 0 rgba(123, 42, 0, 0.16),
    inset 0 1px 0 rgba(255, 255, 255, 0.2),
    inset 0 -1px 0 rgba(128, 30, 0, 0.24);
}

.login-status-ribbon span {
  display: block;
  padding: clamp(13px, 1.05vw, 18px) 28px;
  text-align: center;
  font-size: clamp(1rem, 1.18vw, 1.32rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
  white-space: nowrap;
  text-shadow: 0 1px 1px rgba(82, 26, 0, 0.28);
}

.error-shell {
  min-height: 100vh;
  min-height: 100dvh;
}

.error-shell__header {
  border-bottom: 1px solid var(--workflow-masthead-border);
}

.error-page {
  flex: 1 1 auto;
  display: grid;
  place-items: center;
  padding-block: clamp(20px, 4vh, 40px);
}

.error-page__content {
  display: grid;
  justify-items: center;
  gap: clamp(14px, 2.2vh, 22px);
  width: min(100%, 820px);
}

.error-page__copy {
  display: grid;
  justify-items: center;
  gap: var(--space-4);
  min-width: 0;
  text-align: center;
}

.error-page__title {
  max-width: 960px;
  font-size: clamp(1.65rem, 2.5vw, 2.35rem);
  line-height: 1.08;
}

.error-page__actions {
  margin-top: var(--space-2);
}

.error-page__visual {
  min-width: 0;
  width: min(100%, 380px);
}

.error-page__visual img {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  object-fit: contain;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-xs);
  background: var(--color-surface-inset);
  box-shadow: var(--shadow-panel);
}

@media (max-width: 980px) {
  .public-shell > .workflow-header {
    width: calc(100% - 24px);
  }

  .public-shell > .workflow-header .workflow-header__toolbar {
    gap: 6px;
  }

  .public-shell > .workflow-header .workflow-header__textlink {
    min-height: 34px;
    padding: 6px 10px;
  }

  .public-shell > .workflow-header .workflow-header__textlink--soon {
    display: none;
  }

  .public-shell > .workflow-header .workflow-header__cta {
    min-height: 36px;
    padding: 8px 16px;
  }

  .landing-hero {
    min-height: 0;
    grid-template-columns: 1fr;
    padding-top: 104px;
  }

  .landing-visual {
    justify-content: flex-start;
  }

  .landing-visual__workspace {
    width: min(100%, 620px);
    transform: none;
  }

  .landing-feature-grid,
  .landing-decision,
  .landing-process-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .landing-decision-grid {
    grid-template-columns: 1fr;
  }
  .error-page__visual {
    width: min(100%, 340px);
  }
}

@media (max-width: 640px) {
  .public-shell > .workflow-header {
    top: max(8px, env(safe-area-inset-top));
    left: 8px;
    right: 8px;
    width: calc(100% - 16px);
    border-radius: 18px;
  }

  .public-shell > .workflow-header .workflow-header__masthead {
    min-height: 0;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 8px 10px;
  }

  .public-shell > .workflow-header .workflow-brand__logo {
    width: 30px;
    height: 30px;
    border-radius: 10px;
  }

  .public-shell > .workflow-header .workflow-title--masthead {
    font-size: 0.98rem;
  }

  .public-shell > .workflow-header .workflow-header__toolbar {
    width: 100%;
    justify-content: flex-start;
    flex-wrap: nowrap;
    gap: 6px;
    overflow-x: auto;
    padding-bottom: 1px;
    scrollbar-width: none;
  }

  .public-shell > .workflow-header .workflow-header__toolbar::-webkit-scrollbar {
    display: none;
  }

  .public-shell > .workflow-header .workflow-header__textlink {
    flex: 0 0 auto;
    min-height: 32px;
    padding: 5px 10px;
    display: inline-flex;
    font-size: 0.78rem;
  }

  .public-shell > .workflow-header .workflow-header__textlink--soon {
    display: none;
  }

  .public-shell > .workflow-header .workflow-header__textlink--secondary {
    display: none;
  }

  .public-shell > .workflow-header .workflow-header__cta {
    flex: 0 0 auto;
    min-height: 34px;
    padding: 7px 14px;
    display: inline-flex;
    font-size: 0.82rem;
  }

  .landing-page {
    padding-inline: max(var(--space-5), env(safe-area-inset-left), env(safe-area-inset-right));
  }

  .landing-hero {
    padding: 94px var(--space-5) var(--space-6);
    border-radius: 22px;
  }

  .landing-hero__copy {
    gap: var(--space-3);
  }

  .landing-hero__title {
    font-size: clamp(2.35rem, 12vw, 3.05rem);
  }

  .landing-hero__actions,
  .landing-hero__action {
    width: 100%;
  }

  .landing-hero__metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }

  .landing-hero__metrics div {
    padding: 10px;
    border-radius: 14px;
  }

  .landing-hero__metrics dd {
    font-size: 0.72rem;
  }

  .landing-visual {
    display: none;
  }

  .landing-feature-grid,
  .landing-decision,
  .landing-decision-grid,
  .landing-process-list {
    grid-template-columns: 1fr;
  }

  .landing-feature,
  .landing-decision-card,
  .landing-feature--wide {
    min-height: 0;
  }

  .landing-visual__workspace {
    width: 100%;
    border-radius: 14px;
  }

  .error-page {
    padding-block: var(--space-5);
  }

  .error-page__content {
    gap: var(--space-4);
  }

  .error-page__title {
    font-size: clamp(1.4rem, 6.4vw, 2rem);
  }

  .error-page__visual {
    width: min(100%, 240px);
  }
}

.app-footer {
  flex-shrink: 0;
  min-height: 0;
  padding-block: 10px;
  padding-inline: 32px;
  border-top: 1px solid var(--color-surface-card-border);
  background: var(--color-surface-glass);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  font-family: var(--font-sans);
  font-size: 0.74rem;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: 0;
  color: var(--color-text-tertiary);
}

.app-footer__inner {
  box-sizing: border-box;
  max-width: 1520px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(360px, auto) minmax(360px, 1fr);
  align-items: center;
  gap: var(--space-3) var(--space-7);
}

.app-footer__brand,
.app-footer__meta,
.app-footer__seller {
  min-width: 0;
}

.app-footer__brand {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-4);
}

.app-footer__copyright {
  margin: 0;
  color: inherit;
}

.app-footer__links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-1) var(--space-4);
  margin: 0;
}

.app-footer__links a {
  color: inherit;
  text-decoration: none;
}

.app-footer__links a:hover {
  color: var(--color-text-secondary);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.app-footer__menu {
  position: relative;
}

.app-footer__menu summary {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  list-style: none;
  cursor: pointer;
  color: inherit;
}

.app-footer__menu summary::-webkit-details-marker {
  display: none;
}

.app-footer__menu summary::after {
  content: "";
  width: 5px;
  height: 5px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-1px) rotate(45deg);
}

.app-footer__menu[open] summary::after {
  transform: translateY(1px) rotate(225deg);
}

.app-footer__menu summary:hover {
  color: var(--color-text-secondary);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.app-footer__menu summary:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.app-footer__menu-panel {
  position: absolute;
  right: 0;
  bottom: calc(100% + 8px);
  z-index: 20;
  display: grid;
  min-width: 158px;
  padding: 8px;
  gap: 6px;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-card);
  box-shadow: var(--shadow-floating);
}

.app-footer__menu-panel a,
.app-footer__menu-panel .app-footer__link-button {
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 6px 8px;
  border-radius: var(--radius-sm);
  text-align: left;
  color: var(--color-text-secondary);
  text-decoration: none;
}

.app-footer__menu-panel a:hover,
.app-footer__menu-panel .app-footer__link-button:hover,
.app-footer__menu-panel .app-footer__link-button:not(:disabled):hover,
.app-footer__menu-panel .app-footer__link-button:not(:disabled):active {
  background: var(--color-surface-muted);
  color: var(--color-text-primary);
  text-decoration: none;
}

.app-footer__link-button {
  appearance: none;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  line-height: inherit;
  box-shadow: none;
  transform: none;
  cursor: pointer;
  transition:
    color 0.18s ease,
    text-decoration-color 0.18s ease;
}

.app-footer__link-button:hover,
.app-footer__link-button:not(:disabled):hover,
.app-footer__link-button:not(:disabled):active {
  color: var(--color-text-secondary);
  text-decoration: underline;
  text-underline-offset: 2px;
  transform: none;
}

.app-footer__link-button:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.app-footer__support {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.app-footer__support-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 24px;
  padding: 2px 7px;
  border: 1px solid color-mix(in srgb, var(--color-text-tertiary) 28%, transparent);
  border-radius: 999px;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
  transition:
    border-color 0.18s ease,
    color 0.18s ease,
    background-color 0.18s ease;
}

.app-footer__support-link:hover {
  border-color: color-mix(in srgb, var(--color-text-secondary) 42%, transparent);
  background: color-mix(in srgb, var(--color-text-secondary) 7%, transparent);
  color: var(--color-text-secondary);
  text-decoration: none;
}

.app-footer__support-label {
  color: inherit;
}

.app-footer__support-icon {
  width: 14px;
  height: 14px;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.app-footer__support-link--telegram .app-footer__support-icon {
  fill: currentColor;
  stroke: none;
}

.app-footer__requisites {
  display: grid;
  gap: 4px;
  margin: 0;
  color: inherit;
}

.app-footer__meta {
  display: grid;
  justify-items: center;
  gap: 5px;
}

.app-footer__seller {
  justify-self: end;
  max-width: 100%;
  font-size: 0.76rem;
  line-height: 1.32;
  color: inherit;
}

.app-footer__requisite {
  display: inline-grid;
  grid-template-columns: auto minmax(0, max-content);
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.app-footer__requisite--seller {
  grid-template-columns: minmax(0, max-content);
}

.app-footer__requisite--details {
  grid-template-columns: auto minmax(0, max-content) auto max-content;
  column-gap: 6px;
}

.app-footer__requisite dt,
.app-footer__requisite dd {
  margin: 0;
}

.app-footer__requisite dd {
  color: inherit;
}

.app-footer__requisite dt {
  color: inherit;
}

.app-footer__requisite dt::after {
  content: ":";
}

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

.app-footer__requisite .sr-only::after {
  content: "";
}

.app-footer__legal-img {
  opacity: 0.66;
}

.app-footer__support {
  display: inline-flex;
}

.app-footer--app {
  padding-block: 6px;
}

.app-footer--app .app-footer__inner {
  grid-template-columns: minmax(220px, 1fr) auto;
  gap: var(--space-2) var(--space-5);
}

.app-footer--app .app-footer__meta {
  justify-self: end;
}

.app-footer--app .app-footer__links,
.app-footer--app .app-footer__seller {
  display: none;
}

.app-footer__version {
  margin: 0;
  color: inherit;
  opacity: 0.92;
  font: inherit;
  font-variant-numeric: tabular-nums;
}

.legal-page {
  min-height: 100dvh;
  margin: 0;
  color: var(--color-text-primary);
  font-family: var(--font-sans);
}

.legal-header__brand {
  color: inherit;
  text-decoration: none;
}

.legal-document {
  box-sizing: border-box;
  width: min(840px, calc(100% - 32px));
  margin: clamp(24px, 5vw, 56px) auto;
  padding: clamp(28px, 5vw, 56px);
}

.legal-document__back {
  display: inline-flex;
  margin-bottom: var(--space-6);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  font-weight: 700;
  text-decoration: none;
}

.legal-document__back:hover {
  color: var(--color-text-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.legal-document h1 {
  margin: 0 0 var(--space-4);
  color: var(--color-text-primary);
  font-size: clamp(2rem, 5vw, 3.2rem);
  line-height: var(--line-height-tight);
  letter-spacing: 0;
}

.legal-document h2 {
  margin: var(--space-7) 0 var(--space-3);
  color: var(--color-text-primary);
  font-size: var(--font-size-title-sm);
  line-height: var(--line-height-tight);
  letter-spacing: 0;
}

.legal-document h3 {
  margin: var(--space-5) 0 var(--space-2);
  color: var(--color-text-primary);
  font-size: var(--font-size-body-lg);
  line-height: var(--line-height-tight);
  letter-spacing: 0;
}

.legal-document p {
  margin: 0 0 var(--space-3);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}

.legal-document ul,
.legal-document ol {
  margin: 0 0 var(--space-4);
  padding-left: 1.5rem;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}

.legal-document li + li {
  margin-top: var(--space-1);
}

.legal-document table {
  width: 100%;
  margin: 0 0 var(--space-5);
  border-collapse: collapse;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: var(--line-height-body);
}

.legal-document th,
.legal-document td {
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-soft);
  text-align: left;
  vertical-align: top;
}

.legal-document th {
  color: var(--color-text-primary);
  font-weight: 700;
}

.legal-img {
  display: inline-block;
  width: var(--legal-img-width);
  max-width: min(100%, var(--legal-img-width));
  height: 1.08em;
  vertical-align: -0.16em;
  background-image: var(--legal-img-url);
  background-repeat: no-repeat;
  background-position: left center;
  background-size: contain;
  opacity: 0.63;
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
}

@media (prefers-color-scheme: dark) {
  .legal-img {
    filter: invert(1);
    opacity: 0.72;
  }
}

.app-footer .app-footer__legal-img {
  background-color: currentColor;
  background-image: none;
  mask-image: var(--legal-img-url);
  mask-repeat: no-repeat;
  mask-position: left center;
  mask-size: contain;
  -webkit-mask-image: var(--legal-img-url);
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: left center;
  -webkit-mask-size: contain;
  opacity: 1;
}

@media (prefers-color-scheme: dark) {
  .app-footer .app-footer__legal-img {
    filter: none;
    opacity: 1;
  }
}

.legal-document blockquote {
  margin: 0 0 var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-left: 3px solid var(--color-accent);
  color: var(--color-text-secondary);
  background: var(--color-surface-inset);
}

.legal-document blockquote p {
  margin: 0;
}

.legal-document hr {
  margin: var(--space-6) 0;
  border: 0;
  border-top: 1px solid var(--color-border-soft);
}

.content-page {
  display: block;
  min-height: 100dvh;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.16), transparent 260px),
    linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
    linear-gradient(180deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
    linear-gradient(180deg, var(--color-bg-top) 0%, var(--color-bg-bottom) 100%);
  background-size: auto, 56px 56px, 56px 56px, auto;
}

.content-page .workflow-header {
  position: sticky;
  top: 0;
  z-index: 120;
  background:
    linear-gradient(180deg, var(--workflow-masthead-bg), var(--workflow-masthead-bg-bottom)),
    var(--color-surface-glass);
  backdrop-filter: blur(24px) saturate(170%);
  -webkit-backdrop-filter: blur(24px) saturate(170%);
}

.content-page .workflow-header__masthead {
  padding-block: 13px;
}

.content-page .workflow-header__textlink {
  background: rgba(255, 255, 255, 0.58);
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
}

.content-document {
  padding-block: 56px 72px;
}

.content-document--article {
  padding-inline: 0;
}

.content-document--questions,
.content-document:has(.questions-list) {
  width: min(100%, 1280px);
  display: grid;
  grid-template-columns: minmax(260px, 360px) minmax(0, 1fr);
  gap: clamp(32px, 6vw, 84px);
  align-items: start;
}

.content-hero {
  display: grid;
  gap: var(--space-3);
  max-width: 860px;
  margin-bottom: var(--space-8);
}

.content-document--questions .content-hero,
.content-document:has(.questions-list) .content-hero {
  position: sticky;
  top: 116px;
  max-width: 360px;
  margin: 0;
  padding-top: var(--space-1);
}

.content-document--questions .content-hero::after,
.content-document:has(.questions-list) .content-hero::after {
  content: "";
  width: 68px;
  height: 3px;
  margin-top: var(--space-2);
  border-radius: var(--radius-pill);
  background: linear-gradient(90deg, var(--color-accent), var(--color-success));
}

.content-document--questions .site-title,
.content-document:has(.questions-list) .site-title {
  font-size: 3.2rem;
  line-height: 1.04;
}

.content-document--questions .site-lead,
.content-document:has(.questions-list) .site-lead {
  max-width: 340px;
  font-size: 1.08rem;
  line-height: 1.58;
}

.questions-list {
  display: grid;
  gap: var(--space-3);
  max-width: none;
  counter-reset: question-card;
}

.question-card {
  position: relative;
  min-height: 126px;
  display: grid;
  gap: var(--space-2);
  overflow: hidden;
  padding: 22px 24px 22px 78px;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-xs);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.42)),
    var(--color-surface-card);
  box-shadow:
    0 18px 42px rgba(28, 43, 56, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.82);
  counter-increment: question-card;
}

.question-card::before {
  content: counter(question-card, decimal-leading-zero);
  position: absolute;
  top: 22px;
  left: 22px;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: var(--radius-pill);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
  font-size: var(--font-size-caption);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.question-card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

.question-card h2 {
  position: relative;
  z-index: 1;
  margin: 0;
  font-size: 1.08rem;
  line-height: 1.24;
  letter-spacing: 0;
}

.question-card p {
  position: relative;
  z-index: 1;
  max-width: 74ch;
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 0.96rem;
  line-height: 1.58;
}

@media (prefers-color-scheme: dark) {
  .content-page {
    background:
      linear-gradient(180deg, rgba(235, 235, 245, 0.045), transparent 270px),
      linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
      linear-gradient(180deg, transparent 0, transparent calc(100% - 1px), var(--color-bg-grid) calc(100% - 1px)),
      linear-gradient(180deg, var(--color-bg-top) 0%, var(--color-bg-bottom) 100%);
  }

  .content-page .workflow-header__textlink {
    background: rgba(30, 30, 32, 0.58);
  }

  .question-card {
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.028)),
      rgba(28, 28, 30, 0.84);
    box-shadow:
      0 20px 46px rgba(0, 0, 0, 0.28),
      inset 0 1px 0 rgba(255, 255, 255, 0.085);
  }

  .question-card::after {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.07);
  }
}

@media (max-width: 980px) {
  .content-document--questions,
  .content-document:has(.questions-list) {
    width: min(100%, 760px);
    grid-template-columns: 1fr;
    gap: var(--space-7);
  }

  .content-document--questions .content-hero,
  .content-document:has(.questions-list) .content-hero {
    position: static;
    max-width: 680px;
  }

  .content-document--questions .site-lead,
  .content-document:has(.questions-list) .site-lead {
    max-width: 620px;
  }
}

@media (max-width: 640px) {
  .content-page .workflow-header__masthead {
    padding-block: 10px;
  }

  .content-document {
    padding-block: 34px 52px;
  }

  .content-document--questions .site-title,
  .content-document:has(.questions-list) .site-title {
    font-size: 2.35rem;
  }

  .content-document--questions .site-lead,
  .content-document:has(.questions-list) .site-lead {
    font-size: 1rem;
  }

  .question-card {
    min-height: 0;
    padding: 18px 18px 18px 68px;
  }

  .question-card::before {
    top: 18px;
    left: 18px;
    width: 34px;
    height: 34px;
  }
}

.lessons-grid {
  display: grid;
  grid-template-columns: minmax(0, 760px);
  gap: var(--space-3);
}

.lesson-card {
  min-width: 0;
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
}

.lesson-card__image-link {
  display: block;
  min-height: 156px;
  aspect-ratio: 1.35;
  overflow: hidden;
  background: var(--color-surface-inset);
}

.lesson-card__image-link .lesson-media {
  height: 100%;
  min-height: 100%;
}

.lesson-card img,
.lesson-media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.lesson-media {
  width: 100%;
  margin: 0;
  overflow: hidden;
  background: var(--color-surface-inset);
}

.lesson-media-placeholder {
  width: 100%;
  min-height: 100%;
  margin: 0;
  display: grid;
  place-content: center;
  gap: var(--space-2);
  padding: var(--space-5);
  color: var(--color-text-secondary);
  text-align: center;
  background: repeating-linear-gradient(
    135deg,
    var(--color-surface-inset),
    var(--color-surface-inset) 12px,
    var(--color-surface-disabled) 12px,
    var(--color-surface-disabled) 24px
  );
}

.lesson-media-placeholder span {
  font-size: var(--font-size-caption);
  text-transform: uppercase;
}

.lesson-media-placeholder code {
  color: var(--color-text-primary);
  font-size: var(--font-size-body);
  overflow-wrap: anywhere;
}

.lesson-card__body {
  display: grid;
  gap: var(--space-2);
  align-content: center;
  padding: 20px 22px;
}

.lesson-card h2 {
  margin: 0;
  font-size: 1.18rem;
  line-height: 1.25;
  letter-spacing: 0;
}

.lesson-card h2 a {
  color: var(--color-text-primary);
  text-decoration: none;
}

.lesson-card h2 a:hover {
  color: var(--color-accent-strong);
}

.lesson-card p {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 0.96rem;
  line-height: 1.5;
}

.silicone-calculator-page {
  display: grid;
  gap: var(--space-4);
  padding-block-start: 28px;
}

.silicone-calculator-hero {
  gap: var(--space-2);
  margin-bottom: 0;
}

.silicone-calculator-hero .site-lead {
  max-width: 760px;
}

.silicone-calculator-hero .site-actions {
  margin-top: var(--space-2);
}

.silicone-calculator-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(320px, 0.98fr);
  gap: var(--space-3);
  align-items: start;
}

.silicone-calculator-panel,
.silicone-calculator-results,
.silicone-calculator-copy {
  display: grid;
  gap: var(--space-2);
  padding: clamp(16px, 2vw, 22px);
  border-radius: var(--radius-xs);
}

.silicone-calculator-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-2);
}

.silicone-result-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-2);
}

.silicone-calculator-title-row {
  display: flex;
  gap: var(--space-2);
  align-items: center;
  justify-content: space-between;
}

.silicone-calculator-title-row .button--sm {
  min-height: 34px;
  padding-inline: 12px;
}

.silicone-calculator-panel .input-field,
.silicone-calculator-results .input-field {
  gap: 6px;
}

.silicone-calculator-panel .input-field input[type="number"],
.silicone-calculator-results .result-output {
  min-height: 44px;
  padding-inline: 14px;
}

.silicone-calculator-results .panel__header {
  margin-bottom: var(--space-1);
}

.silicone-calculator-formula {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-inset);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.45;
  font-variant-numeric: tabular-nums;
}

.silicone-volume-table {
  display: grid;
  gap: var(--space-2);
}

.silicone-volume-table h3 {
  margin: 0;
  font-size: var(--font-size-title-sm);
  line-height: 1.25;
  letter-spacing: 0;
}

.silicone-volume-table table {
  width: 100%;
  overflow: hidden;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  border-spacing: 0;
  font-size: var(--font-size-body-sm);
  font-variant-numeric: tabular-nums;
}

.silicone-volume-table th,
.silicone-volume-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--color-border-soft);
  text-align: left;
}

.silicone-volume-table th {
  color: var(--color-text-secondary);
  background: var(--color-surface-inset);
  font-weight: 700;
}

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

.silicone-calculator-copy {
  max-width: none;
  padding-block: 22px;
}

.silicone-calculator-copy .lesson-article__body {
  max-width: 880px;
}

@media (min-width: 1500px) {
  .silicone-calculator-fields {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .silicone-calculator-panel,
  .silicone-calculator-results {
    align-content: start;
  }
}

@media (max-width: 720px) {
  .lesson-card {
    grid-template-columns: 1fr;
  }

  .lesson-card__image-link {
    min-height: 0;
    aspect-ratio: 16 / 9;
  }

  .silicone-calculator-page {
    gap: var(--space-4);
    padding-block-start: 28px;
  }

  .silicone-calculator-hero .site-title {
    font-size: 2rem;
    line-height: 1.08;
  }

  .silicone-calculator-hero .site-lead {
    font-size: 1rem;
    line-height: 1.45;
  }

  .silicone-calculator-page .site-actions {
    width: auto;
    gap: var(--space-2);
  }

  .silicone-calculator-page .site-actions > a {
    width: auto;
    min-height: 42px;
    padding-inline: 16px;
  }

  .silicone-calculator-layout {
    grid-template-columns: 1fr;
  }

  .silicone-calculator-results {
    order: -1;
  }

  .silicone-calculator-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .silicone-result-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .silicone-result-grid .input-field {
    grid-column: auto;
  }

  .silicone-calculator-fields .input-field:nth-child(3),
  .silicone-calculator-fields .input-field:nth-child(4) {
    grid-column: span 2;
  }

  .silicone-result-grid .result-output {
    min-height: 40px;
    padding-inline: 10px;
    font-size: 0.92rem;
  }

  .silicone-volume-table {
    display: none;
  }

}

@media (max-width: 520px) {
  .silicone-calculator-page .site-actions > a {
    width: 100%;
  }

  .silicone-calculator-page .site-actions > .button--secondary {
    width: auto;
    min-height: auto;
    padding: 2px 0;
    border-color: transparent;
    background: transparent;
    color: var(--color-accent-strong);
    box-shadow: none;
  }

  .silicone-calculator-fields,
  .silicone-result-grid {
    grid-template-columns: 1fr;
  }

  .silicone-calculator-title-row {
    align-items: start;
  }

  .silicone-calculator-fields .input-field:nth-child(3),
  .silicone-calculator-fields .input-field:nth-child(4) {
    grid-column: auto;
  }
}

.lesson-article {
  display: grid;
  gap: var(--space-4);
  padding: clamp(22px, 4vw, 42px);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
}

.content-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  color: var(--color-text-tertiary);
  font-size: var(--font-size-body-sm);
  line-height: 1.4;
}

.content-breadcrumbs a {
  color: inherit;
  text-decoration: none;
}

.content-breadcrumbs a:hover {
  color: var(--color-text-primary);
}

.content-breadcrumbs__current {
  color: var(--color-text-secondary);
}

.lesson-article > .lesson-media {
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-xs);
}

.lesson-article > .lesson-media img {
  object-fit: contain;
}

.lesson-article__body .lesson-media,
.lesson-article__body .lesson-media-placeholder {
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-xs);
}

.lesson-article__body {
  display: grid;
  gap: var(--space-4);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-lg);
  line-height: 1.68;
}

.lesson-article__body p {
  margin: 0;
}

.lesson-article__cta {
  display: flex;
  margin-top: var(--space-1);
}

.lesson-article__cta-link {
  min-height: var(--control-height-lg);
  padding-inline: 22px;
  text-decoration: none;
}

.cookie-consent {
  position: fixed;
  left: max(14px, env(safe-area-inset-left));
  right: max(14px, env(safe-area-inset-right));
  bottom: max(14px, env(safe-area-inset-bottom));
  z-index: 620;
  width: min(980px, calc(100% - 28px));
  margin-inline: auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  padding: 16px;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-floating);
}

.cookie-consent__content {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.cookie-consent__title {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 0.98rem;
  line-height: 1.25;
  letter-spacing: 0;
}

.cookie-consent__text {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 0.82rem;
  line-height: 1.42;
}

.cookie-consent__policy {
  width: max-content;
  max-width: 100%;
  color: var(--color-accent-strong);
  font-size: 0.8rem;
  font-weight: 700;
  text-decoration: none;
}

.cookie-consent__policy:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.cookie-consent__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(132px, 1fr));
  gap: 8px;
  min-width: min(330px, 100%);
}

.cookie-consent__choice.button--primary,
.cookie-consent__choice.button--secondary {
  min-height: var(--control-height-md);
  padding: 8px 12px;
  border-color: rgba(10, 88, 180, 0.34);
  background: var(--color-surface-card);
  color: var(--color-accent-strong);
  box-shadow: var(--shadow-interactive);
}

#cookie-consent-accept.cookie-consent__choice {
  border-color: rgba(10, 88, 180, 0.42);
  background: linear-gradient(180deg, #4fb2ff 0%, #0a84ff 100%);
  color: var(--color-text-inverse);
  box-shadow: 0 10px 20px rgba(10, 84, 170, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.34);
}

.cookie-consent__settings {
  grid-column: 1 / -1;
  min-height: 38px;
  padding: 7px 12px;
  font-size: 0.82rem;
}

html.cookie-settings-open {
  overflow: hidden;
}

html.account-consent-open {
  overflow: hidden;
}

.account-consent {
  position: fixed;
  inset: 0;
  z-index: 660;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(14px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom))
    max(14px, env(safe-area-inset-left));
}

.account-consent__backdrop {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(246, 249, 252, 0.34), rgba(17, 25, 36, 0.54)),
    rgba(15, 23, 32, 0.36);
  backdrop-filter: blur(12px) saturate(150%);
  -webkit-backdrop-filter: blur(12px) saturate(150%);
}

.account-consent__dialog {
  position: relative;
  z-index: 1;
  width: min(680px, 100%);
  max-height: min(86vh, 760px);
  max-height: min(86dvh, 760px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-floating);
}

.account-consent__head {
  display: grid;
  gap: 8px;
  padding: 22px 22px 16px;
  border-bottom: 1px solid var(--color-border-soft);
  background: var(--color-surface-glass);
}

.account-consent__eyebrow {
  margin: 0;
  color: var(--color-accent-strong);
  font-size: 0.76rem;
  font-weight: 780;
  line-height: 1.25;
  letter-spacing: 0;
  text-transform: uppercase;
}

.account-consent__title {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 1.24rem;
  font-weight: 790;
  line-height: 1.18;
  letter-spacing: 0;
}

.account-consent__description {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 0.9rem;
  line-height: 1.48;
}

.account-consent__options {
  display: grid;
  gap: 10px;
  min-height: 0;
  overflow: auto;
  padding: 16px 18px 6px;
}

.account-consent__option {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 12px;
  align-items: flex-start;
  padding: 14px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-md);
  background: var(--color-surface-card);
  color: var(--color-text-primary);
}

.account-consent__option--optional {
  border-style: dashed;
}

.account-consent__option input {
  width: 18px;
  height: 18px;
  margin: 2px 0 0;
  accent-color: var(--color-accent-strong);
}

.account-consent__option strong {
  display: block;
  font-size: 0.95rem;
  line-height: 1.32;
}

.account-consent__option small {
  display: block;
  margin-top: 4px;
  color: var(--color-text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.account-consent__option a {
  color: var(--color-accent-strong);
  font-weight: 720;
  text-decoration: none;
}

.account-consent__option a:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.account-consent__message {
  min-height: 20px;
  margin: 8px 22px 0;
  color: var(--color-text-secondary);
  font-size: 0.84rem;
  line-height: 1.4;
}

.account-consent__message.error {
  color: var(--color-danger);
}

.account-consent__message.ok {
  color: var(--color-success);
}

.account-consent__actions {
  display: flex;
  justify-content: flex-end;
  padding: 14px 22px 20px;
}

.account-consent__actions .button--primary {
  min-width: 210px;
  min-height: var(--control-height-lg);
}

.cookie-settings {
  position: fixed;
  inset: 0;
  z-index: 640;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom))
    max(12px, env(safe-area-inset-left));
}

.cookie-settings__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(12, 20, 28, 0.58);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  cursor: pointer;
}

.cookie-settings__dialog {
  position: relative;
  z-index: 1;
  width: min(640px, 100%);
  max-height: min(84vh, 720px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--color-surface-card-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-floating);
}

.cookie-settings__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 18px 14px;
  border-bottom: 1px solid var(--color-border-soft);
  background: var(--color-surface-glass);
}

.cookie-settings__title {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 1.08rem;
  line-height: 1.25;
  letter-spacing: 0;
}

.cookie-settings__description {
  margin: 5px 0 0;
  color: var(--color-text-secondary);
  font-size: 0.84rem;
  line-height: 1.4;
}

.cookie-settings__close {
  appearance: none;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
  color: var(--color-text-secondary);
  font-size: 1.22rem;
  line-height: 1;
  cursor: pointer;
}

.cookie-settings__options {
  display: grid;
  gap: 10px;
  padding: 14px 18px 4px;
  overflow-y: auto;
}

.cookie-settings__option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-card);
}

.cookie-settings__option strong,
.cookie-settings__option small {
  display: block;
}

.cookie-settings__option strong {
  color: var(--color-text-primary);
  font-size: 0.9rem;
  line-height: 1.25;
}

.cookie-settings__option small {
  margin-top: 3px;
  color: var(--color-text-secondary);
  font-size: 0.76rem;
  line-height: 1.36;
}

.cookie-settings__option input {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  accent-color: var(--color-accent);
}

.cookie-settings__option--locked {
  background: var(--color-surface-inset);
}

.cookie-settings__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px 18px 18px;
}

.cookie-settings__actions button {
  min-height: 42px;
  padding: 8px 14px;
}

@media (max-width: 1280px) {
  .app-footer {
    padding-inline: 22px;
  }
}

@media (max-width: 1180px) {
  .app-footer {
    padding-inline: 18px;
  }
}

@media (max-width: 980px) {
  :root {
    --app-footer-height: 128px;
  }

  .app-footer {
    padding-inline: var(--space-5);
  }

  .app-footer__inner {
    grid-template-columns: 1fr;
  }

  .app-footer__brand,
  .app-footer__links,
  .app-footer__meta,
  .app-footer__seller {
    width: 100%;
    justify-content: flex-start;
    justify-items: start;
    justify-self: start;
  }

  .app-footer__meta {
    gap: 6px;
  }

  .app-footer__support {
    white-space: normal;
  }

  .app-footer--app .app-footer__inner {
    grid-template-columns: 1fr;
  }

  .app-footer--app .app-footer__meta {
    justify-self: start;
    justify-items: start;
  }

  .cookie-consent {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .cookie-consent__actions {
    min-width: 0;
  }
}

@media (max-width: 560px) {
  .cookie-consent {
    left: 10px;
    right: 10px;
    bottom: 10px;
    width: calc(100% - 20px);
    padding: 13px;
  }

  .cookie-consent__actions {
    grid-template-columns: 1fr;
  }

  .cookie-consent__settings {
    grid-column: auto;
  }

  .cookie-settings__actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .account-consent {
    align-items: stretch;
  }

  .account-consent__dialog {
    max-height: none;
  }

  .account-consent__head {
    padding: 18px 16px 14px;
  }

  .account-consent__title {
    font-size: 1.08rem;
  }

  .account-consent__options {
    padding-inline: 12px;
  }

  .account-consent__option {
    padding: 12px;
  }

  .account-consent__message {
    margin-inline: 16px;
  }

  .account-consent__actions {
    padding: 12px 16px 16px;
  }

  .account-consent__actions .button--primary {
    width: 100%;
  }
}

.auth-landing {
  position: relative;
  max-width: 460px;
  margin: var(--space-8) auto;
  padding: var(--space-7);
  border-color: rgba(255, 255, 255, 0.72);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.58)),
    var(--color-surface-glass);
  box-shadow:
    0 24px 58px rgba(24, 38, 50, 0.14),
    inset 0 1px 0 rgba(255, 255, 255, 0.86);
}

.auth-landing:has(.auth-landing__access-cta) {
  max-width: 500px;
  display: block;
  padding: var(--space-6);
}

.auth-landing:has(.auth-landing__access-cta) .auth-landing__lead {
  margin-bottom: var(--space-5);
}

.auth-landing__title {
  margin: 0 0 var(--space-3);
  font-size: clamp(1.8rem, 2.7vw, 2.2rem);
  line-height: 1.12;
}

.auth-landing__lead {
  margin: 0 0 var(--space-5);
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.48;
}

.auth-landing__legal {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.55;
}

.auth-landing__legal a {
  color: var(--color-primary);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.auth-landing__consent {
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: var(--space-3);
  align-items: start;
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--font-size-body-sm);
  line-height: 1.45;
}

.auth-landing__consent input {
  width: 16px;
  height: 16px;
  margin: 2px 0 0;
  accent-color: var(--color-primary);
}

.auth-landing__consent a {
  color: var(--color-primary);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.auth-landing__form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  align-self: start;
}

.auth-landing__field {
  width: 100%;
}

.auth-landing__field input {
  min-height: 46px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.74);
}

.auth-landing__submit {
  align-self: flex-start;
  min-height: 44px;
  border-radius: var(--radius-pill);
  box-shadow:
    0 14px 28px rgba(10, 132, 255, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.28);
}

.auth-landing__message {
  margin: var(--space-4) 0 0;
  font-size: var(--font-size-body-sm);
  color: var(--color-text-secondary);
}

.auth-landing__message.error {
  color: var(--color-danger);
}

.auth-landing__message.ok {
  color: var(--color-success);
}

.auth-landing__access-cta {
  display: grid;
  gap: var(--space-3);
  margin-top: var(--space-5);
  padding-top: var(--space-4);
  border-top: 1px solid rgba(235, 235, 245, 0.1);
  background: transparent;
}

.auth-landing__access-copy {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  align-items: baseline;
}

.auth-landing__access-kicker {
  margin: 0;
  color: var(--color-accent-strong);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.auth-landing__access-copy h3 {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 0.98rem;
  line-height: 1.3;
  letter-spacing: 0;
}

.auth-landing__access-copy p:not(.auth-landing__access-kicker) {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 0.9rem;
  line-height: 1.45;
}

.auth-landing__support-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-2);
  align-items: stretch;
}

.auth-landing__support-button {
  min-height: 42px;
  padding-inline: 12px;
  border-radius: var(--radius-pill);
  justify-content: center;
  font-size: 0.88rem;
  white-space: nowrap;
}

.auth-landing__support-button.button--primary {
  box-shadow:
    0 12px 24px rgba(10, 132, 255, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.22);
}

.auth-landing__support-button.button--secondary {
  border-color: rgba(235, 235, 245, 0.18);
  background: rgba(255, 255, 255, 0.08);
  color: var(--color-text-secondary);
  transition:
    background-color 0.18s ease,
    border-color 0.18s ease,
    color 0.18s ease,
    transform 0.18s ease;
}

.auth-landing__support-button.button--secondary:not(:disabled):hover {
  border-color: rgba(10, 132, 255, 0.24);
  background: rgba(10, 132, 255, 0.1);
  color: var(--color-accent-strong);
}

.auth-landing__snackbar {
  position: absolute;
  left: 50%;
  bottom: var(--space-4);
  z-index: 5;
  max-width: calc(100% - var(--space-6) * 2);
  padding: 10px 14px;
  border: 1px solid rgba(60, 60, 67, 0.18);
  border-radius: var(--radius-pill);
  background: rgba(29, 29, 31, 0.92);
  color: var(--color-text-inverse);
  font-size: var(--font-size-body-sm);
  font-weight: 750;
  line-height: 1.2;
  text-align: center;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 8px);
  transition:
    opacity 0.18s ease,
    transform 0.18s ease;
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.26);
}

.auth-landing__snackbar--visible {
  opacity: 1;
  transform: translate(-50%, 0);
}

.auth-landing__snackbar--error {
  background: rgba(182, 52, 46, 0.94);
}

@media (prefers-color-scheme: dark) {
  .login-shell {
    background:
      radial-gradient(circle at 50% 18%, rgba(10, 132, 255, 0.14), transparent 34%),
      linear-gradient(180deg, rgba(22, 22, 24, 0), rgba(10, 132, 255, 0.05));
  }

  .login-shell > .workflow-header {
    background: linear-gradient(180deg, rgba(22, 22, 24, 0.86), rgba(22, 22, 24, 0.58));
  }

  .auth-landing {
    border-color: rgba(235, 235, 245, 0.12);
    background:
      linear-gradient(180deg, rgba(44, 44, 46, 0.72), rgba(28, 28, 30, 0.54)),
      rgba(22, 22, 24, 0.72);
    box-shadow:
      0 24px 58px rgba(0, 0, 0, 0.36),
      inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }

  .login-status-ribbon {
    box-shadow:
      0 18px 44px rgba(0, 0, 0, 0.26),
      0 3px 0 rgba(123, 42, 0, 0.18),
      inset 0 1px 0 rgba(255, 255, 255, 0.14),
      inset 0 -1px 0 rgba(128, 30, 0, 0.24);
  }

  .auth-landing__lead,
  .auth-landing__message {
    color: rgba(235, 235, 245, 0.68);
  }

  .auth-landing__field input {
    border-color: rgba(235, 235, 245, 0.14);
    background: rgba(28, 28, 30, 0.76);
    color: var(--color-text-primary);
  }

  .auth-landing__field input:focus {
    border-color: rgba(10, 132, 255, 0.52);
    background: rgba(28, 28, 30, 0.92);
  }

  .auth-landing__submit {
    border-color: rgba(10, 132, 255, 0.42);
    background:
      linear-gradient(180deg, rgba(10, 132, 255, 0.46), rgba(10, 132, 255, 0.3)),
      rgba(22, 30, 42, 0.92);
    box-shadow:
      0 14px 28px rgba(10, 132, 255, 0.16),
      inset 0 1px 0 rgba(255, 255, 255, 0.12);
  }

  .auth-landing__access-cta {
    border-top-color: rgba(235, 235, 245, 0.12);
    background: transparent;
  }

  .auth-landing__support-button.button--secondary {
    border-color: rgba(235, 235, 245, 0.14);
    background: rgba(44, 44, 46, 0.62);
    color: rgba(235, 235, 245, 0.84);
  }
}

@media (max-width: 560px) {
  .page--login {
    justify-content: flex-start;
    padding-top: var(--space-4);
    padding-bottom: var(--space-5);
  }

  .login-status-ribbon {
    top: 86px;
    right: -126px;
    width: 390px;
  }

  .login-status-ribbon span {
    padding-block: 11px;
    font-size: 0.88rem;
  }

  .auth-landing {
    margin: var(--space-4) auto;
    padding: var(--space-5);
  }

  .auth-landing:has(.auth-landing__access-cta) {
    display: block;
    max-width: 460px;
  }

  .auth-landing:has(.auth-landing__access-cta) .auth-landing__lead {
    margin-bottom: var(--space-5);
  }

  .auth-landing__access-cta {
    margin-top: var(--space-6);
    padding-top: var(--space-4);
  }

  .auth-landing__support-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .auth-landing__support-button {
    width: 100%;
  }

  .auth-landing__snackbar {
    max-width: calc(100% - var(--space-4) * 2);
  }
}

.my-models-island {
  padding: var(--space-4);
  background: var(--color-surface-card-strong);
}

.my-models-compact {
  min-width: 0;
}

.my-models-open-btn {
  width: 100%;
  min-width: 0;
  min-height: 68px;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 30px;
  align-items: center;
  gap: var(--space-3);
  padding: 11px 12px;
  border-radius: var(--radius-md);
  border-color: rgba(10, 132, 255, 0.2);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.66), rgba(255, 255, 255, 0.34)),
    var(--color-surface-card);
  box-shadow:
    0 10px 24px rgba(18, 34, 48, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.72);
  text-align: left;
}

.my-models-open-btn:hover {
  border-color: rgba(10, 132, 255, 0.38);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.78), rgba(255, 255, 255, 0.42)),
    var(--color-surface-card-strong);
  box-shadow:
    0 14px 30px rgba(18, 34, 48, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.82);
}

.my-models-open-btn:focus-visible {
  outline: 2px solid rgba(10, 132, 255, 0.72);
  outline-offset: 3px;
}

.my-models-open-btn__icon,
.my-models-open-btn__arrow {
  display: inline-grid;
  place-items: center;
  border-radius: var(--radius-sm);
  color: var(--color-accent-strong);
  background: var(--color-accent-soft);
}

.my-models-open-btn__icon {
  width: 42px;
  height: 42px;
}

.my-models-open-btn__icon svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.my-models-open-btn__content {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.my-models-open-btn__label,
.my-models-open-btn__meta {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.my-models-open-btn__label {
  color: var(--color-text-primary);
  font-size: var(--font-size-body);
  font-weight: 800;
  line-height: 1.2;
}

.my-models-open-btn__meta {
  color: var(--color-text-tertiary);
  font-size: var(--font-size-caption);
  font-weight: 700;
  line-height: 1.2;
}

.my-models-open-btn__arrow {
  justify-self: end;
  width: 30px;
  height: 30px;
  background: var(--color-surface-inset);
  color: var(--color-text-tertiary);
  transition:
    color 0.15s ease,
    transform 0.15s ease;
}

.my-models-open-btn__arrow svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.my-models-open-btn:hover .my-models-open-btn__arrow {
  color: var(--color-accent-strong);
  transform: translateX(2px);
}

@media (prefers-color-scheme: dark) {
  .my-models-open-btn {
    border-color: rgba(100, 169, 255, 0.22);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.03)),
      rgba(30, 32, 36, 0.78);
    box-shadow:
      0 12px 28px rgba(0, 0, 0, 0.24),
      inset 0 1px 0 rgba(255, 255, 255, 0.09);
  }

  .my-models-open-btn:hover {
    border-color: rgba(100, 169, 255, 0.38);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.05)),
      rgba(38, 41, 47, 0.86);
    box-shadow:
      0 16px 34px rgba(0, 0, 0, 0.34),
      inset 0 1px 0 rgba(255, 255, 255, 0.13);
  }

  .my-models-open-btn__arrow {
    background: rgba(235, 235, 245, 0.07);
  }
}

.my-models-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.my-models-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  max-height: min(34vh, 320px);
  overflow-y: auto;
  padding-right: 4px;
  scrollbar-width: thin;
  scrollbar-color: rgba(100, 122, 158, 0.28) transparent;
}

.my-models-list::-webkit-scrollbar {
  width: 6px;
}

.my-models-list::-webkit-scrollbar-thumb {
  border-radius: var(--radius-pill);
  background: rgba(100, 122, 158, 0.28);
}

.my-models-list__item {
  margin: 0;
}

.my-models-list__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  min-height: 74px;
  min-width: 0;
  padding: 8px;
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: var(--radius-md);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.58), rgba(255, 255, 255, 0.3)),
    var(--color-surface-card);
  box-shadow:
    0 10px 26px rgba(18, 34, 48, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.72);
  transition:
    border-color 0.15s ease,
    background 0.15s ease,
    box-shadow 0.15s ease;
}

.my-models-list__row--with-delete {
  grid-template-columns: minmax(0, 1fr) 40px;
}

.my-models-list__row:hover {
  border-color: rgba(10, 132, 255, 0.26);
  background:
    linear-gradient(180deg, rgba(10, 132, 255, 0.12), rgba(10, 132, 255, 0.06)),
    var(--color-surface-card);
  box-shadow:
    0 12px 28px rgba(18, 34, 48, 0.11),
    inset 0 1px 0 rgba(255, 255, 255, 0.74);
}

.my-models-list__row:focus-within {
  border-color: rgba(10, 132, 255, 0.3);
  box-shadow:
    var(--focus-ring),
    0 10px 26px rgba(18, 34, 48, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

.my-models-list__btn {
  flex: 1;
  width: 100%;
  min-width: 0;
  text-align: left;
  min-height: 56px;
  padding: 6px 8px;
  border: 0;
  border-radius: var(--radius-xs);
  background: transparent;
  color: var(--color-text-primary);
  font: inherit;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  box-shadow: none;
  transition:
    color 0.15s ease;
}

.my-models-list__btn:hover {
  background: transparent;
  color: var(--color-text-primary);
}

.my-models-list__btn:active {
  background: transparent;
}

.my-models-list__btn:focus-visible {
  outline: none;
  box-shadow: none;
}

.my-models-list__thumb {
  width: 52px;
  height: 52px;
  border-radius: 15px;
  border: 1px solid rgba(60, 60, 67, 0.18);
  object-fit: cover;
  background: var(--color-surface-inset);
  flex: 0 0 auto;
  box-shadow:
    0 6px 12px rgba(18, 34, 48, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.86);
}

.my-models-list__text {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.my-models-list__btn--no-thumb .my-models-list__text {
  width: 100%;
}

.my-models-list__delete {
  flex: 0 0 auto;
  align-self: center;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(255, 59, 48, 0.18);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.32), rgba(255, 255, 255, 0.08)),
    var(--color-danger-soft);
  color: var(--color-danger);
  cursor: pointer;
  box-shadow:
    0 8px 18px rgba(168, 38, 31, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.58);
  transition:
    border-color 0.18s ease,
    background 0.18s ease,
    box-shadow 0.18s ease,
    transform 0.12s ease;
}

.my-models-list__delete:hover {
  border-color: rgba(255, 59, 48, 0.34);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.44), rgba(255, 255, 255, 0.12)),
    rgba(255, 59, 48, 0.18);
  box-shadow:
    0 10px 22px rgba(168, 38, 31, 0.16),
    inset 0 1px 0 rgba(255, 255, 255, 0.66);
  transform: translateY(-1px);
}

.my-models-list__delete:active {
  transform: scale(0.96);
}

.my-models-list__delete:focus-visible {
  outline: 2px solid var(--color-danger);
  outline-offset: 2px;
}

.my-models-list__trash-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.12));
}

.my-models-list__name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
  font-size: 0.95rem;
  line-height: 1.25;
}

.my-models-list__meta {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--font-size-caption);
  color: var(--color-text-tertiary);
}

.my-models-list__empty {
  margin: 0;
  padding: var(--space-3);
  color: var(--color-text-tertiary);
  font-size: var(--font-size-body-sm);
}

/* Полноэкранный оверлей выбора «Недавние STL» */
html.my-models-overlay-open,
html.build-history-overlay-open {
  overflow: hidden;
}

html.model-checks-overlay-open {
  overflow: hidden;
}

html.paywall-modal-open {
  overflow: hidden;
}

.paywall-modal {
  position: fixed;
  inset: 0;
  z-index: 520;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom))
    max(20px, env(safe-area-inset-left));
}

.paywall-modal.hidden {
  display: none;
}

.paywall-modal__backdrop {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 16% 0%, rgba(18, 95, 168, 0.18), transparent 28%),
    radial-gradient(circle at 76% 26%, rgba(35, 125, 220, 0.12), transparent 24%),
    linear-gradient(180deg, #07101b 0%, #070b12 100%);
  backdrop-filter: blur(10px) saturate(130%);
  -webkit-backdrop-filter: blur(10px) saturate(130%);
  cursor: pointer;
}

.paywall-modal__dialog {
  position: relative;
  z-index: 1;
  width: min(780px, 100%);
  max-height: min(90vh, 820px);
  max-height: min(90dvh, 820px);
  overflow: auto;
  display: grid;
  gap: 24px;
  padding: 32px;
  border: 1px solid rgba(255, 190, 103, 0.22);
  border-radius: 20px;
  background:
    linear-gradient(180deg, rgba(24, 33, 45, 0.96), rgba(10, 15, 23, 0.98)),
    #0b1018;
  box-shadow:
    0 30px 90px rgba(0, 0, 0, 0.46),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
  scrollbar-gutter: stable;
}

.paywall-modal__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px;
  align-items: start;
  gap: 20px;
}

.paywall-modal__intro {
  min-width: 0;
}

.paywall-modal__eyebrow,
.paywall-modal__limits {
  margin: 0;
  color: #2aa0ff;
  font-size: 0.95rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.paywall-modal__title {
  margin: 12px 0 0;
  font-family: var(--font-display);
  color: #f7f9ff;
  font-size: clamp(2.35rem, 5vw, 3.35rem);
  font-weight: 880;
  line-height: var(--line-height-tight);
  letter-spacing: 0;
}

.paywall-modal__description {
  max-width: 620px;
  margin: 14px 0 0;
  color: rgba(235, 239, 247, 0.7);
  font-size: 1.08rem;
  font-weight: 520;
  line-height: 1.35;
}

.paywall-modal__close {
  appearance: none;
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  margin: -6px -6px 0 0;
  border: 1px solid rgba(235, 239, 247, 0.14);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.04);
  color: rgba(235, 239, 247, 0.76);
  font: inherit;
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
  transition:
    background 0.15s ease,
    border-color 0.15s ease,
    color 0.15s ease;
}

.paywall-modal__close:hover,
.paywall-modal__close:focus-visible {
  outline: none;
  border-color: rgba(255, 190, 103, 0.4);
  background: rgba(255, 255, 255, 0.08);
  color: #f7f9ff;
}

.notice,
.paywall-modal__notice {
  --notice-border: color-mix(in srgb, var(--color-warning) 34%, transparent);
  --notice-bg: var(--color-warning-soft);
  --notice-text: var(--color-warning);
  --notice-title: var(--color-text-primary);
  --notice-icon-border: color-mix(in srgb, var(--color-warning) 52%, transparent);
  --notice-icon-bg: var(--color-warning-soft);
  --notice-icon-text: var(--color-warning);
  --notice-shadow: var(--shadow-panel);

  width: 100%;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 16px;
  margin: 0;
  padding: 18px;
  border: 1px solid var(--notice-border);
  border-radius: 12px;
  background: var(--notice-bg);
  color: var(--notice-text);
  text-align: left;
  box-shadow: var(--notice-shadow);
}

.paywall-modal__notice {
  --notice-border: rgba(255, 190, 103, 0.24);
  --notice-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.065), rgba(255, 255, 255, 0.018)),
    rgba(255, 255, 255, 0.035);
  --notice-text: rgba(235, 239, 247, 0.76);
  --notice-title: #f7f9ff;
  --notice-icon-border: rgba(255, 159, 10, 0.52);
  --notice-icon-bg: radial-gradient(
      circle at 50% 35%,
      rgba(255, 190, 103, 0.28),
      rgba(255, 159, 10, 0.08) 64%,
      rgba(255, 159, 10, 0.02)
    ),
    rgba(255, 159, 10, 0.08);
  --notice-icon-text: #ff9f0a;
  --notice-shadow: 0 18px 34px rgba(0, 0, 0, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.07);
}

.notice__icon,
.paywall-modal__notice-icon {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border: 1px solid var(--notice-icon-border);
  border-radius: 50%;
  background: var(--notice-icon-bg);
  color: var(--notice-icon-text);
  font-size: 1.15rem;
  font-weight: 860;
  line-height: 1;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.18),
    0 8px 16px rgba(255, 159, 10, 0.1);
}

.notice__copy,
.paywall-modal__notice-copy {
  min-width: 0;
  display: grid;
  gap: 7px;
}

.notice__copy span,
.paywall-modal__notice-copy span {
  color: currentColor;
  font-size: 1rem;
  font-weight: 560;
  line-height: 1.35;
}

.notice__title,
.paywall-modal__limits {
  color: var(--notice-title);
  font-size: 1.05rem;
  font-weight: 820;
  letter-spacing: 0;
  text-transform: none;
}

.paywall-modal__limits::first-letter {
  text-transform: uppercase;
}

.paywall-modal__limits-value {
  color: #ff9f0a;
}

.paywall-modal__grid {
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 18px;
}

.paywall-modal__grid--single {
  grid-template-columns: 1fr;
}

.paywall-coming-soon {
  min-height: 0;
  display: grid;
  align-content: center;
  gap: 12px;
  padding: 22px 24px;
  border: 1px solid rgba(255, 190, 103, 0.22);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.074), rgba(255, 255, 255, 0.026)),
    rgba(255, 255, 255, 0.04);
  box-shadow:
    0 18px 34px rgba(0, 0, 0, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.paywall-coming-soon__label,
.paywall-coming-soon__title,
.paywall-coming-soon__copy {
  margin: 0;
}

.paywall-coming-soon__label {
  color: #ff9f0a;
  font-size: 0.88rem;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.paywall-coming-soon__title {
  color: #f7f9ff;
  font-family: var(--font-display);
  font-size: 1.65rem;
  font-weight: 860;
  line-height: var(--line-height-tight);
}

.paywall-coming-soon__copy {
  max-width: 560px;
  color: rgba(235, 239, 247, 0.72);
  font-size: 1rem;
  font-weight: 540;
  line-height: 1.42;
}

@media (max-width: 1200px) {
  .paywall-modal__head {
    grid-template-columns: minmax(0, 1fr) 42px;
  }

  .paywall-modal__grid {
    grid-template-columns: 1fr;
  }

  .paywall-tariff {
    min-height: 0;
  }

  .paywall-tariff__content {
    grid-template-rows: auto auto auto auto;
  }
}

@media (max-width: 860px) {
  .paywall-modal {
    padding: max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom))
      max(18px, env(safe-area-inset-left));
  }

  .paywall-tariff__footer {
    align-items: stretch;
    flex-direction: column;
  }

  .paywall-tariff__unit {
    flex: 0 1 auto;
  }

  .paywall-tariff__button {
    width: 100%;
    flex-basis: auto;
  }
}

@media (max-width: 520px) {
  .paywall-modal__dialog {
    gap: 20px;
    padding: 24px 18px;
    border-radius: 16px;
  }

  .paywall-modal__title {
    font-size: 2.15rem;
  }

  .paywall-modal__description {
    font-size: 1.05rem;
  }

  .paywall-modal__notice {
    grid-template-columns: 32px minmax(0, 1fr);
    padding: 16px;
  }

  .paywall-tariff__content {
    padding: 24px 22px 20px;
  }

  .paywall-tariff--best .paywall-tariff__content {
    padding-top: 24px;
  }

  .paywall-tariff__head {
    grid-template-columns: 58px minmax(0, 1fr);
    gap: 16px;
  }

  .paywall-tariff__icon {
    width: 56px;
    height: 56px;
  }
}

.my-models-overlay,
.build-history-overlay {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  --my-models-glass-bg: rgba(252, 252, 254, 0.72);
  --my-models-glass-border: rgba(255, 255, 255, 0.72);
  --my-models-glass-edge: rgba(255, 255, 255, 0.72);
  --my-models-glass-shadow: 0 34px 90px rgba(21, 32, 45, 0.26), 0 8px 26px rgba(21, 32, 45, 0.14),
    inset 0 1px 0 rgba(255, 255, 255, 0.82);
  --my-models-control-bg: rgba(255, 255, 255, 0.52);
  padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom))
    max(12px, env(safe-area-inset-left));
}

.my-models-overlay.hidden,
.build-history-overlay.hidden {
  display: none;
}

.my-models-overlay__backdrop,
.build-history-overlay__backdrop {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(251, 251, 253, 0.22), rgba(18, 27, 38, 0.48)),
    linear-gradient(120deg, rgba(10, 132, 255, 0.1), rgba(255, 255, 255, 0.04) 42%, rgba(29, 29, 31, 0.18)),
    rgba(16, 23, 34, 0.34);
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  cursor: pointer;
}

.my-models-overlay__dialog,
.build-history-overlay__dialog {
  position: relative;
  z-index: 1;
  width: min(640px, 100%);
  max-height: min(80vh, 760px);
  max-height: min(80dvh, 760px);
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  border-radius: 24px;
  border: 1px solid var(--my-models-glass-border);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.34), rgba(255, 255, 255, 0.08) 34%, transparent 62%),
    var(--my-models-glass-bg);
  box-shadow: var(--my-models-glass-shadow);
  backdrop-filter: blur(42px) saturate(185%) brightness(1.04);
  -webkit-backdrop-filter: blur(42px) saturate(185%) brightness(1.04);
}

.my-models-overlay__dialog::before,
.build-history-overlay__dialog::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow:
    inset 0 0 0 1px var(--my-models-glass-edge),
    inset 0 26px 44px rgba(255, 255, 255, 0.2),
    inset 0 -22px 42px rgba(10, 20, 35, 0.08);
}

.my-models-overlay__head,
.build-history-overlay__head {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 16px 16px 10px 20px;
  border-bottom: 1px solid rgba(60, 60, 67, 0.12);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0));
  flex-shrink: 0;
}

.my-models-overlay__title,
.build-history-overlay__title {
  margin: 0;
  font-size: clamp(1.1rem, 1.7vw, 1.32rem);
  font-weight: 750;
  line-height: 1.12;
  letter-spacing: 0;
  color: var(--color-text-primary);
}

.my-models-overlay__close,
.build-history-overlay__close {
  appearance: none;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.42);
  border-radius: var(--radius-pill);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.56), rgba(255, 255, 255, 0.18)),
    var(--my-models-control-bg);
  color: var(--color-text-secondary);
  cursor: pointer;
  box-shadow:
    0 10px 22px rgba(18, 34, 48, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  transition:
    background 0.15s ease,
    color 0.15s ease,
    border-color 0.15s ease,
    box-shadow 0.15s ease,
    transform 0.12s ease;
}

.my-models-overlay__close:hover,
.build-history-overlay__close:hover {
  border-color: rgba(10, 132, 255, 0.3);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.28)),
    var(--my-models-control-bg);
  color: var(--color-text-primary);
  box-shadow:
    0 12px 24px rgba(18, 34, 48, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.86);
}

.my-models-overlay__close:active,
.build-history-overlay__close:active {
  transform: scale(0.96);
}

.my-models-overlay__close:focus-visible,
.build-history-overlay__close:focus-visible {
  outline: 2px solid rgba(10, 132, 255, 0.72);
  outline-offset: 3px;
}

.my-models-overlay__close-icon,
.build-history-overlay__close-icon {
  width: 19px;
  height: 19px;
  flex-shrink: 0;
}

.build-history-overlay__dialog {
  width: min(920px, 100%);
}

.build-history-overlay__eyebrow {
  margin: 0 0 4px;
  color: var(--color-text-tertiary);
  font-size: 0.72rem;
  font-weight: 820;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
}

.build-history-overlay__actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.build-history-overlay__summary {
  display: grid;
  grid-template-columns: minmax(92px, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-width: 220px;
  max-width: min(44vw, 420px);
  margin-left: auto;
  padding: 8px 10px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: rgba(255, 255, 255, 0.08);
}

.build-history-overlay__summary.hidden {
  display: none;
}

.build-history-overlay__project-name {
  min-width: 0;
  overflow: hidden;
  color: var(--color-text-primary);
  font-size: 0.82rem;
  font-weight: 760;
  line-height: 1.1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.build-history-overlay__limit {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 9px;
  border-radius: var(--radius-pill);
  background: rgba(29, 138, 98, 0.16);
  color: var(--color-success);
  font-size: 0.72rem;
  font-weight: 820;
  line-height: 1;
  white-space: nowrap;
}

.build-history-overlay__filters {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 18px 0 18px;
}

.build-history-overlay__filters.segmented-control {
  width: max-content;
  max-width: calc(100% - 36px);
  margin: 12px 18px 0;
  padding: 4px;
  gap: 4px;
}

.build-history-filter {
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 10px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-xs);
  background: var(--color-surface-inset);
  color: var(--color-text-secondary);
  font-size: 0.74rem;
  font-weight: 760;
  line-height: 1;
  cursor: pointer;
}

.build-history-filter[data-active="true"] {
  border-color: rgba(10, 132, 255, 0.34);
  background: var(--color-accent-soft);
  color: var(--color-accent-strong);
}

.build-history-filter:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.build-history-filter span {
  min-width: 18px;
  min-height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 5px;
  border-radius: var(--radius-pill);
  background: var(--color-surface-card);
  color: currentColor;
  font-size: 0.66rem;
}

.my-models-list--overlay {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  margin: 0;
  padding: 14px 16px 16px;
  overflow-y: auto;
  gap: 8px;
  scrollbar-gutter: stable;
}

@media (prefers-color-scheme: dark) {
  .my-models-overlay,
  .build-history-overlay {
    --my-models-glass-bg: rgba(29, 31, 36, 0.68);
    --my-models-glass-border: rgba(235, 235, 245, 0.16);
    --my-models-glass-edge: rgba(255, 255, 255, 0.11);
    --my-models-glass-shadow: 0 38px 96px rgba(0, 0, 0, 0.58), 0 10px 30px rgba(0, 0, 0, 0.32),
      inset 0 1px 0 rgba(255, 255, 255, 0.12);
    --my-models-control-bg: rgba(54, 56, 62, 0.54);
  }

  .my-models-overlay__backdrop,
  .build-history-overlay__backdrop {
    background:
      linear-gradient(180deg, rgba(70, 78, 90, 0.18), rgba(6, 12, 20, 0.7)),
      linear-gradient(120deg, rgba(10, 132, 255, 0.13), rgba(235, 235, 245, 0.04) 42%, rgba(0, 0, 0, 0.28)),
      rgba(8, 14, 22, 0.56);
  }

  .my-models-overlay__dialog,
  .build-history-overlay__dialog {
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.035) 36%, transparent 66%),
      var(--my-models-glass-bg);
  }

  .my-models-overlay__dialog::before,
  .build-history-overlay__dialog::before {
    box-shadow:
      inset 0 0 0 1px var(--my-models-glass-edge),
      inset 0 24px 42px rgba(255, 255, 255, 0.045),
      inset 0 -28px 48px rgba(0, 0, 0, 0.18);
  }

  .my-models-overlay__head,
  .build-history-overlay__head {
    border-bottom-color: rgba(235, 235, 245, 0.1);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0));
  }

  .my-models-overlay__close,
  .build-history-overlay__close {
    border-color: rgba(235, 235, 245, 0.16);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.025)),
      var(--my-models-control-bg);
    box-shadow:
      0 12px 24px rgba(0, 0, 0, 0.26),
      inset 0 1px 0 rgba(255, 255, 255, 0.12);
  }

  .my-models-overlay__close:hover,
  .build-history-overlay__close:hover {
    border-color: rgba(100, 169, 255, 0.32);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.045)),
      rgba(66, 69, 76, 0.62);
    box-shadow:
      0 14px 28px rgba(0, 0, 0, 0.34),
      inset 0 1px 0 rgba(255, 255, 255, 0.16);
  }

  .my-models-list__row {
    border-color: rgba(235, 235, 245, 0.13);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.072), rgba(255, 255, 255, 0.022)),
      rgba(30, 32, 36, 0.78);
    box-shadow:
      0 12px 30px rgba(0, 0, 0, 0.24),
      inset 0 1px 0 rgba(255, 255, 255, 0.09);
  }

  .my-models-list__row:hover {
    border-color: rgba(100, 169, 255, 0.26);
    background:
      linear-gradient(180deg, rgba(100, 169, 255, 0.12), rgba(100, 169, 255, 0.055)),
      rgba(30, 32, 36, 0.78);
    box-shadow:
      0 14px 32px rgba(0, 0, 0, 0.3),
      inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }

  .my-models-list__btn:hover {
    background: transparent;
  }

  .my-models-list__thumb {
    border-color: rgba(235, 235, 245, 0.14);
    box-shadow:
      0 8px 18px rgba(0, 0, 0, 0.24),
      inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }

  .my-models-list__delete {
    border-color: rgba(255, 69, 58, 0.19);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.072), rgba(255, 255, 255, 0.022)),
      rgba(255, 69, 58, 0.12);
    box-shadow:
      0 10px 22px rgba(0, 0, 0, 0.2),
      inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }

  .my-models-list__delete:hover {
    border-color: rgba(255, 69, 58, 0.36);
    background:
      linear-gradient(180deg, rgba(255, 255, 255, 0.105), rgba(255, 255, 255, 0.032)),
      rgba(255, 69, 58, 0.17);
    box-shadow:
      0 12px 26px rgba(0, 0, 0, 0.3),
      inset 0 1px 0 rgba(255, 255, 255, 0.12);
  }
}

@media (max-width: 640px) {
  .my-models-overlay,
  .build-history-overlay {
    padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom))
      max(8px, env(safe-area-inset-left));
  }

  .my-models-overlay__dialog,
  .build-history-overlay__dialog {
    width: 100%;
    max-height: min(86vh, 760px);
    max-height: min(86dvh, 760px);
    border-radius: 24px;
  }

  .my-models-overlay__head,
  .build-history-overlay__head {
    flex-wrap: wrap;
    padding: 14px 14px 10px 16px;
  }

  .build-history-overlay__summary {
    order: 3;
    grid-template-columns: minmax(0, 1fr) auto;
    width: 100%;
    min-width: 0;
    max-width: none;
    margin-left: 0;
  }

  .my-models-overlay__close,
  .build-history-overlay__close {
    width: 40px;
    height: 40px;
  }

  .my-models-list--overlay,
  .build-history-list--overlay {
    padding: 10px;
  }

  .build-history-item {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 12px;
  }

  .build-history-item__params {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .build-history-item__actions {
    justify-content: stretch;
  }

  .build-history-item__action {
    flex: 1 1 0;
  }

  .my-models-list__row {
    min-height: 66px;
    padding: 6px;
  }

  .my-models-list__row--with-delete {
    grid-template-columns: minmax(0, 1fr) 36px;
  }

  .my-models-list__btn {
    min-height: 52px;
    padding: 5px 6px;
  }

  .my-models-list__thumb {
    width: 44px;
    height: 44px;
    border-radius: 12px;
  }
}

@media (prefers-reduced-transparency: reduce) {
  .my-models-overlay__backdrop,
  .my-models-overlay__dialog,
  .my-models-overlay__close,
  .my-models-list__btn,
  .my-models-list__delete {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .my-models-overlay__backdrop {
    background: rgba(14, 21, 29, 0.68);
  }

  .my-models-overlay__dialog {
    background: var(--color-surface-card-strong);
  }

  .my-models-overlay__close,
  .my-models-list__row {
    background: var(--color-surface-card);
  }

  .my-models-list__btn {
    background: transparent;
  }

  .my-models-list__delete {
    background: var(--color-danger-soft);
  }
}

.model-checks-overlay {
  position: fixed;
  inset: 0;
  z-index: 520;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom))
    max(12px, env(safe-area-inset-left));
}

.model-checks-overlay.hidden {
  display: none;
}

.model-checks-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(14, 21, 29, 0.68);
  cursor: pointer;
}

.model-checks-overlay__dialog {
  position: relative;
  z-index: 1;
  width: min(740px, 100%);
  max-height: min(76vh, 720px);
  min-height: 220px;
  display: flex;
  flex-direction: column;
  border-radius: var(--radius-xl);
  border: 1px solid var(--color-surface-card-border);
  background: var(--color-surface-card-strong);
  box-shadow: var(--shadow-floating);
  overflow: hidden;
}

.model-checks-overlay__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 16px 12px;
  border-bottom: 1px solid var(--color-border-soft);
  background: var(--color-surface-glass);
}

.model-checks-overlay__title {
  margin: 0;
  color: var(--color-text-primary);
  font-size: 1.02rem;
  font-weight: 800;
  line-height: 1.2;
}

.model-checks-overlay__summary {
  margin: 4px 0 0;
  color: var(--color-text-secondary);
  font-size: 0.82rem;
  line-height: 1.35;
}

.model-checks-overlay__close {
  appearance: none;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-sm);
  display: grid;
  place-items: center;
  font-size: 1.32rem;
  color: var(--color-text-secondary);
  background: var(--color-surface-card);
  cursor: pointer;
}

.model-checks-overlay__close:hover {
  background: var(--color-surface-card-strong);
}

.model-checks-overlay__close:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.model-checks-overlay__list {
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
  padding: 12px;
  overflow-y: auto;
  display: grid;
  gap: 8px;
}

.model-checks-overlay__empty {
  margin: 8px 4px;
  color: var(--color-text-secondary);
  font-size: 0.9rem;
  line-height: 1.35;
}

.loader-page {
  --printer-loader-page-text: #e9f4f6;
  --printer-loader-page-bg:
    radial-gradient(circle at 18% 16%, rgba(84, 214, 176, 0.14), transparent 30%),
    radial-gradient(circle at 82% 24%, rgba(224, 182, 90, 0.1), transparent 28%),
    linear-gradient(145deg, #061013 0%, #0d171c 46%, #111414 100%);
  --printer-loader-stage-padding: clamp(14px, 3vw, 40px);

  min-height: 100vh;
  color: var(--printer-loader-page-text);
  background: var(--printer-loader-page-bg);
}

.loader-stage {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: var(--printer-loader-stage-padding);
}

.printer-loader {
  /* Printer loader component config: tune these variables without editing SVG structure. */
  --printer-loader-width: min(880px, 100%);
  --printer-loader-padding: clamp(18px, 2.5vw, 26px);
  --printer-loader-gap: 0;
  --printer-loader-visual-width: min(560px, 100%);
  --printer-loader-status-width: min(620px, 100%);
  --printer-loader-status-lift: clamp(-30px, -2.4vw, -16px);
  --printer-loader-aspect-ratio: 960 / 640;
  --printer-loader-travel-duration: 6.2s;
  --printer-loader-fan-duration: 0.9s;
  --printer-loader-shell-bg: linear-gradient(150deg, rgba(18, 31, 38, 0.94), rgba(8, 15, 19, 0.9));
  --printer-loader-shell-border: rgba(213, 232, 241, 0.18);
  --printer-loader-shell-shadow: 0 28px 72px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  --printer-loader-status-color: #eef8fb;
  --printer-loader-status-muted: rgba(222, 239, 246, 0.72);
  --printer-loader-progress-track: rgba(213, 232, 241, 0.16);
  --printer-loader-progress-tick: rgba(255, 255, 255, 0.24);
  --printer-loader-progress-fill: linear-gradient(90deg, #54d6b0 0%, #0a84ff 58%, #e0b65a 100%);
  --printer-loader-progress-glow: rgba(84, 214, 176, 0.28);
  --printer-loader-cancel-bg: rgba(255, 94, 86, 0.12);
  --printer-loader-cancel-bg-hover: rgba(255, 94, 86, 0.2);
  --printer-loader-cancel-border: rgba(255, 138, 131, 0.28);
  --printer-loader-cancel-text: #ffd0cc;
  --printer-loader-metal-start: #c7d9e0;
  --printer-loader-metal-middle: #8ea2ab;
  --printer-loader-metal-end: #4d5f68;
  --printer-loader-dark-metal-start: #2d3f48;
  --printer-loader-dark-metal-end: #101a20;
  --printer-loader-wall-start: #54d6b0;
  --printer-loader-wall-end: #16886f;
  --printer-loader-soft-shadow-color: #91c7dc;
  --printer-loader-soft-shadow-opacity: 0.24;
  --printer-loader-backplate-fill: transparent;
  --printer-loader-backplate-stroke: transparent;
  --printer-loader-grid-stroke: rgba(171, 196, 207, 0.16);
  --printer-loader-bed-shadow-fill: rgba(132, 165, 178, 0.12);
  --printer-loader-bed-fill: #c3d6df;
  --printer-loader-bed-stroke: #849aa5;
  --printer-loader-table-fill: rgba(191, 211, 219, 0.78);
  --printer-loader-table-stroke: #96aab3;
  --printer-loader-wheel-fill: #203947;
  --printer-loader-wheel-stroke: #8298a3;
  --printer-loader-rail-stroke: #91a9b4;
  --printer-loader-cable-stroke: #6d8795;
  --printer-loader-carriage-fill: #1d3039;
  --printer-loader-carriage-stroke: #a8bac2;
  --printer-loader-face-stroke: #bdcdd4;
  --printer-loader-fan-ring-fill: #2f4a57;
  --printer-loader-fan-ring-stroke: #c3d4dc;
  --printer-loader-fan-fill: #dbe9ee;
  --printer-loader-fan-hub-fill: #c1d2d9;
  --printer-loader-heat-fill: #4d6571;
  --printer-loader-heat-stroke: #b6c8d0;
  --printer-loader-fin-stroke: #d7e5ea;
  --printer-loader-nozzle-fill: #d4aa51;
  --printer-loader-nozzle-stroke: #9d7830;
  --printer-loader-tip-fill: #d4aa51;
  --printer-loader-screw-fill: #d9e6eb;
  --printer-loader-wall-stroke: #91abb6;
  --printer-loader-wall-guide-stroke: rgba(171, 196, 207, 0.16);
  --printer-loader-wall-shadow: drop-shadow(0 4px 7px rgba(124, 178, 194, 0.32));

  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: 1fr;
  justify-items: center;
  gap: var(--printer-loader-gap);
  width: var(--printer-loader-width);
  max-width: 100%;
  padding: var(--printer-loader-padding);
  border: 1px solid var(--printer-loader-shell-border);
  border-radius: var(--radius-xl);
  background: var(--printer-loader-shell-bg);
  box-shadow: var(--printer-loader-shell-shadow);
  overflow: hidden;
}

.printer-loader::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, transparent, rgba(84, 214, 176, 0.13), transparent),
    radial-gradient(circle at 74% 28%, rgba(224, 182, 90, 0.14), transparent 32%);
  pointer-events: none;
}

.printer-loader__visual {
  min-width: 0;
  width: var(--printer-loader-visual-width);
  aspect-ratio: var(--printer-loader-aspect-ratio);
}

.viewer-loader .printer-loader {
  --printer-loader-width: min(420px, calc(100% - 28px));
  --printer-loader-padding: 14px;
  --printer-loader-gap: 8px;
  --printer-loader-visual-width: min(180px, 72%);
  --printer-loader-status-width: 100%;
  --printer-loader-status-lift: 0;
  --printer-loader-shell-bg: linear-gradient(145deg, rgba(18, 34, 43, 0.94), rgba(8, 17, 24, 0.88));
  --printer-loader-shell-border: rgba(213, 232, 241, 0.2);
  --printer-loader-shell-shadow: 0 22px 42px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.12);
  --printer-loader-status-color: #eef8fb;
  --printer-loader-status-muted: rgba(222, 239, 246, 0.72);
  --printer-loader-progress-track: rgba(213, 232, 241, 0.16);
  --printer-loader-progress-tick: rgba(255, 255, 255, 0.28);
  --printer-loader-progress-glow: rgba(84, 214, 176, 0.42);
  --printer-loader-cancel-bg: rgba(255, 94, 86, 0.12);
  --printer-loader-cancel-bg-hover: rgba(255, 94, 86, 0.2);
  --printer-loader-cancel-border: rgba(255, 138, 131, 0.28);
  --printer-loader-cancel-text: #ffd0cc;
  --printer-loader-metal-start: #ffffff;
  --printer-loader-metal-middle: #d7e8f0;
  --printer-loader-metal-end: #9db7c5;
  --printer-loader-dark-metal-start: #3f5967;
  --printer-loader-dark-metal-end: #20343f;
  --printer-loader-soft-shadow-color: #91c7dc;
  --printer-loader-soft-shadow-opacity: 0.38;
  --printer-loader-backplate-fill: rgba(6, 18, 25, 0.42);
  --printer-loader-backplate-stroke: rgba(213, 232, 241, 0.28);
  --printer-loader-grid-stroke: rgba(213, 232, 241, 0.22);
  --printer-loader-bed-shadow-fill: rgba(170, 198, 211, 0.16);
  --printer-loader-bed-fill: #dcebf2;
  --printer-loader-bed-stroke: #a4bdca;
  --printer-loader-table-fill: rgba(223, 237, 244, 0.9);
  --printer-loader-table-stroke: #bed2dc;
  --printer-loader-wheel-fill: #203947;
  --printer-loader-wheel-stroke: #a9c1cc;
  --printer-loader-rail-stroke: #c7dbe5;
  --printer-loader-cable-stroke: #6d8795;
  --printer-loader-carriage-fill: #20343f;
  --printer-loader-carriage-stroke: #d4e4ec;
  --printer-loader-face-stroke: #d8e8ef;
  --printer-loader-fan-ring-fill: #2f4a57;
  --printer-loader-fan-ring-stroke: #e4f1f6;
  --printer-loader-fan-fill: #f5fbfd;
  --printer-loader-fan-hub-fill: #dcebf1;
  --printer-loader-heat-fill: #58717e;
  --printer-loader-heat-stroke: #d1e2ea;
  --printer-loader-fin-stroke: #f1f8fb;
  --printer-loader-nozzle-fill: #e0b65a;
  --printer-loader-nozzle-stroke: #9d7830;
  --printer-loader-tip-fill: #e0b65a;
  --printer-loader-screw-fill: #eff7fb;
  --printer-loader-wall-stroke: #a8c7d4;
  --printer-loader-wall-guide-stroke: rgba(213, 232, 241, 0.28);
  --printer-loader-wall-shadow: drop-shadow(0 5px 9px rgba(156, 215, 235, 0.5));
  border-radius: 18px;
  filter:
    drop-shadow(0 18px 28px rgba(94, 148, 170, 0.36))
    drop-shadow(0 0 14px rgba(213, 232, 241, 0.18));
}

@media (min-width: 760px) {
  #viewer:has(.viewer-hierarchy:not(.hidden)) .viewer-loader .printer-loader,
  #viewer:has(.viewer-model-checks:not(.hidden)) .viewer-loader .printer-loader {
    --printer-loader-width: clamp(280px, calc(100% - var(--viewer-hierarchy-width) - var(--viewer-info-width) - 80px), 320px);
    --printer-loader-visual-width: min(150px, 72%);
  }
}

.viewer-loader .printer-loader__text {
  font-size: var(--font-size-body);
}

.viewer-loader .printer-loader__stage {
  font-size: var(--font-size-caption);
}

.printer-loader__status {
  min-width: 0;
  width: var(--printer-loader-status-width);
  margin-top: var(--printer-loader-status-lift);
  display: grid;
  align-content: center;
  gap: 12px;
  color: var(--printer-loader-status-color);
}

.printer-loader__text {
  margin: 0;
  color: var(--printer-loader-status-color);
  font-size: var(--font-size-title);
  font-weight: 800;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.printer-loader__progress-line {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
}

.printer-loader__progress {
  position: relative;
  min-width: 0;
  height: 12px;
  border-radius: var(--radius-pill);
  background:
    repeating-linear-gradient(
      90deg,
      transparent 0,
      transparent 34px,
      var(--printer-loader-progress-tick) 34px,
      var(--printer-loader-progress-tick) 35px
    ),
    var(--printer-loader-progress-track);
  box-shadow: inset 0 1px 2px rgba(16, 28, 38, 0.2);
  overflow: hidden;
}

.printer-loader__progress-bar {
  position: absolute;
  inset: 0 auto 0 0;
  min-width: 10px;
  border-radius: inherit;
  background: var(--printer-loader-progress-fill);
  box-shadow: 0 0 18px var(--printer-loader-progress-glow);
  overflow: hidden;
  transition: width 0.28s ease;
}

.printer-loader__progress-bar::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 0 34%, rgba(255, 255, 255, 0.58) 46%, transparent 60% 100%);
  transform: translateX(-100%);
  animation: printer-progress-sheen 1.8s ease-in-out infinite;
}

.printer-loader__percent {
  min-width: 42px;
  color: var(--printer-loader-status-color);
  font-size: var(--font-size-body-sm);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.printer-loader__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}

.printer-loader__stage {
  min-width: 0;
  margin: 0;
  color: var(--printer-loader-status-muted);
  font-size: var(--font-size-body-sm);
  font-weight: 650;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.printer-loader__cancel {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px;
  border-color: var(--printer-loader-cancel-border);
  border-radius: var(--radius-pill);
  background: var(--printer-loader-cancel-bg);
  color: var(--printer-loader-cancel-text);
  box-shadow: none;
  white-space: nowrap;
}

.printer-loader__cancel:not(:disabled):hover {
  background: var(--printer-loader-cancel-bg-hover);
}

.printer-loader__cancel-icon {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
}

@media (max-width: 760px) {
  .printer-loader {
    --printer-loader-width: min(520px, 100%);
  }
}

@media (max-width: 520px) {
  .loader-stage {
    align-items: center;
  }

  .printer-loader {
    --printer-loader-padding: 14px;
    --printer-loader-gap: 12px;
    --printer-loader-status-lift: -8px;
    border-radius: var(--radius-lg);
  }

  .viewer-loader .printer-loader {
    --printer-loader-width: min(360px, calc(100% - 20px));
    --printer-loader-visual-width: min(170px, 70%);
  }

  .printer-loader__footer {
    align-items: stretch;
    flex-direction: column;
  }

  .printer-loader__cancel {
    width: 100%;
  }
}

.printer-loader__svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.printer-loader__backplate {
  fill: var(--printer-loader-backplate-fill);
  stroke: var(--printer-loader-backplate-stroke);
  stroke-width: 2;
}

.printer-loader__metal-stop--start {
  stop-color: var(--printer-loader-metal-start);
}

.printer-loader__metal-stop--middle {
  stop-color: var(--printer-loader-metal-middle);
}

.printer-loader__metal-stop--end {
  stop-color: var(--printer-loader-metal-end);
}

.printer-loader__dark-metal-stop--start {
  stop-color: var(--printer-loader-dark-metal-start);
}

.printer-loader__dark-metal-stop--end {
  stop-color: var(--printer-loader-dark-metal-end);
}

.printer-loader__wall-stop--start {
  stop-color: var(--printer-loader-wall-start);
}

.printer-loader__wall-stop--end {
  stop-color: var(--printer-loader-wall-end);
}

.printer-loader__soft-shadow {
  flood-color: var(--printer-loader-soft-shadow-color);
  flood-opacity: var(--printer-loader-soft-shadow-opacity);
}

.printer-loader__grid,
.printer-loader__bed-line {
  fill: none;
  stroke: var(--printer-loader-grid-stroke);
  stroke-linecap: round;
  stroke-width: 2;
}

.printer-loader__bed-shadow {
  fill: var(--printer-loader-bed-shadow-fill);
}

.printer-loader__bed {
  fill: var(--printer-loader-bed-fill);
  stroke: var(--printer-loader-bed-stroke);
  stroke-width: 3;
}

.printer-loader__tabletop {
  fill: var(--printer-loader-table-fill);
  stroke: var(--printer-loader-table-stroke);
  stroke-linejoin: round;
  stroke-width: 4;
}

.printer-loader__gantry rect:first-child {
  fill: url(#loader-dark-metal);
}

.printer-loader__gantry rect:nth-child(2) {
  fill: url(#loader-metal);
}

.printer-loader__gantry circle {
  fill: var(--printer-loader-wheel-fill);
  stroke: var(--printer-loader-wheel-stroke);
  stroke-width: 6;
}

.printer-loader__gantry path,
.printer-loader__belts path {
  fill: none;
  stroke: var(--printer-loader-rail-stroke);
  stroke-linecap: round;
}

.printer-loader__gantry path {
  stroke-width: 8;
}

.printer-loader__belts path {
  stroke-width: 5;
  opacity: 0.72;
}

.printer-loader__belts path:nth-child(3) {
  stroke-width: 13;
  opacity: 0.58;
}

.printer-loader__toolhead {
  animation: printer-head-travel var(--printer-loader-travel-duration) linear infinite;
  transform-box: fill-box;
  transform-origin: center;
}

.printer-loader__cable {
  fill: none;
  stroke: var(--printer-loader-cable-stroke);
  stroke-linecap: round;
  stroke-width: 11;
}

.printer-loader__cable--thin {
  stroke-width: 5;
  opacity: 0.7;
}

.toolhead__carriage {
  fill: var(--printer-loader-carriage-fill);
  stroke: var(--printer-loader-carriage-stroke);
  stroke-width: 4;
}

.toolhead__face {
  fill: url(#loader-dark-metal);
  stroke: var(--printer-loader-face-stroke);
  stroke-width: 2;
}

.toolhead__fan-ring {
  fill: var(--printer-loader-fan-ring-fill);
  stroke: var(--printer-loader-fan-ring-stroke);
  stroke-width: 6;
}

.toolhead__fan {
  fill: var(--printer-loader-fan-fill);
  animation: printer-fan-spin var(--printer-loader-fan-duration) linear infinite;
  transform-box: view-box;
  transform-origin: 476px 312px;
}

.toolhead__fan-hub {
  fill: var(--printer-loader-fan-hub-fill);
}

.toolhead__heat {
  fill: var(--printer-loader-heat-fill);
  stroke: var(--printer-loader-heat-stroke);
  stroke-width: 3;
}

.toolhead__fins {
  fill: none;
  stroke: var(--printer-loader-fin-stroke);
  stroke-linecap: round;
  stroke-width: 5;
}

.toolhead__nozzle {
  fill: var(--printer-loader-nozzle-fill);
  stroke: var(--printer-loader-nozzle-stroke);
  stroke-width: 3;
}

.toolhead__tip {
  fill: var(--printer-loader-tip-fill);
}

.toolhead__screw {
  fill: var(--printer-loader-screw-fill);
}

.printer-loader__walls path {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.wall-line {
  stroke: var(--printer-loader-wall-stroke);
  stroke-width: 11;
  /* Meander timing formula: keyframe % = accumulated_segment_length / total_path_length * 100.
     Path length = 7 horizontal runs * 250 + 6 vertical rises * 28 = 1918. */
  stroke-dasharray: 1918;
  stroke-dashoffset: 1918;
  filter: var(--printer-loader-wall-shadow);
  animation: wall-layer-build var(--printer-loader-travel-duration) linear infinite;
}

.wall-guide {
  stroke: var(--printer-loader-wall-guide-stroke);
  stroke-width: 11;
}

@keyframes printer-head-travel {
  0% {
    transform: translateX(-80px) translateY(-16px);
  }
  13.03% {
    transform: translateX(170px) translateY(-16px);
  }
  14.49% {
    transform: translateX(170px) translateY(-44px);
  }
  27.53% {
    transform: translateX(-80px) translateY(-44px);
  }
  28.99% {
    transform: translateX(-80px) translateY(-72px);
  }
  42.02% {
    transform: translateX(170px) translateY(-72px);
  }
  43.48% {
    transform: translateX(170px) translateY(-100px);
  }
  56.52% {
    transform: translateX(-80px) translateY(-100px);
  }
  57.98% {
    transform: translateX(-80px) translateY(-128px);
  }
  71.01% {
    transform: translateX(170px) translateY(-128px);
  }
  72.47% {
    transform: translateX(170px) translateY(-156px);
  }
  85.51% {
    transform: translateX(-80px) translateY(-156px);
  }
  86.97% {
    transform: translateX(-80px) translateY(-184px);
  }
  100% {
    transform: translateX(170px) translateY(-184px);
  }
}

@keyframes printer-fan-spin {
  to {
    transform: rotate(1turn);
  }
}

@keyframes printer-progress-sheen {
  0% {
    transform: translateX(-100%);
  }
  55%,
  100% {
    transform: translateX(100%);
  }
}

@keyframes wall-layer-build {
  0% {
    opacity: 1;
    stroke-dashoffset: 1918;
  }
  100% {
    opacity: 1;
    stroke-dashoffset: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .printer-loader__toolhead,
  .toolhead__fan,
  .printer-loader__progress-bar::after,
  .wall-line {
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
  }
}

/* Shared icon-button system: close, refresh, delete and compact modal actions. */
.icon-button {
  --icon-button-size: 40px;
  --icon-button-radius: 12px;
  --icon-button-border: var(--color-border-soft);
  --icon-button-border-hover: var(--color-border-strong);
  --icon-button-bg: var(--color-surface-card);
  --icon-button-bg-hover: var(--color-surface-card-strong);
  --icon-button-color: var(--color-text-secondary);
  --icon-button-color-hover: var(--color-text-primary);
  --icon-button-shadow: var(--shadow-interactive);
  --icon-button-shadow-hover: var(--shadow-panel);
  --icon-button-glyph-size: 18px;

  appearance: none;
  -webkit-appearance: none;
  width: var(--icon-button-size);
  min-width: var(--icon-button-size);
  height: var(--icon-button-size);
  min-height: var(--icon-button-size);
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
  border: 1px solid var(--icon-button-border);
  border-radius: var(--icon-button-radius);
  background: var(--icon-button-bg);
  color: var(--icon-button-color);
  box-shadow: var(--icon-button-shadow);
  cursor: pointer;
  font-size: 0;
  line-height: 1;
  transform-origin: center;
  transition:
    transform 0.14s ease,
    border-color 0.16s ease,
    background 0.16s ease,
    color 0.16s ease,
    box-shadow 0.16s ease,
    opacity 0.16s ease;
}

.icon-button:not(:disabled):hover {
  border-color: var(--icon-button-border-hover);
  background: var(--icon-button-bg-hover);
  color: var(--icon-button-color-hover);
  box-shadow: var(--icon-button-shadow-hover);
  transform: translateY(-1px);
}

.icon-button:not(:disabled):active {
  box-shadow: inset 0 2px 7px rgba(0, 0, 0, 0.14);
  transform: scale(0.97);
}

.icon-button:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring), var(--icon-button-shadow);
}

.icon-button:disabled {
  cursor: not-allowed;
  opacity: var(--state-disabled-opacity);
  transform: none;
}

.icon-button svg {
  width: var(--icon-button-glyph-size);
  height: var(--icon-button-glyph-size);
  display: block;
  flex-shrink: 0;
  transform-box: fill-box;
  transform-origin: center;
}

.icon-button--close {
  --icon-button-glyph-size: 16px;
  position: relative;
}

.icon-button--close > svg {
  display: none;
}

.icon-button--close::before,
.icon-button--close::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--icon-button-glyph-size);
  height: 2.2px;
  border-radius: var(--radius-pill);
  background: currentColor;
  transform-origin: center;
}

.icon-button--close::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.icon-button--close::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.icon-button--danger {
  --icon-button-glyph-size: 20px;
  --icon-button-border: color-mix(in srgb, var(--color-danger) 18%, transparent);
  --icon-button-border-hover: color-mix(in srgb, var(--color-danger) 34%, transparent);
  --icon-button-bg: var(--color-danger-soft);
  --icon-button-bg-hover: color-mix(in srgb, var(--color-danger-soft) 78%, var(--color-surface-card));
  --icon-button-color: var(--color-danger);
  --icon-button-color-hover: var(--color-danger);
  --icon-button-shadow: none;
  --icon-button-shadow-hover: var(--shadow-interactive);
}

.paywall-modal__close.icon-button {
  --icon-button-border: rgba(235, 239, 247, 0.14);
  --icon-button-border-hover: rgba(255, 190, 103, 0.4);
  --icon-button-bg: rgba(255, 255, 255, 0.04);
  --icon-button-bg-hover: rgba(255, 255, 255, 0.08);
  --icon-button-color: rgba(235, 239, 247, 0.76);
  --icon-button-color-hover: #f7f9ff;
  --icon-button-shadow: none;
  margin: -6px -6px 0 0;
}

.my-models-overlay__close.icon-button,
.build-history-overlay__close.icon-button {
  --icon-button-bg: var(--my-models-control-bg);
  --icon-button-bg-hover: var(--color-surface-card-strong);
  --icon-button-shadow: var(--shadow-interactive);
}

.build-history-refresh.icon-button path {
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.my-models-list__delete.icon-button {
  --icon-button-size: 36px;
  --icon-button-radius: var(--radius-xs);
  --icon-button-glyph-size: 18px;
  --icon-button-border: color-mix(in srgb, var(--color-danger) 12%, transparent);
  --icon-button-border-hover: color-mix(in srgb, var(--color-danger) 28%, transparent);
  --icon-button-bg: color-mix(in srgb, var(--color-danger-soft) 46%, transparent);
  --icon-button-bg-hover: color-mix(in srgb, var(--color-danger-soft) 82%, var(--color-surface-card));
  --icon-button-shadow: none;
  --icon-button-shadow-hover: none;
}

.icon-button .my-models-list__trash-icon {
  filter: none;
}

.icon-button--danger .my-models-list__trash-icon {
  transform: translateY(-0.5px);
}

@media (prefers-color-scheme: dark) {
  .my-models-list__delete.icon-button {
    --icon-button-border: color-mix(in srgb, var(--color-danger) 16%, transparent);
    --icon-button-bg: color-mix(in srgb, var(--color-danger-soft) 34%, transparent);
    --icon-button-bg-hover: color-mix(in srgb, var(--color-danger-soft) 64%, rgba(36, 36, 38, 0.96));
  }
}

.design-system-page {
  display: grid;
  gap: var(--space-7);
}

.design-system-hero {
  max-width: 920px;
  margin-bottom: 0;
}

.design-system-board {
  overflow: hidden;
}

.design-system-table {
  width: 100%;
  border-collapse: collapse;
}

.design-system-table th,
.design-system-table td {
  padding: 16px 18px;
  border-bottom: 1px solid var(--color-border-soft);
  text-align: left;
  vertical-align: middle;
}

.design-system-table thead th {
  background: var(--color-surface-inset);
  color: var(--color-text-tertiary);
  font-size: 0.74rem;
  font-weight: 820;
  letter-spacing: 0.04em;
  line-height: 1.1;
  text-transform: uppercase;
}

.design-system-table__group th {
  padding-top: 22px;
  padding-bottom: 10px;
  background: color-mix(in srgb, var(--color-surface-inset) 82%, transparent);
  color: var(--color-text-primary);
  font-size: 0.78rem;
  font-weight: 860;
  letter-spacing: 0.04em;
  line-height: 1.15;
  text-transform: uppercase;
}

.design-system-table tbody .design-system-table__group:first-child th {
  padding-top: 16px;
}

.design-system-table tbody th {
  width: 240px;
}

.design-system-table td:nth-child(2) {
  width: 260px;
  color: var(--color-text-secondary);
  font-size: 0.88rem;
  font-weight: 650;
  line-height: 1.35;
}

.design-system-table tr:last-child th,
.design-system-table tr:last-child td {
  border-bottom: 0;
}

.design-system-table code {
  color: var(--color-text-primary);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: 0.82rem;
  font-weight: 740;
  overflow-wrap: anywhere;
}

.design-system-preview {
  min-height: 64px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.design-system-preview .button--primary,
.design-system-preview .button--secondary,
.design-system-preview .button--build,
.design-system-preview .button--danger {
  width: auto;
}

.design-system-preview .segmented-control,
.design-system-preview .export-format-switch {
  width: min(220px, 100%);
}

.design-system-preview .segmented-control--wrap {
  width: auto;
}

.design-system-preview .site-copy {
  max-width: 440px;
}

.design-system-preview .site-title {
  font-size: 1.35rem;
}

.design-system-preview .site-lead {
  font-size: var(--font-size-body-sm);
}

.design-system-field {
  width: min(260px, 100%);
}

.design-system-status {
  width: min(360px, 100%);
}

.design-system-card {
  width: min(280px, 100%);
  display: grid;
  gap: 6px;
  padding: 16px;
}

.design-system-preview .panel.design-system-card,
.design-system-preview .action-group.design-system-card {
  margin: 0;
}

.design-system-card strong {
  color: var(--color-text-primary);
  font-size: 0.95rem;
  line-height: 1.2;
}

.design-system-card span {
  color: var(--color-text-secondary);
  font-size: 0.82rem;
  line-height: 1.35;
}

.design-system-notice {
  width: min(520px, 100%);
}

.design-system-upload {
  width: min(300px, 100%);
  min-height: 150px;
}

.design-system-step {
  width: min(320px, 100%);
  border-right: 1px solid var(--color-border-soft);
}

.design-system-side-menu-preview {
  width: min(360px, 100%);
  display: grid;
  grid-template-columns: repeat(3, minmax(86px, 1fr));
  gap: 10px;
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--radius-md);
  background: linear-gradient(180deg, rgba(15, 20, 28, 0.96), rgba(8, 11, 16, 0.96));
}

.design-system-workspace-preview {
  width: min(420px, 100%);
  min-height: 82px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px;
  overflow: hidden;
  border: 1px solid rgba(173, 196, 211, 0.14);
  border-radius: var(--radius-md);
  background:
    radial-gradient(circle at 50% 0%, rgba(65, 84, 100, 0.18), transparent 48%),
    linear-gradient(180deg, rgba(18, 27, 35, 0.96), rgba(8, 12, 17, 0.96));
}

.design-system-viewer-panel {
  width: min(260px, 100%);
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  color: rgba(245, 250, 252, 0.94);
}

.design-system-viewer-panel span {
  color: rgba(223, 233, 239, 0.74);
  font-size: var(--font-size-caption);
}

.design-system-viewer-panel strong {
  font-size: var(--font-size-body-sm);
}

.design-system-workspace-preview .viewer-workspace-actions__button,
.design-system-workspace-preview .draft-toggle,
.design-system-workspace-preview .zoom-panel__step,
.design-system-workspace-preview .section-panel__axis,
.design-system-workspace-preview .section-panel__ruler,
.design-system-workspace-preview .section-panel__mode,
.design-system-workspace-preview .viewer-hierarchy__toggle,
.design-system-workspace-preview .viewer-hierarchy__remove {
  transform: none;
}

.design-system-workspace-preview .zoom-panel {
  position: static;
  transform: none;
}

.design-system-workspace-preview .zoom-panel__slider {
  height: 88px;
}

.design-system-section-tools {
  width: auto;
}

.design-system-hierarchy-row {
  width: min(260px, 100%);
  color: rgba(245, 250, 252, 0.94);
}

.design-system-model-button {
  width: min(320px, 100%);
  flex: 0 1 320px;
}

.build-history-refresh.icon-button svg path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

@media (max-width: 780px) {
  .design-system-board {
    overflow-x: auto;
  }

  .design-system-table {
    min-width: 720px;
  }

  .design-system-table th,
  .design-system-table td {
    padding: 14px 12px;
  }
}
