@font-face {
  font-family: Inter;
  src: url("/assets/inter.ttf") format("truetype");
  font-weight: 100 900;
  font-display: swap;
}
:root {
  --primary: #804895;
  --hover: #4a348b;
  --ink: #240342;
  --muted: #5b4d6b;
  --canvas: #f9f8ff;
  --soft: #f0ebff;
  --line: #eeecf7;
  --success: #246545;
  --warning: #8c4a16;
  --danger: #a02d35;
  --shadow: 0 4px 48px #480bff0d;
}
* {
  box-sizing: border-box;
}
html {
  color: var(--ink);
  background: var(--canvas);
  font-family: Inter, system-ui, sans-serif;
  font-size: 14px;
}
body {
  margin: 0;
  line-height: 1.5;
}
button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}
button,
a,
input,
select,
textarea {
  touch-action: manipulation;
}
button,
a {
  -webkit-tap-highlight-color: transparent;
}
button {
  cursor: pointer;
}
button:disabled {
  opacity: 0.48;
  cursor: not-allowed;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 3px;
}
a {
  color: var(--hover);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
button {
  border: 0;
  background: none;
}
h1,
h2,
h3,
p {
  margin: 0;
}
h1 {
  font-size: 28px;
  line-height: 1.25;
  letter-spacing: -0.8px;
  font-weight: 720;
}
h2 {
  font-size: 17px;
  font-weight: 650;
  letter-spacing: -0.2px;
}
h3 {
  font-size: 15px;
  font-weight: 650;
}
small,
.small {
  font-size: 12px;
}
svg.icon {
  width: 19px;
  height: 19px;
  flex: none;
  vertical-align: middle;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.65;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.skip-link {
  position: fixed;
  left: 12px;
  top: -70px;
  z-index: 1000;
  background: white;
  padding: 12px;
}
.skip-link:focus {
  top: 8px;
}
.initial-loading {
  padding: 15vh 10vw;
  color: var(--muted);
}
.shell {
  min-height: 100vh;
  padding-left: 232px;
}
.sidebar {
  position: fixed;
  left: 0;
  top: 0;
  bottom: 0;
  width: 232px;
  background: white;
  display: flex;
  flex-direction: column;
  padding: 27px 16px 20px;
  z-index: 40;
  border-right: 1px solid var(--line);
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 12px 24px;
}
.brand img {
  width: 43px;
  height: 43px;
  object-fit: contain;
}
.brand strong {
  font-size: 23px;
  letter-spacing: -0.7px;
}
.brand span {
  display: block;
  font-size: 10px;
  color: var(--muted);
  letter-spacing: 0.8px;
}
.project-switch {
  margin: 0 4px 24px;
  border: 1px solid var(--line);
  padding: 12px;
  border-radius: 12px;
  display: flex;
  gap: 10px;
  align-items: center;
  min-width: 0;
}
.project-switch .project-mark {
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: var(--soft);
  display: grid;
  place-items: center;
  flex: none;
  font-weight: 700;
}
.project-switch div:nth-child(2) {
  min-width: 0;
}
.project-switch strong {
  display: block;
  overflow-wrap: anywhere;
  font-size: 13px;
}
.project-switch small {
  color: var(--muted);
}
.nav {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.nav a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 15px;
  border-radius: 12px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 550;
  text-decoration: none;
}
.nav a:hover {
  background: var(--canvas);
  color: var(--primary);
}
.nav a.active {
  background: var(--soft);
  color: var(--hover);
  font-weight: 700;
}
.sidebar-bottom {
  margin-top: auto;
  padding-top: 28px;
}
.sidebar-bottom .read-mode {
  padding: 12px 15px;
  font-size: 11px;
  color: var(--muted);
  line-height: 1.7;
}
.topbar {
  height: 77px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0 32px;
  background: #fff9;
  border-bottom: 1px solid var(--line);
}
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--muted);
  font-size: 12px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.breadcrumb strong {
  color: var(--ink);
  font-weight: 600;
}
.top-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.avatar {
  width: 34px;
  height: 34px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--soft);
  color: var(--hover);
  font-weight: 650;
  font-size: 12px;
}
.account {
  display: flex;
  align-items: center;
  gap: 9px;
}
.account-name {
  max-width: 170px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}
.menu-toggle {
  display: none;
}
.main {
  max-width: 1664px;
  margin: auto;
  padding: 30px 32px 48px;
  min-width: 0;
}
.page-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 20px;
  margin-bottom: 24px;
}
.page-header p {
  color: var(--muted);
  margin-top: 7px;
  font-size: 13px;
}
.actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
  flex-wrap: wrap;
}
.btn {
  display: inline-flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 10px 18px;
  border-radius: 100px;
  font-size: 11px;
  font-weight: 750;
  letter-spacing: 0.35px;
  text-transform: uppercase;
  line-height: 1.4;
  text-decoration: none;
  white-space: normal;
  transition: background 0.15s;
}
.btn:hover {
  text-decoration: none;
}
.btn.primary {
  background: var(--primary);
  color: white;
}
.btn.primary:hover {
  background: var(--hover);
}
.btn.secondary {
  color: var(--hover);
  background: white;
  box-shadow: inset 0 0 0 1px #ddd3ea;
}
.btn.secondary:hover {
  background: var(--soft);
}
.btn.ghost {
  color: var(--primary);
  padding: 8px 11px;
}
.btn.danger {
  background: #fff0f0;
  color: var(--danger);
}
.icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  min-width: 36px;
  border-radius: 50%;
  color: var(--muted);
}
.icon-button:hover {
  background: var(--soft);
}
.phase-rail {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 23px;
  font-size: 12px;
  color: var(--muted);
}
.phase-rail label {
  font-weight: 600;
}
.phase-rail select {
  max-width: 390px;
  width: auto;
  min-height: 36px;
  border-radius: 100px;
  padding: 6px 32px 6px 14px;
  background-color: white;
}
.mode-label {
  font-size: 11px;
  padding-left: 10px;
  border-left: 1px solid #ded5e8;
}
.banner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
  border-radius: 15px;
  background: var(--soft);
  margin-bottom: 23px;
}
.banner .banner-icon {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: #fff8;
  flex: none;
}
.banner-copy {
  flex: 1;
  min-width: 0;
}
.banner-copy strong {
  display: block;
  font-size: 13px;
}
.banner-copy p {
  font-size: 12px;
  margin-top: 3px;
  color: var(--muted);
}
.banner.warning {
  background: #fff4e8;
}
.banner.success {
  background: #edf7ef;
}
.banner.error {
  background: #fff0f0;
}
.metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 17px;
  margin-bottom: 24px;
}
.metric {
  padding: 21px;
  background: white;
  border-radius: 20px;
  box-shadow: var(--shadow);
  position: relative;
  min-width: 0;
  text-decoration: none;
  color: var(--ink);
}
.metric:hover {
  text-decoration: none;
  box-shadow: 0 5px 25px #480bff16;
}
.metric-label {
  font-size: 12px;
  color: var(--muted);
  padding-right: 22px;
}
.metric-value {
  font-size: 32px;
  line-height: 1.25;
  font-weight: 700;
  letter-spacing: -1px;
  margin: 10px 0 4px;
  font-variant-numeric: tabular-nums;
}
.metric-note {
  font-size: 11px;
  color: var(--muted);
}
.metric-icon {
  position: absolute;
  right: 20px;
  top: 21px;
  color: var(--primary);
}
.grid-main {
  display: grid;
  grid-template-columns: minmax(0, 1.9fr) minmax(260px, 1fr);
  gap: 23px;
  align-items: start;
}
.card {
  background: white;
  border-radius: 20px;
  box-shadow: var(--shadow);
  min-width: 0;
  overflow: hidden;
}
.card + .card {
  margin-top: 22px;
}
.card-pad {
  padding: 23px;
}
.card-header {
  padding: 22px 23px 17px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.card-header p,
.section-desc {
  font-size: 12px;
  color: var(--muted);
  margin-top: 4px;
}
.table-scroll {
  overflow: auto;
  max-width: 100%;
  overscroll-behavior-x: contain;
}
.table {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
  font-size: 12px;
}
.table th {
  font-size: 10px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  font-weight: 650;
  background: #fcfbff;
  color: var(--muted);
  padding: 13px 18px;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.table td {
  padding: 15px 18px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
  overflow-wrap: anywhere;
  max-width: 360px;
}
.table tr:last-child td {
  border-bottom: 0;
}
.table tbody tr:hover {
  background: #fcfbff;
}
.table .name {
  font-weight: 600;
  font-size: 12px;
}
.table .key {
  display: block;
  font-size: 10px;
  margin-top: 3px;
  color: var(--muted);
  font-family: ui-monospace, monospace;
  overflow-wrap: anywhere;
}
.table .numeric {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.text-link {
  color: var(--hover);
  font-weight: 600;
  text-align: left;
  padding: 0;
}
.text-link:hover {
  text-decoration: underline;
}
.badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border-radius: 100px;
  padding: 4px 9px;
  background: var(--soft);
  color: var(--hover);
  font-size: 10px;
  line-height: 1.5;
  white-space: nowrap;
  font-weight: 600;
}
.badge.success {
  background: #edf7ef;
  color: var(--success);
}
.badge.warning {
  background: #fff4e8;
  color: var(--warning);
}
.badge.danger {
  background: #fff0f0;
  color: var(--danger);
}
.badge.neutral {
  background: #f1f1f5;
  color: #5b5663;
}
.status-dot {
  width: 5px;
  height: 5px;
  background: currentColor;
  border-radius: 50%;
  flex: none;
}
.muted {
  color: var(--muted);
}
.mono {
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-size: 11px;
  overflow-wrap: anywhere;
}
.nowrap {
  white-space: nowrap;
}
.next-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
}
.next-item:last-child {
  border: 0;
  padding-bottom: 0;
}
.next-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  flex: none;
  background: var(--soft);
  border-radius: 10px;
  color: var(--primary);
}
.next-item strong {
  font-size: 12px;
  display: block;
}
.next-item p {
  font-size: 11px;
  color: var(--muted);
  margin: 4px 0 8px;
}
.next-item a {
  font-size: 11px;
  font-weight: 650;
}
.progress {
  height: 6px;
  background: var(--soft);
  border-radius: 30px;
  overflow: hidden;
  margin: 12px 0;
}
.progress span {
  display: block;
  background: var(--primary);
  height: 100%;
  border-radius: 30px;
}
.progress-labels {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 11px;
  color: var(--muted);
}
.section-space {
  margin-top: 24px;
}
.safety-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 11px;
  color: var(--muted);
  margin-top: 23px;
  line-height: 1.7;
}
.safety-note svg {
  width: 15px;
  height: 15px;
  margin-top: 2px;
}
.toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.search {
  position: relative;
  flex: 1;
  min-width: 180px;
  max-width: 460px;
}
.search svg {
  position: absolute;
  left: 13px;
  top: 12px;
  color: var(--muted);
}
.search input {
  padding-left: 42px;
}
.filters {
  position: relative;
}
.filters summary {
  list-style: none;
}
.filters[open] .filter-panel {
  position: absolute;
  right: 0;
  z-index: 15;
  top: 46px;
  min-width: 260px;
  background: white;
  box-shadow: 0 8px 45px #24034222;
  border-radius: 15px;
  padding: 20px;
}
.tabs {
  display: flex;
  gap: 20px;
  border-bottom: 1px solid var(--line);
  margin: 0 23px;
  overflow-x: auto;
}
.tabs button,
.tabs a {
  padding: 15px 0;
  white-space: nowrap;
  color: var(--muted);
  font-size: 12px;
  position: relative;
  text-decoration: none;
}
.tabs .active {
  color: var(--hover);
  font-weight: 700;
}
.tabs .active:after {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--primary);
  content: "";
}
.data-layout {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 22px;
  align-items: start;
}
.entity-rail {
  background: white;
  border-radius: 16px;
  padding: 10px;
  box-shadow: var(--shadow);
  max-height: 72vh;
  overflow: auto;
}
.entity-rail .rail-title {
  padding: 9px 10px 12px;
  font-size: 10px;
  letter-spacing: 0.8px;
  color: var(--muted);
  text-transform: uppercase;
}
.entity-rail a {
  padding: 10px;
  display: flex;
  justify-content: space-between;
  gap: 8px;
  border-radius: 9px;
  font-size: 11px;
  color: var(--muted);
  text-decoration: none;
  overflow-wrap: anywhere;
}
.entity-rail a.active {
  background: var(--soft);
  color: var(--hover);
  font-weight: 650;
}
.entity-rail .count {
  font-variant-numeric: tabular-nums;
  font-size: 10px;
  flex: none;
}
.entity-mobile {
  display: none;
}
.pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 17px 20px;
  flex-wrap: wrap;
  font-size: 11px;
  color: var(--muted);
}
.pagination .actions {
  gap: 4px;
}
.pagination select {
  width: auto;
  min-height: 32px;
  padding: 5px 9px;
}
.empty {
  padding: 50px 24px;
  text-align: center;
  max-width: 560px;
  margin: auto;
}
.empty-icon {
  width: 56px;
  height: 56px;
  background: var(--soft);
  color: var(--primary);
  border-radius: 18px;
  display: grid;
  place-items: center;
  margin: 0 auto 17px;
}
.empty-icon svg {
  width: 25px;
  height: 25px;
}
.empty h2 {
  margin-bottom: 8px;
}
.empty p {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 18px;
}
.error-message {
  color: var(--danger);
  background: #fff0f0;
  border-radius: 10px;
  padding: 12px 14px;
  font-size: 12px;
  margin: 12px 0;
  overflow-wrap: anywhere;
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 17px;
  min-width: 0;
}
.field label,
.field > .label {
  font-size: 12px;
  font-weight: 600;
}
.field small {
  font-size: 11px;
  color: var(--muted);
}
input,
select,
textarea {
  width: 100%;
  border: 1px solid #e0d9e9;
  background: #fff;
  border-radius: 10px;
  min-height: 41px;
  padding: 10px 12px;
  max-width: 100%;
}
textarea {
  min-height: 88px;
  resize: vertical;
  line-height: 1.6;
}
input[type="checkbox"],
input[type="radio"] {
  width: 17px;
  height: 17px;
  min-height: 0;
  padding: 0;
  accent-color: var(--primary);
  flex: none;
}
.check-row {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  font-size: 12px;
  margin: 12px 0;
}
.check-row input {
  margin-top: 2px;
}
.form-section {
  border-top: 1px solid var(--line);
  padding-top: 20px;
  margin-top: 20px;
}
.form-section h3 {
  margin-bottom: 14px;
}
.inline-info {
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--soft);
  font-size: 12px;
  line-height: 1.7;
}
.notice-label {
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--primary);
  margin-bottom: 7px;
}
.login-page {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
}
.login-aside {
  background: var(--ink);
  color: white;
  padding: 8vh 7vw;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
}
.login-aside:before,
.login-aside:after {
  content: "";
  position: absolute;
  border: 1px solid #ffffff18;
  border-radius: 50%;
  width: 650px;
  height: 650px;
  right: -350px;
  bottom: -250px;
  pointer-events: none;
}
.login-aside:after {
  width: 450px;
  height: 450px;
  right: -250px;
  bottom: -150px;
}
.login-aside .brand {
  padding: 0;
  color: white;
}
.login-aside .brand img {
  filter: brightness(0) invert(1);
  width: 52px;
  height: 52px;
}
.login-statement {
  margin: auto 0;
  max-width: 470px;
  padding: 50px 0;
}
.login-statement h1 {
  font-size: 43px;
  font-weight: 650;
  letter-spacing: -1.5px;
  line-height: 1.2;
}
.login-statement p {
  font-size: 15px;
  color: #d9cde7;
  line-height: 1.9;
  margin-top: 24px;
}
.login-aside small {
  color: #c8b9d7;
}
.login-main {
  padding: 8vw;
  display: flex;
  align-items: center;
  justify-content: center;
}
.login-box {
  max-width: 370px;
  width: 100%;
}
.login-box h1 {
  font-size: 27px;
}
.login-box > p {
  font-size: 13px;
  color: var(--muted);
  margin: 12px 0 30px;
}
.login-box .btn {
  width: 100%;
  margin-top: 10px;
  min-height: 44px;
}
.login-box .safety-note {
  font-size: 11px;
}
.project-page {
  max-width: 1120px;
  margin: auto;
  padding: 45px 28px;
}
.project-page .brand {
  padding-left: 0;
}
.project-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.project-card {
  padding: 24px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  color: var(--ink);
}
.project-card:hover {
  text-decoration: none;
  box-shadow: 0 5px 35px #480bff20;
}
.project-card .project-initial {
  width: 42px;
  height: 42px;
  border-radius: 13px;
  background: var(--soft);
  display: grid;
  place-items: center;
  font-weight: 700;
  font-size: 18px;
}
.project-card h2 {
  font-size: 18px;
  overflow-wrap: anywhere;
}
.project-card p {
  color: var(--muted);
  font-size: 12px;
}
.project-card .project-card-bottom {
  margin-top: 12px;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 11px;
  color: var(--primary);
}
.wizard {
  max-width: 760px;
  margin: 30px auto;
}
.wizard-steps {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin: 24px 0 30px;
}
.wizard-step {
  display: flex;
  gap: 9px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
}
.wizard-step b {
  border-radius: 50%;
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  background: var(--soft);
  color: var(--primary);
}
.wizard-step.active {
  color: var(--ink);
  font-weight: 650;
}
.wizard-step.active b {
  background: var(--primary);
  color: white;
}
.mode-options {
  display: grid;
  gap: 12px;
  margin: 20px 0;
}
.mode-option {
  position: relative;
  padding: 18px;
  border: 1px solid #ded5e8;
  border-radius: 14px;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  cursor: pointer;
}
.mode-option:has(input:checked) {
  border-color: var(--primary);
  background: var(--canvas);
}
.mode-option strong {
  font-size: 13px;
  display: block;
}
.mode-option small {
  font-size: 12px;
  color: var(--muted);
  display: block;
  margin-top: 4px;
}
.wizard-footer {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding-top: 20px;
  border-top: 1px solid var(--line);
  margin-top: 24px;
}
.auth-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  margin-bottom: 26px;
}
.dialog-content {
  padding: 26px 28px 110px;
}
.dialog-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 24px 28px;
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  background: white;
  z-index: 5;
}
.dialog-header h2 {
  font-size: 21px;
  overflow-wrap: anywhere;
}
.dialog-header p {
  font-size: 11px;
  color: var(--muted);
  margin-top: 5px;
}
.dialog-footer {
  position: sticky;
  bottom: 0;
  background: #fff;
  border-top: 1px solid var(--line);
  padding: 17px 26px;
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  flex-wrap: wrap;
  z-index: 6;
}
.dialog-footer .safety-note {
  margin: 0;
  flex: 1 0 100%;
  font-size: 10px;
}
dialog {
  border: 0;
  padding: 0;
  position: fixed;
  inset: 0 0 0 auto;
  margin: 0;
  width: min(650px, 95vw);
  height: 100dvh;
  max-height: 100dvh;
  max-width: none;
  overflow-y: auto;
  box-shadow: -15px 0 70px #24034225;
  color: var(--ink);
  background: white;
}
dialog::backdrop {
  background: #24034255;
  backdrop-filter: blur(2px);
}
dialog.wide {
  width: min(1060px, 97vw);
}
.record-kv {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) 1.4fr;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
  overflow-wrap: anywhere;
}
.record-kv dt {
  color: var(--muted);
}
.record-kv dd {
  margin: 0;
  min-width: 0;
}
.record-kv .key {
  display: block;
  font-size: 10px;
  font-family: monospace;
  margin-top: 3px;
}
pre {
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--canvas);
  border-radius: 12px;
  padding: 15px;
  font-size: 11px;
  line-height: 1.8;
  max-width: 100%;
  overflow: auto;
}
.distribution {
  margin: 20px 0;
}
.distribution-row {
  margin: 14px 0;
  font-size: 12px;
}
.distribution-row > div {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.distribution-row .progress {
  margin: 7px 0;
  height: 5px;
}
.compare-table {
  table-layout: auto;
  min-width: 560px;
}
.compare-table td {
  max-width: 220px;
  min-width: 150px;
}
.compare-table .different {
  background: #fff8f1;
}
.compare-table th:first-child,
.compare-table td:first-child {
  position: sticky;
  left: 0;
  background: white;
  z-index: 1;
  min-width: 130px;
}
.comparison-pick {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-weight: 500;
  white-space: normal;
  min-width: 160px;
}
.comparison-pick input {
  margin-top: 2px;
}
.badge-group {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
}
.divider {
  border: 0;
  border-top: 1px solid var(--line);
  margin: 22px 0;
}
.settings-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 22px;
  align-items: start;
}
.settings-grid .card + .card {
  margin-top: 0;
}
.snapshot-meta {
  font-size: 11px;
  color: var(--muted);
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.audit-item {
  display: flex;
  gap: 13px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}
.audit-item:last-child {
  border: 0;
}
.audit-marker {
  width: 8px;
  height: 8px;
  flex: none;
  border-radius: 50%;
  background: var(--primary);
  margin-top: 6px;
}
.audit-item strong {
  font-size: 12px;
}
.audit-item p {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
}
.read-only {
  margin-bottom: 20px;
  font-size: 12px;
  padding: 12px 16px;
  background: var(--soft);
  border-radius: 10px;
}
.bottom-space {
  margin-bottom: 20px;
}
#toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translate(-50%, 20px);
  background: var(--ink);
  color: white;
  padding: 12px 20px;
  border-radius: 12px;
  max-width: calc(100vw - 32px);
  font-size: 12px;
  z-index: 100;
  opacity: 0;
  pointer-events: none;
  transition: 0.15s;
}
#toast.visible {
  opacity: 1;
  transform: translate(-50%, 0);
}
.loading-bar {
  height: 3px;
  background: var(--soft);
  overflow: hidden;
}
.loading-bar:after {
  content: "";
  display: block;
  width: 35%;
  height: 100%;
  background: var(--primary);
  animation: loading 1.2s infinite;
}
.loading-block {
  padding: 45px;
  text-align: center;
  color: var(--muted);
  font-size: 13px;
}
@keyframes loading {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(400%);
  }
}
.mobile-overlay {
  display: none;
}
.cell-sub {
  display: block;
  color: var(--muted);
  font-size: 10px;
  margin-top: 4px;
}
.summary-line {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 0;
  font-size: 12px;
  border-bottom: 1px solid var(--line);
}
.summary-line:last-child {
  border: 0;
}
.summary-line span:first-child {
  color: var(--muted);
}
.summary-line span:last-child {
  text-align: right;
  overflow-wrap: anywhere;
}
.field-chip {
  display: inline-block;
  font-size: 11px;
  background: var(--soft);
  border-radius: 5px;
  padding: 2px 6px;
  margin: 2px;
}
.mobile-only {
  display: none;
}
.preview-stale {
  font-size: 12px;
  color: var(--warning);
  background: #fff4e8;
  padding: 10px;
  border-radius: 10px;
  margin: 12px 0;
}
.health-line {
  display: flex;
  gap: 10px;
  align-items: center;
  font-size: 12px;
  margin: 10px 0;
}
.connection-arrow {
  font-size: 20px;
  padding: 0 12px;
  color: var(--primary);
}
@media (min-width: 1600px) {
  .main {
    padding: 36px 40px;
  }
  .topbar {
    padding: 0 40px;
  }
  .metrics {
    gap: 23px;
  }
  .metric {
    padding: 24px;
  }
}
@media (max-width: 1270px) {
  .data-layout {
    grid-template-columns: 160px minmax(0, 1fr);
  }
  .grid-main {
    grid-template-columns: minmax(0, 1.6fr) minmax(250px, 1fr);
  }
  .main {
    padding: 26px 24px;
  }
  .topbar {
    padding: 0 24px;
  }
  .metrics {
    gap: 12px;
  }
  .metric {
    padding: 18px;
  }
  .metric-value {
    font-size: 28px;
  }
  .metric-icon {
    right: 16px;
    top: 18px;
  }
  .account-name {
    display: none;
  }
}
@media (max-width: 1151px) {
  .shell {
    padding-left: 0;
  }
  .sidebar {
    transform: translateX(-100%);
    transition: transform 0.15s;
    width: 248px;
  }
  .shell.menu-open .sidebar {
    transform: translateX(0);
  }
  .shell.menu-open .mobile-overlay {
    display: block;
    position: fixed;
    inset: 0;
    background: #24034266;
    z-index: 39;
  }
  .menu-toggle {
    display: inline-flex;
  }
  .topbar {
    height: 69px;
  }
  .metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .grid-main {
    grid-template-columns: minmax(0, 1.6fr) minmax(240px, 1fr);
  }
  .metric-value {
    font-size: 30px;
  }
  .login-aside {
    padding: 7vw 6vw;
  }
  .login-main {
    padding: 7vw;
  }
  .login-statement h1 {
    font-size: 36px;
  }
  .project-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 900px) {
  .grid-main {
    grid-template-columns: 1fr;
  }
  .settings-grid {
    grid-template-columns: 1fr;
  }
  .data-layout {
    grid-template-columns: minmax(0, 1fr);
  }
  .entity-rail {
    display: none;
  }
  .entity-mobile {
    display: block;
    max-width: 360px;
    margin-bottom: 18px;
  }
  .top-actions .snapshot-top {
    display: none;
  }
  .page-header {
    gap: 14px;
  }
  .page-header .actions .btn {
    font-size: 10px;
    padding: 10px 13px;
  }
  .account-name {
    display: none;
  }
  .login-page {
    grid-template-columns: 1fr 1fr;
  }
  .login-statement h1 {
    font-size: 31px;
  }
  .login-statement p {
    font-size: 13px;
  }
  .login-aside {
    padding: 32px;
  }
  .login-main {
    padding: 32px;
  }
  .mode-label {
    width: 100%;
    padding-left: 0;
    border: 0;
  }
  .dialog-content {
    padding-bottom: 70px;
  }
}
@media (max-width: 640px) {
  h1 {
    font-size: 24px;
  }
  .main {
    padding: 22px 16px 35px;
  }
  .topbar {
    padding: 0 14px;
    gap: 8px;
  }
  .breadcrumb {
    gap: 7px;
    font-size: 11px;
  }
  .breadcrumb .crumb-root {
    display: none;
  }
  .top-actions {
    gap: 7px;
  }
  .account {
    gap: 3px;
  }
  .page-header {
    flex-direction: column;
    margin-bottom: 21px;
    gap: 16px;
  }
  .page-header .actions {
    align-self: stretch;
    justify-content: flex-start;
  }
  .page-header .actions .btn {
    font-size: 10px;
  }
  .btn {
    min-height: 44px;
    font-size: 10px;
    padding: 11px 16px;
  }
  .icon-button {
    min-height: 44px;
    min-width: 44px;
  }
  .metrics {
    gap: 11px;
    margin-bottom: 20px;
  }
  .metric {
    padding: 16px;
    border-radius: 16px;
  }
  .metric-label {
    font-size: 10px;
    line-height: 1.6;
    padding-right: 15px;
  }
  .metric-value {
    font-size: 27px;
    margin-top: 11px;
  }
  .metric-note {
    font-size: 10px;
  }
  .metric-icon {
    right: 13px;
    top: 17px;
  }
  .metric-icon svg {
    width: 15px;
    height: 15px;
  }
  .banner {
    padding: 15px;
    gap: 10px;
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .banner .banner-icon {
    width: 32px;
    height: 32px;
    border-radius: 9px;
  }
  .banner-copy {
    flex-basis: calc(100% - 45px);
  }
  .banner > .btn {
    margin-left: 42px;
    min-height: 30px;
    padding: 4px 0;
  }
  .banner-copy strong {
    font-size: 12px;
  }
  .banner-copy p {
    font-size: 11px;
  }
  .card {
    border-radius: 16px;
  }
  .card-header {
    padding: 19px 18px 15px;
  }
  .card-pad {
    padding: 19px 18px;
  }
  .table th {
    padding: 12px;
  }
  .table td {
    padding: 14px 12px;
  }
  .tabs {
    margin: 0 17px;
    gap: 20px;
  }
  .tabs a {
    font-size: 11px;
  }
  .form-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .toolbar {
    align-items: stretch;
  }
  .search {
    max-width: none;
    flex-basis: 100%;
  }
  .toolbar .actions {
    justify-content: flex-start;
    flex: 1;
  }
  .filter-panel {
    right: auto !important;
    left: 0;
  }
  .phase-rail {
    margin-bottom: 20px;
    gap: 8px;
  }
  .phase-rail select {
    max-width: 100%;
    width: 100%;
  }
  .phase-rail label {
    font-size: 11px;
  }
  .mode-label {
    font-size: 10px;
  }
  .pagination {
    padding: 14px;
    font-size: 10px;
  }
  .pagination > .actions {
    width: 100%;
    justify-content: space-between;
  }
  .login-page {
    display: block;
  }
  .login-aside {
    padding: 24px 24px 30px;
    min-height: auto;
  }
  .login-aside .brand {
    padding: 0;
  }
  .login-aside .brand img {
    width: 40px;
    height: 40px;
  }
  .login-aside .brand strong {
    font-size: 22px;
  }
  .login-statement {
    padding: 27px 0 0;
  }
  .login-statement h1 {
    font-size: 28px;
    letter-spacing: -0.7px;
    max-width: 320px;
  }
  .login-statement p {
    display: none;
  }
  .login-aside > small {
    display: none;
  }
  .login-main {
    padding: 34px 24px 40px;
  }
  .login-box h1 {
    font-size: 23px;
  }
  .project-page {
    padding: 25px 18px;
  }
  .project-grid {
    grid-template-columns: 1fr;
  }
  .auth-head .brand {
    padding-bottom: 0;
  }
  .auth-head {
    align-items: flex-start;
    gap: 10px;
  }
  .auth-head .account-name {
    display: none;
  }
  .wizard {
    margin: 20px auto;
  }
  .wizard-steps {
    gap: 8px;
  }
  .wizard-step {
    font-size: 10px;
    gap: 5px;
    align-items: flex-start;
  }
  .wizard-step b {
    width: 24px;
    height: 24px;
    flex: none;
  }
  .wizard .card-pad {
    padding: 20px;
  }
  .wizard-footer {
    flex-wrap: wrap;
  }
  .wizard-footer .btn {
    flex: 1;
  }
  .dialog-content {
    padding: 21px 18px 65px;
  }
  .dialog-header {
    padding: 18px;
    gap: 10px;
  }
  .dialog-header h2 {
    font-size: 19px;
  }
  .dialog-footer {
    padding: 14px 18px;
  }
  .dialog-footer .btn {
    flex: 1;
    padding-left: 10px;
    padding-right: 10px;
  }
  dialog,
  dialog.wide {
    width: 100%;
    max-width: 100%;
  }
  .record-kv {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .record-kv dt {
    font-weight: 600;
  }
  .read-only {
    font-size: 11px;
  }
  .snapshot-meta {
    gap: 8px;
  }
  .safety-note {
    font-size: 10px;
  }
  .mobile-only {
    display: block;
  }
  input,
  select,
  textarea {
    font-size: 16px;
  }
  .field small {
    font-size: 11px;
  }
  .mode-option {
    padding: 14px;
  }
  .summary-line {
    font-size: 11px;
  }
  .comparison-pick {
    font-size: 11px;
  }
  .export-actions {
    justify-content: stretch;
  }
  .export-actions .btn {
    flex: 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
}
@media print {
  .sidebar,
  .topbar,
  .page-header .actions,
  .phase-rail,
  button,
  .toolbar,
  .pagination,
  .safety-note,
  #toast {
    display: none !important;
  }
  .shell {
    padding: 0;
  }
  .main {
    padding: 0;
    max-width: none;
  }
  .card,
  .metric {
    box-shadow: none;
    border: 1px solid #ddd;
    break-inside: avoid;
  }
  .grid-main,
  .settings-grid {
    display: block;
  }
  .main > * {
    margin-bottom: 15px;
  }
  .table-scroll {
    overflow: visible;
  }
  body {
    background: white;
    font-size: 11px;
  }
  .table {
    font-size: 10px;
  }
  .metrics {
    gap: 10px;
  }
  .metric-value {
    font-size: 22px;
  }
  a {
    color: inherit;
  }
  dialog {
    position: static;
    inset: auto;
    width: auto;
    height: auto;
    max-height: none;
    box-shadow: none;
  }
  .dialog-header,
  .dialog-footer {
    position: static;
  }
}

/* Preserve readable column widths; scroll is bounded to the table, never the page. */
.table {
  min-width: 540px;
}
.data-layout .table {
  min-width: 680px;
}
.table td:last-child .text-link {
  white-space: nowrap;
}
@media print {
  .table,
  .data-layout .table {
    min-width: 0;
  }
}

input[readonly] {
  background: var(--canvas);
  color: var(--muted);
}

/* Grid and flex children must shrink independently of wide, scrollable tables. */
.grid-main > *,
.settings-grid > *,
.data-layout > * {
  min-width: 0;
  max-width: 100%;
}
.card-header > div {
  min-width: 0;
}
.card-header {
  flex-wrap: wrap;
}
@media (max-width: 900px) {
  .grid-main,
  .settings-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.menu-toggle.icon-button {
  display: none;
}
@media (max-width: 1151px) {
  .menu-toggle.icon-button {
    display: inline-flex;
  }
}

/* Identifiers remain one semantic unit inside the table's contained scroller. */
.native-id,
.table td.native-id {
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
  font-variant-numeric: tabular-nums;
}
.comparison-pick .key {
  white-space: nowrap;
}
.filters[open] .filter-panel {
  left: auto !important;
  right: 0 !important;
  width: 280px;
  min-width: 0;
  max-width: calc(100vw - 32px);
}

.record-kv dd.native-id {
  max-width: 100%;
  overflow-x: auto;
}

.related-section {
  min-width: 0;
  max-width: 100%;
}
.related-operation {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  min-width: 0;
}
.related-operation > summary,
.related-item > summary,
.related-json > summary {
  cursor: pointer;
  overflow-wrap: anywhere;
  font-size: 12px;
  font-weight: 600;
}
.related-operation > summary::marker,
.related-item > summary::marker,
.related-json > summary::marker {
  color: var(--primary);
}
.related-path {
  display: block;
  margin-top: 6px;
  font-family: ui-monospace, monospace;
  font-size: 10px;
  color: var(--muted);
  font-weight: 400;
  overflow-wrap: anywhere;
}
.related-content {
  padding-top: 16px;
  min-width: 0;
}
.related-item {
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
}
.related-item:last-of-type {
  border-bottom: 0;
}
.related-json {
  margin-top: 16px;
}
.related-operation .inline-info {
  font-size: 11px;
}
.related-item .record-kv {
  font-size: 11px;
}
/* v1.1 capture scope and duplicate planning workspace */
.acquisition-panel{margin:0 0 28px;display:grid;gap:10px;min-width:0}
.acquisition-row{display:flex;align-items:center;gap:14px;padding:17px 21px;border-radius:17px;background:#fff;box-shadow:0 4px 22px #24034208;min-width:0}
.acquisition-row.partial,.acquisition-row.failed,.acquisition-row.paused{background:#fff7ec}
.acquisition-row.complete{background:#f1faf6}
.acquisition-indicator{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border-radius:50%;background:#f0ebff;color:#804895}
.acquisition-row.complete .acquisition-indicator{background:#d9f0e5;color:#206847}
.acquisition-copy{flex:1;min-width:0}.acquisition-copy p{font-size:11px;line-height:1.65;margin:3px 0 0;color:var(--muted);overflow-wrap:anywhere}
.acquisition-title{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.acquisition-title .notice-label{font-size:9px;margin:0}.acquisition-title strong{font-size:13px}
.loading-spinner{height:20px;width:20px;border:2px solid #d9cde7;border-top-color:#804895;border-radius:50%;animation:loading-spin 1s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}
.load-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:26px;margin-top:18px}
.load-config-item{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);min-width:0}
.load-config-item label{font-weight:600;font-size:12px;min-width:0}.load-config-item .key{font-size:10px;font-weight:400}.load-config-item select{width:180px;flex:0 0 180px;font-size:12px}
.estimate-panel{padding:20px;border-radius:16px;background:#f5f2fc}.estimate-panel h3{font-size:16px}.estimate-panel p{font-size:12px;line-height:1.6;margin:10px 0}.estimate-panel details{margin-top:15px}
.duplicate-tabs{margin-bottom:22px}.duplicate-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:20px 0}
.duplicate-metric{text-align:left;padding:20px;cursor:pointer;border:0;color:var(--ink);font-family:inherit}.duplicate-metric span{font-size:11px;line-height:1.5;display:block;color:var(--muted)}.duplicate-metric strong{font-size:29px;display:block;margin-top:10px;font-weight:600}.duplicate-metric.selected{box-shadow:inset 0 0 0 2px #804895}
.duplicate-toolbar .search{flex:1;min-width:180px}.duplicate-toolbar .search .btn{padding:7px 12px}.duplicate-toolbar .search input{min-width:0}.duplicate-toolbar .filter-panel{max-height:min(70vh,700px);overflow:auto}
.batch-toolbar{padding:18px 22px;display:flex;align-items:center;flex-wrap:wrap;gap:12px;background:#faf8ff;border-radius:18px 18px 0 0}.batch-toolbar .btn{font-size:11px}.batch-toolbar .check-row{font-size:11px}.duplicate-count{margin-left:3px}
.master-suggestion{display:flex;align-items:center;gap:20px;justify-content:space-between;padding:20px;border-radius:15px;background:#f4effc;margin:20px 0}.master-suggestion h3{font-size:14px}.master-suggestion p{margin:7px 0 0;line-height:1.6}.master-suggestion .btn{flex-shrink:0}
.duplicate-members{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.duplicate-member{background:#fbfaff;border-radius:16px;padding:20px;min-width:0;box-shadow:inset 0 0 0 1px #eeebf7}.duplicate-member.is-master{background:#f2f9f5;box-shadow:inset 0 0 0 2px #72a98b}.duplicate-member.is-excluded{background:#fafafa;color:#6b6174}
.duplicate-member header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.duplicate-member h3{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.duplicate-member header>div{min-width:0}.duplicate-member-choices{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.duplicate-member-choices .check-row{font-size:11px}
.identity-facts{margin:0;font-size:11px}.identity-facts>div{display:grid;grid-template-columns:minmax(100px,.7fr) minmax(0,1fr);padding:8px 0;gap:10px}.identity-facts dt{color:var(--muted)}.identity-facts dd{margin:0;overflow-wrap:anywhere}.member-impacts{margin-top:12px;font-size:11px}.member-impacts .summary-line{font-size:11px}
.planned-action{margin-top:16px;padding-top:14px;border-top:1px solid #e5e0ef;font-size:11px}.planned-action strong{font-size:10px;text-transform:uppercase;letter-spacing:.04em}.planned-action p{margin:7px 0 0;line-height:1.6}
.comparison-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:14px}.comparison-heading h3{font-size:15px}.comparison-heading p{margin-top:7px;line-height:1.6}.comparison-heading .check-row{font-size:12px}.duplicate-resolutions>.field{margin-top:15px}.duplicate-navigation{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:5px}.cleanup-contract h3{font-size:16px}.cleanup-contract>p{font-size:12px;line-height:1.8}.cleanup-contract .table{margin-top:22px}.cleanup-contract .table td{vertical-align:top}
@media(min-width:1600px){.duplicate-members{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.acquisition-row{flex-wrap:wrap}.acquisition-row>.actions{margin-left:48px}.load-config-grid{grid-template-columns:1fr}.duplicate-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.master-suggestion{flex-direction:column;align-items:flex-start}}
@media(max-width:640px){.acquisition-row{padding:16px;gap:10px}.acquisition-copy{flex-basis:calc(100% - 44px)}.acquisition-title{gap:5px}.acquisition-row>.actions{margin-left:44px}.acquisition-copy p{font-size:10px}.acquisition-title strong{font-size:12px}.load-config-item select{flex-basis:150px;width:150px}.duplicate-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.duplicate-metric{padding:15px}.duplicate-metric strong{font-size:25px}.duplicate-members{grid-template-columns:1fr}.duplicate-member{padding:17px}.master-suggestion{padding:17px}.duplicate-toolbar .search{flex-basis:100%}.batch-toolbar{padding:15px;gap:10px}.comparison-heading{gap:12px}.duplicate-navigation .btn{padding:8px 10px;font-size:11px}.duplicate-tabs .btn{font-size:11px}.duplicate-member header .badge{font-size:9px;padding:5px 7px}.identity-facts>div{grid-template-columns:110px minmax(0,1fr)}}
@media print{body.printing-contract #app{display:none!important}body.printing-contract dialog{position:static;display:block!important;max-height:none!important;width:100%!important;max-width:none!important;box-shadow:none;margin:0;padding:0;overflow:visible}body.printing-contract dialog .dialog-header,body.printing-contract dialog .dialog-footer{display:none!important}body.printing-contract .dialog-content{overflow:visible;padding:0}body.printing-contract dialog::backdrop{display:none}body.printing-contract details{display:block}body.printing-contract details>*{display:block}body.printing-contract .table-scroll{overflow:visible}body.printing-contract .table{min-width:0}body.printing-contract .cleanup-contract pre{white-space:pre-wrap}}
.duplicate-metric+.duplicate-metric{margin-top:0}.duplicate-toolbar .search{display:flex;gap:8px;align-items:center;max-width:650px}.duplicate-toolbar .search input{flex:1;min-width:0}.duplicate-toolbar .search>.btn{flex-shrink:0}
.load-config-item .key{display:block;margin-top:4px;line-height:1.5;color:var(--muted)}
/* v1.2 client decisions: the technical model remains available on demand. */
.field-technical{font-size:10px;color:var(--muted);margin-top:7px;line-height:1.5}.field-technical summary{cursor:pointer;font-weight:400}.field-technical code{display:block;white-space:normal;overflow-wrap:anywhere;margin-top:5px;color:var(--muted)}.technical-fields>summary{cursor:pointer;font-size:13px;font-weight:600}.technical-fields .table{margin-top:16px}.mapping-source{padding:18px;background:#f7f4fc;border-radius:15px;margin-bottom:22px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.mapping-source p{flex-basis:100%;line-height:1.7}.mapping-source .field-technical{flex-basis:100%;margin-top:0}.legacy-contract{margin-top:22px;padding:16px;border-radius:12px;background:#f8f7fb}.legacy-contract>summary{font-size:12px;cursor:pointer}.legacy-contract p{margin-top:12px;line-height:1.7}.legacy-contract pre{margin-top:12px}.required-defaults{margin-top:18px}.required-defaults>.field{margin-bottom:7px}.required-defaults>p{margin-bottom:22px;line-height:1.6}.readiness-item{padding:12px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.8}.readiness-item summary{cursor:pointer}.readiness-item p,.readiness-item ul{margin:10px 0}.technical-fields .field-technical{font-size:10px}.dialog-content .mapping-source .badge{margin-left:auto}
@media(max-width:640px){.mapping-source{padding:16px;gap:8px}.mapping-source .badge{font-size:10px}.technical-fields.card-pad{padding:18px}.field-technical summary{font-size:10px}.required-defaults .field label{line-height:1.5}}
.phase-edit-row{display:flex;gap:14px;align-items:center;justify-content:space-between;margin-top:14px}.phase-edit-row .field{margin:0;flex:1;min-width:0}.phase-edit-row .actions{flex-shrink:0;padding-top:17px}.phase-edit-row .btn{font-size:10px}.required-covered{padding:15px 0}.required-covered p{line-height:1.7;margin-top:7px}.field-technical code{user-select:all}@media(max-width:640px){.phase-edit-row{flex-wrap:wrap}.phase-edit-row .field{flex-basis:100%}.phase-edit-row .actions{padding-top:0;margin-left:auto}}

/* v1.3: a compact workspace for consecutive planning decisions. */
.context-strip{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;padding:9px 12px;margin:0 0 16px;background:#fff;border-radius:12px;box-shadow:0 3px 16px #24034205;min-width:0;font-size:11px;line-height:1.45}
.context-summary{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.context-summary strong{font-size:11px}.context-summary time{font-variant-numeric:tabular-nums}.context-summary .icon{width:15px;height:15px}.context-strip .text-link,.context-strip button{font-size:11px}.context-strip .icon-button{width:28px;height:28px;min-height:28px}.context-strip .badge{font-size:10px;padding:3px 7px}.context-panel{margin:0 0 12px;padding:14px 16px;background:#fff;border-radius:12px;box-shadow:var(--shadow);min-width:0}.context-panel[hidden]{display:none}.context-panel .acquisition-row{padding:0;box-shadow:none;border-radius:0;background:transparent}.context-panel p{font-size:12px;line-height:1.65}.context-panel .actions{margin-top:8px}.context-panel .banner{margin:0}.context-panel .read-only{margin:0}.context-strip .failed,.context-strip .partial,.context-strip .paused{color:var(--warning)}
.mapping-workspace{min-width:0}.mapping-workspace .entity-mobile{display:block;max-width:380px;margin-bottom:12px}.mapping-workspace .entity-mobile .field{margin:0}.mapping-workspace .entity-rail{display:none}.mapping-workspace .data-layout{display:block}.mapping-workspace>.card{border-radius:16px}.mapping-workspace .tabs{padding-top:0}.mapping-workspace .tabs a{padding-top:13px;padding-bottom:13px}
.decision-workbench,.workbench-list{min-width:0;max-width:100%}.workbench-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;padding:12px 14px;border-bottom:1px solid var(--line);font-size:12px}.workbench-toolbar .field{margin:0;min-width:110px}.workbench-toolbar input[type=search]{min-width:160px;flex:1}.workbench-toolbar label{font-size:11px}.workbench-toolbar input,.workbench-toolbar select{padding:7px 10px;min-height:34px;max-width:100%;font-size:12px;border:1px solid #ddd4e8;border-radius:8px;background:#fff}.workbench-toolbar .btn{padding:7px 11px;font-size:10px;min-height:32px}.workbench-toolbar .search{flex:1;min-width:180px}.workbench-toolbar .search input{width:100%}.workbench-toolbar .toolbar-count{font-variant-numeric:tabular-nums;color:var(--muted)}
.workbench-row{min-width:0;max-width:100%;padding:12px 14px;border-bottom:1px solid var(--line);background:#fff}.workbench-row:last-child{border-bottom:0}.workbench-row:focus-within{background:#fdfbff}.workbench-summary{display:grid;grid-template-columns:minmax(160px,1.2fr) minmax(130px,.9fr) minmax(180px,1.2fr) minmax(140px,1fr) auto;gap:10px 14px;align-items:start;min-width:0}.workbench-summary>*{min-width:0}.workbench-source strong,.workbench-source .name{font-size:12px;font-weight:650;line-height:1.5}.workbench-source p,.workbench-source .cell-sub{font-size:11px;line-height:1.5;margin-top:3px}.workbench-source .field-technical{font-size:10px;margin-top:3px}.workbench-source .field-technical code{margin:0}
.workbench-row .field{margin:0 0 8px}.workbench-row label{display:block;font-size:10px;font-weight:600;line-height:1.4;margin-bottom:4px}.workbench-row input:not([type=radio]):not([type=checkbox]),.workbench-row select,.workbench-row textarea{min-width:0;max-width:100%;width:100%;min-height:34px;padding:6px 9px;font-size:12px;line-height:1.5;border:1px solid #ddd4e8;border-radius:8px;background:#fff}.workbench-row textarea{min-height:34px;resize:vertical}.workbench-row input[type=checkbox],.workbench-row input[type=radio]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;vertical-align:middle}.workbench-row input:disabled,.workbench-row select:disabled,.workbench-row textarea:disabled{background:#f8f7fb;color:var(--muted);opacity:.8}.inline-note label{font-size:10px}.inline-note textarea{height:34px}.inline-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap}.inline-actions .btn,.workbench-row>.btn{min-height:32px;padding:7px 10px;font-size:10px;letter-spacing:.15px}.inline-actions .text-link{font-size:11px}.inline-status{font-size:10px;line-height:1.5;overflow-wrap:anywhere;color:var(--muted)}.inline-status .badge{font-size:9px;padding:3px 6px}.inline-dirty{font-size:10px;color:var(--warning)}.inline-error{font-size:12px;line-height:1.6;color:var(--danger);margin-top:8px;overflow-wrap:anywhere}.inline-error:empty{display:none}.inline-editor{min-width:0}.inline-details{margin:8px 0 0;min-width:0}.inline-details>summary{cursor:pointer;font-size:11px;color:var(--hover);padding:3px 0}.inline-details[open]>summary{margin-bottom:10px}.inline-details .form-grid{gap:10px 14px}.inline-details .form-section{margin:10px 0;padding-top:12px}.inline-details .form-section h3{font-size:12px}.inline-details .section-desc,.inline-details .small{font-size:11px;line-height:1.6}.inline-details .required-defaults>.field{margin:0 0 8px}.inline-details .mapping-source{padding:10px;margin:0 0 12px;border-radius:10px}.workbench-row .table{min-width:600px}.workbench-row .table th,.workbench-row .table td{padding:8px 10px;font-size:11px}.workbench-row .table input,.workbench-row .table select{min-width:100px}.workbench-row .legacy-contract{margin-top:10px;padding:10px}.workbench-row .legacy-contract pre{white-space:pre-wrap;overflow-wrap:anywhere}.workbench-row .field-technical code{overflow-wrap:anywhere}
.duplicate-workbench-card{margin-bottom:14px;background:white;border-radius:14px;box-shadow:var(--shadow);min-width:0;max-width:100%;overflow:hidden}.duplicate-workbench-card .workbench-row{padding:0;border:0}.duplicate-workbench-card .duplicate-group-header{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:10px 14px;background:#fcfbff;border-bottom:1px solid var(--line)}.duplicate-workbench-card .duplicate-group-header h2,.duplicate-workbench-card .duplicate-group-header h3{font-size:13px}.duplicate-workbench-card .duplicate-group-header .inline-status{margin-left:auto}.duplicate-workbench-card .duplicate-members-table{width:100%;border-collapse:collapse;min-width:820px;font-size:11px}.duplicate-workbench-card .duplicate-members-table th,.duplicate-workbench-card .duplicate-members-table td{padding:7px 9px;border-bottom:1px solid var(--line);vertical-align:top}.duplicate-workbench-card .duplicate-members-table th{background:#fcfbff;color:var(--muted);font-size:10px;text-align:left;font-weight:600}.duplicate-workbench-card .duplicate-members-table .master{background:#f0faf4}.duplicate-workbench-card .duplicate-members-table .excluded{color:#8a7e98;background:#faf9fc}.duplicate-workbench-card .duplicate-members-table input{accent-color:var(--primary)}.duplicate-workbench-card .duplicate-members-table .numeric{text-align:right;font-variant-numeric:tabular-nums}.duplicate-workbench-card .duplicate-group-actions{display:grid;grid-template-columns:minmax(170px,.9fr) minmax(180px,1.6fr) auto;align-items:start;gap:10px;padding:12px 14px}.duplicate-workbench-card .inline-details{padding:0 14px 12px}.duplicate-workbench-card .inline-error{padding:0 14px 12px}.duplicate-workbench-card .inline-status{padding:0 14px 6px}.duplicate-workbench-card .duplicate-group-header .inline-status{padding:0}.duplicate-workbench-card .duplicate-master-label{color:var(--success);font-weight:600}.duplicate-workbench-card .table-scroll{border-radius:0}.duplicate-workbench-card .identity-facts{font-size:11px}.duplicate-workbench-card .field .check-row{font-size:11px}
@media(min-width:1152px){.main:has(.decision-workbench),.main:has(.mapping-workspace),.main:has(.duplicate-workbench-card){padding:22px 24px 36px}.main:has(.decision-workbench) .page-header,.main:has(.mapping-workspace) .page-header,.main:has(.duplicate-workbench-card) .page-header{margin-bottom:14px}.main:has(.decision-workbench) .page-header h1,.main:has(.mapping-workspace) .page-header h1,.main:has(.duplicate-workbench-card) .page-header h1{font-size:25px}}
@media(max-width:1280px){.workbench-summary{grid-template-columns:minmax(150px,1fr) minmax(130px,1fr) minmax(180px,1.3fr)}.workbench-summary>.inline-note{grid-column:1/3}.workbench-summary>.inline-actions{align-self:end}.duplicate-workbench-card .duplicate-group-actions{grid-template-columns:minmax(170px,1fr) minmax(180px,1.5fr)}.duplicate-workbench-card .duplicate-group-actions>.inline-actions{grid-column:1/-1}}
@media(max-width:640px){.context-strip{padding:8px 10px;gap:7px;font-size:10px;margin-bottom:12px}.context-summary{flex-basis:100%;justify-content:space-between;gap:5px}.context-panel{padding:12px}.mapping-workspace .entity-mobile{max-width:none}.workbench-toolbar{padding:10px;gap:8px}.workbench-toolbar .search,.workbench-toolbar input[type=search]{flex-basis:100%}.workbench-row{padding:12px 10px}.workbench-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.workbench-summary>.workbench-source{grid-column:1/-1}.workbench-summary>.inline-note{grid-column:1/-1}.workbench-summary>.inline-actions{grid-column:1/-1;justify-content:flex-end}.workbench-row input:not([type=radio]):not([type=checkbox]),.workbench-row select,.workbench-row textarea{font-size:13px;min-height:38px}.inline-actions .btn{min-height:36px;font-size:10px}.duplicate-workbench-card .duplicate-group-actions{grid-template-columns:minmax(0,1fr);padding:10px}.duplicate-workbench-card .duplicate-group-actions>.inline-actions{grid-column:auto}.duplicate-workbench-card .duplicate-group-header{padding:10px}.duplicate-workbench-card .duplicate-group-header .inline-status{margin-left:0;flex-basis:100%}.inline-details .form-grid{grid-template-columns:minmax(0,1fr)}.workbench-toolbar .field{flex:1 1 100px}}
.workbench-row-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:5px 12px;margin:0 0 8px}.workbench-row-header h3{font-size:12px;line-height:1.5}.workbench-row-header .mapping-source{display:block;flex:1 1 160px;margin:0;padding:0;background:transparent;border-radius:0}.workbench-row-header:has(.mapping-source)>h3{display:none}.workbench-row-header .mapping-source strong{font-size:12px}.workbench-row-header .mapping-source p{margin:3px 0;font-size:10px;line-height:1.45}.workbench-row-header .mapping-source .badge{font-size:9px;margin-left:6px;padding:2px 5px}.workbench-row-header .field-technical{font-size:10px;margin:0}.workbench-row.inline-dirty{font-size:inherit;color:var(--ink)}.workbench-row.inline-dirty .inline-status{color:var(--warning)}.inline-decision-form>.workbench-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 12px}.inline-decision-form .inline-details{margin-top:0}.workbench-row>.inline-actions{margin-top:8px}.workbench-row>.inline-actions>.text-link{font-size:10px}.workbench-toolbar>label{display:grid;gap:3px;font-size:10px;font-weight:600}.workbench-toolbar>label:first-child{flex:1;min-width:180px}.workbench-count{font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted)}
@media(min-width:1000px){.workbench-row:not(.duplicate-workbench-card){display:grid;grid-template-columns:minmax(140px,.9fr) minmax(0,3fr) 112px;gap:8px 14px;align-items:start}.workbench-row:not(.duplicate-workbench-card)>.workbench-row-header{display:block;margin:0}.workbench-row:not(.duplicate-workbench-card)>.workbench-row-header .inline-status{display:block;margin-top:4px}.workbench-row:not(.duplicate-workbench-card)>.inline-actions{margin:0;align-content:start;gap:5px}.workbench-row:not(.duplicate-workbench-card)>.inline-actions>.btn{width:100%}.workbench-row:not(.duplicate-workbench-card)>.inline-error{grid-column:2/-1}.workbench-row:not(.duplicate-workbench-card)>.inline-error:empty{display:none}}
@media(max-width:640px){.inline-decision-form>.workbench-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-decision-form .inline-note{grid-column:1/-1}.workbench-row-header{display:block}.workbench-row-header>.inline-status{display:block;margin-top:5px}}
/* The reusable editor keeps source, controls and actions in its form grid. */
.workbench-row:not(.duplicate-workbench-card){display:block}.inline-decision-form>.workbench-summary{grid-template-columns:minmax(170px,1.15fr) minmax(120px,.8fr) minmax(170px,1.1fr) minmax(140px,1fr) 176px;align-items:start}.inline-decision-form>.workbench-summary>.inline-note{grid-column:auto}.inline-decision-form>.workbench-summary>.inline-actions{grid-column:auto;align-self:start;margin-top:17px}.inline-decision-form>.workbench-summary>.workbench-row-header{display:flex;flex-direction:column;gap:4px;margin:0}.inline-decision-form>.workbench-summary>.workbench-row-header .mapping-source{order:-1;flex:auto}.inline-decision-form .inline-actions>.btn{padding:7px 9px;min-height:32px}.inline-decision-form .inline-actions>.text-link{font-size:10px}.workbench-row .inline-details{margin-top:5px}.context-toggle{display:inline-flex;align-items:center;gap:7px;text-align:left;padding:3px 5px;border-radius:6px;color:var(--muted);max-width:100%;overflow-wrap:anywhere}.context-toggle:hover{background:var(--soft);color:var(--hover)}.context-toggle::after{content:'⌄';color:var(--primary);font-size:13px}.context-toggle[aria-expanded=true]::after{content:'⌃'}
@media(max-width:1280px) and (min-width:641px){.inline-decision-form>.workbench-summary{grid-template-columns:minmax(145px,1fr) minmax(120px,.9fr) minmax(170px,1.2fr)}.inline-decision-form>.workbench-summary>.inline-note{grid-column:1/3}.inline-decision-form>.workbench-summary>.inline-actions{grid-column:3;margin-top:17px}.inline-decision-form>.workbench-summary>.workbench-row-header{grid-column:auto}}
@media(max-width:640px){.inline-decision-form>.workbench-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-decision-form>.workbench-summary>.workbench-row-header{grid-column:1/-1}.inline-decision-form>.workbench-summary>.inline-note{grid-column:1/-1}.inline-decision-form>.workbench-summary>.inline-actions{grid-column:1/-1;margin-top:0}.context-toggle{padding:3px 2px;font-size:10px}.context-toggle::after{font-size:12px}}
.context-toggle.context-failed,.context-toggle.context-partial,.context-toggle.context-paused,.context-toggle.context-interrupted{color:var(--warning);background:#fff5e7}.context-toggle.context-running,.context-toggle.context-queued{color:var(--hover);background:var(--soft)}.context-toggle.context-complete,.context-toggle.context-completed{color:var(--success)}.context-toggle .icon{width:14px;height:14px}.inline-basis-warning{padding:8px 10px;margin:8px 0;background:#fff5e7;border-radius:8px;font-size:11px;color:var(--warning)}
.acquisition-panel:not(:has(>.acquisition-row:not([hidden]))){display:none;margin:0}.workbench-scopebar{display:flex;align-items:flex-end;gap:12px 20px;flex-wrap:wrap;margin:0 0 10px}.workbench-scopebar>.phase-rail{margin:0;flex:1 1 300px}.workbench-scopebar>.entity-mobile{display:block;flex:1 1 280px;max-width:380px;margin:0}.workbench-scopebar>.entity-mobile .field{margin:0}.workbench-scopebar select{min-height:34px;padding-top:6px;padding-bottom:6px}.workbench-row-header .mapping-source .field-technical{display:none}.inline-detail-body>.field-technical{margin:6px 0 12px}.context-missing-target{font-size:11px;color:var(--warning);display:inline-flex;gap:7px;align-items:center}.context-missing-target a{font-weight:600}.workbench-notice{padding:8px 10px;margin:8px 0;background:#fff5e7;border-radius:8px;font-size:11px;line-height:1.6;color:var(--warning)}
@media(max-width:640px){.workbench-scopebar{gap:8px}.workbench-scopebar>.entity-mobile{max-width:none;flex-basis:100%}.workbench-scopebar>.phase-rail{flex-basis:100%}}

.duplicate-workbench-card .duplicate-members{display:block;gap:0}
