:root {
  --bg: #f4f2ed;
  --panel: #fffdf8;
  --panel-soft: #faf7f1;
  --line: #dfd8cc;
  --text: #242322;
  --muted: #777068;
  --amber: #a57c4d;
  --blue: #566f86;
  --green: #5f8068;
  --teal: #637f7a;
  --indigo: #6b6678;
  --red: #a75650;
  --orange: #b08a55;
  --gray: #a6a098;
  --header: #242322;
  --accent: #a99c8b;
  --shadow: 0 12px 26px rgba(52, 45, 36, 0.08);
  --app-sticky-top: 92px;
  --timeline-plan-head-height: 50px;
  --timeline-brand-head-height: 31px;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: Arial, "Microsoft YaHei", "PingFang SC", sans-serif;
  font-size: 14px;
}

body.auth-checking .topbar,
body.auth-checking .app-layout,
body.auth-locked .topbar,
body.auth-locked .app-layout {
  display: none;
}

body.authenticated .global-auth-gate {
  display: none;
}

.global-auth-gate {
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  place-items: center;
  padding: 24px;
  background: #eef1f0;
}

.global-auth-panel {
  width: min(100%, 420px);
  padding: 34px 32px 30px;
  background: #ffffff;
  border: 1px solid #d8ddda;
  border-top: 4px solid #242322;
  border-radius: 8px;
  box-shadow: 0 12px 32px rgba(36, 35, 34, 0.08);
  text-align: center;
}

.global-auth-brand {
  color: #4f6758;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0;
}

.global-auth-panel h1 {
  display: block;
  margin: 10px 0 0;
  font-size: 24px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.global-auth-panel p {
  min-height: 44px;
  margin: 14px 0 22px;
  color: #636a66;
  line-height: 1.6;
  overflow-wrap: anywhere;
}

.global-auth-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.global-auth-actions button {
  width: 100%;
  min-width: 0;
}

body.auth-checking .global-auth-actions {
  visibility: hidden;
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 28px;
  background: #fffdf8;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 2px 18px rgba(52, 45, 36, 0.06);
}

.brand { display: flex; align-items: center; gap: 12px; min-width: 260px; }
.brand-mark {
  width: 2px;
  height: 40px;
  border-radius: 0;
  background: var(--text);
}
h1 {
  display: flex;
  align-items: center;
  gap: 13px;
  margin: 0;
  font-size: 19px;
  line-height: 1.2;
  font-weight: 700;
}
.brand-word {
  font-size: 27px;
  font-weight: 400;
}
.brand-divider {
  width: 1px;
  height: 18px;
  background: var(--line);
}
.brand p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }

.actions { display: flex; align-items: end; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.global-user-area {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 0 0 0 10px;
  border-left: 1px solid var(--line);
}
.global-user-area[hidden] { display: none; }
.global-user-area span {
  max-width: 160px;
  color: var(--text);
  font-size: 13px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.global-user-area button {
  height: 30px;
  padding: 0 10px;
  font-size: 12px;
}
label { display: grid; gap: 4px; color: var(--muted); font-size: 12px; }
input, select, textarea, button {
  height: 34px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: #fffdf8;
  color: var(--text);
  font: inherit;
}
input, select { padding: 0 8px; }
textarea {
  min-height: 96px;
  padding: 9px 10px;
  resize: vertical;
  line-height: 1.6;
}
button {
  padding: 0 14px;
  background: var(--header);
  border-color: var(--header);
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}
button:hover { background: #383532; border-color: #383532; }
button:disabled { cursor: not-allowed; opacity: 0.62; }
button.secondary {
  background: #fffdf8;
  border-color: var(--line);
  color: var(--text);
}
button.secondary:hover { background: var(--panel-soft); border-color: #c9beb0; }
fieldset {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 0;
  border: 0;
}
fieldset:disabled { opacity: 0.62; }

.wrap { width: 100%; max-width: none; margin: 0; padding: 14px 24px 42px; }
.app-layout {
  display: grid;
  grid-template-columns: 188px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.review-sop-page {
  display: grid;
  gap: 16px;
}

.review-sop-page > * {
  min-width: 0;
}

.review-center-page {
  align-content: start;
  min-width: 0;
  overflow-x: clip;
}

.review-center-head {
  border-left: 4px solid #2d5794;
}

.review-center-tabs {
  position: sticky;
  top: 74px;
  z-index: 9;
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 6px;
  background: #f4efe6;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: var(--shadow);
}

.review-center-tab {
  min-width: 118px;
  padding: 9px 14px;
  color: #55483b;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  font: inherit;
  font-weight: 900;
  cursor: pointer;
}

.review-center-tab:hover,
.review-center-tab:focus-visible {
  background: #fffdf8;
  border-color: #d7cab9;
  outline: none;
}

.review-center-tab.active {
  color: #fff;
  background: #25221f;
  border-color: #25221f;
}

.review-center-panel {
  display: grid;
  gap: 16px;
  min-width: 0;
}

.review-center-panel[hidden] {
  display: none;
}

.review-center-panel[data-review-center-panel="sop"]:not([hidden]) {
  display: grid;
  gap: 14px;
}

.review-sop-inner-head { order: 0; }
.review-sop-flow { order: 1; }
.review-sop-navigator { order: 2; }
.review-sop-principles { order: 2; }
.review-sop-method-card { order: 2; }
.review-sop-redlines { order: 3; }
.review-sop-category-review { order: 4; }
.review-sop-fabric-tests { order: 5; }
.review-sop-category-compact { order: 6; }
.review-sop-core-sizes { order: 7; }
.review-sop-final-check { order: 10; }

.review-workbench-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
  padding: 12px 14px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-left: 4px solid #5f8068;
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-workbench-toolbar div {
  display: grid;
  gap: 3px;
}

.review-workbench-toolbar span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.review-workbench-toolbar h3 {
  margin: 0;
  color: var(--text);
  font-size: 19px;
  line-height: 1.2;
}

.review-workbench-toolbar strong {
  color: #47664f;
  font-size: 13px;
  line-height: 1.4;
  text-align: right;
}

.review-workbench-intro,
.review-workbench-summary,
.review-recap-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
}

.review-workbench-intro article,
.review-workbench-summary article,
.review-recap-summary article {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 12px 14px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-workbench-intro span,
.review-workbench-summary span,
.review-recap-summary span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.review-workbench-intro strong {
  color: var(--text);
  font-size: 16px;
}

.review-workbench-filter-bar {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) repeat(3, minmax(120px, 0.65fr));
  gap: 10px;
  align-items: end;
  padding: 12px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-workbench-filter-bar label {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.review-workbench-filter-bar label span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.review-workbench-filter-bar input,
.review-workbench-filter-bar select {
  width: 100%;
  min-height: 34px;
  padding: 6px 9px;
  color: var(--text);
  background: #fff;
  border: 1px solid #d8cdbd;
  border-radius: 4px;
  font: inherit;
  font-size: 13px;
}

.review-workbench-filter-bar input:focus,
.review-workbench-filter-bar select:focus {
  border-color: #2d5794;
  outline: 2px solid rgba(45, 87, 148, 0.16);
  outline-offset: 1px;
}

.review-wave-combobox {
  position: relative;
  min-width: 0;
}

.review-workbench-filter-bar .review-wave-combobox input {
  padding-right: 32px;
}

.review-workbench-filter-bar .review-wave-clear {
  position: absolute;
  z-index: 2;
  top: 50%;
  right: 5px;
  width: 24px;
  min-height: 24px;
  padding: 0;
  color: #6c6258;
  background: transparent;
  border: 0;
  border-radius: 3px;
  font-size: 19px;
  line-height: 1;
  transform: translateY(-50%);
}

.review-workbench-filter-bar .review-wave-clear:hover,
.review-workbench-filter-bar .review-wave-clear:focus-visible {
  color: var(--text);
  background: #f1ebe1;
}

.review-wave-options {
  position: absolute;
  z-index: 40;
  top: calc(100% + 4px);
  left: 0;
  width: 100%;
  min-width: 170px;
  max-height: 280px;
  padding: 4px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid #cfc1ae;
  border-radius: 4px;
  box-shadow: 0 12px 28px rgba(42, 35, 28, 0.18);
}

.review-wave-option {
  display: block;
  width: 100%;
  min-height: 34px;
  padding: 7px 9px;
  color: var(--text);
  background: #fff;
  border: 0;
  border-radius: 3px;
  text-align: left;
}

.review-wave-option:hover,
.review-wave-option.active {
  color: #173e75;
  background: #edf3fa;
}

.review-wave-option.selected {
  font-weight: 900;
}

.review-wave-empty {
  padding: 12px 9px;
  color: var(--muted);
  font-size: 12px;
  text-align: center;
}

.review-workbench-status-buttons {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.review-workbench-status-buttons button {
  min-height: 34px;
  padding: 7px 12px;
  color: #5f5142;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 999px;
}

.review-workbench-status-buttons button.active {
  color: #fff;
  background: var(--header);
  border-color: var(--header);
}

.review-workbench-filter-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
  min-width: 0;
}

.review-workbench-filter-actions span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.review-workbench-filter-actions button {
  min-height: 34px;
  white-space: nowrap;
}

.review-workbench-intro p,
.review-workbench-summary em,
.review-recap-summary em {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  line-height: 1.5;
}

.review-workbench-summary strong,
.review-recap-summary strong {
  color: var(--text);
  font-size: 24px;
  line-height: 1;
}

.review-workbench-summary article.late strong,
.review-recap-summary article.late strong {
  color: #9d4f49;
}

.review-workbench-control-row {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
}

.review-workbench-priority {
  display: grid;
  gap: 8px;
  padding: 12px 14px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-left: 3px solid #8d7045;
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-workbench-priority.is-empty {
  border-left-color: #8a9a77;
}

.review-workbench-priority > header,
.review-workbench-priority.is-empty > div {
  display: flex;
  gap: 10px;
  align-items: baseline;
  justify-content: space-between;
}

.review-workbench-priority strong {
  color: var(--text);
  font-size: 15px;
}

.review-workbench-priority span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.review-workbench-priority > header > b {
  flex: 0 0 auto;
  padding: 3px 8px;
  color: #6d5842;
  background: #f4efe6;
  border: 1px solid #d8cdbd;
  border-radius: 999px;
  font-size: 12px;
}

.review-workbench-priority-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  gap: 8px;
}

.review-workbench-priority-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  min-width: 0;
  padding: 8px;
  background: #fff;
  border: 1px solid #e5ded2;
  border-radius: 5px;
}

.review-workbench-priority-row > div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.review-workbench-priority-row strong,
.review-workbench-priority-row span:not(.review-workbench-priority-tag) {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.review-workbench-priority-row strong {
  font-size: 13px;
}

.review-workbench-priority-tag {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 7px;
  color: #6d5842;
  background: #fff4dd;
  border: 1px solid #e4cfaa;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}

.review-workbench-priority-tag.late {
  color: #9d4f49;
  background: #fff1ef;
  border-color: #edc9c4;
}

.review-workbench-board,
.review-recap-board,
.review-workbench-status-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px;
  padding: 12px 16px;
  margin-bottom: 4px;
  background: #f3efe7;
  border: 1px solid var(--line);
  border-left: 3px solid #10b981;
  border-radius: 6px;
}

.review-workbench-status-summary strong {
  font-size: 16px;
  color: var(--text);
}

.review-workbench-status-summary span {
  font-size: 13px;
  color: #6b675f;
}

.review-workbench-wave-list {
  display: grid;
  gap: 12px;
  flex: 1 1 100%;
  width: 100%;
}

.review-workbench-wave {
  overflow: hidden;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: var(--shadow);
}

.review-workbench-wave summary {
  display: flex;
  justify-content: flex-start;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  background: #fffdf8;
  color: var(--text);
  border-bottom: 1px solid var(--line);
  cursor: pointer;
  list-style: none;
}

.review-workbench-wave summary::-webkit-details-marker {
  display: none;
}

.review-workbench-wave summary::before {
  content: '展开';
  order: 2;
  flex: 0 0 auto;
  min-width: 42px;
  padding: 4px 7px;
  color: #6d5842;
  background: #f4efe6;
  border: 1px solid #d8cdbd;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  text-align: center;
}

.review-workbench-wave[open] summary::before {
  content: '收起';
}

.review-workbench-wave summary > div {
  order: 1;
  flex: 0 1 auto;
  min-width: 0;
  text-align: left;
}

.review-workbench-wave h3 {
  margin: 0;
  font-size: 17px;
  text-align: left;
}

.review-workbench-wave p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
  text-align: left;
}

.review-workbench-wave summary > span {
  order: 3;
  margin-left: auto;
  padding: 5px 8px;
  color: #4c6b56;
  background: #edf6ed;
  border: 1px solid #cfe1cf;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.review-workbench-wave summary > span.late {
  color: #9d4f49;
  background: #fff1ef;
  border-color: #edc9c4;
}

.review-workbench-rows {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 10px;
  padding: 10px;
  align-items: stretch;
}

.review-workbench-row {
  display: grid;
  grid-template-rows: auto auto auto auto;
  gap: 9px;
  align-content: start;
  min-width: 0;
  min-height: 0;
  padding: 10px;
  background: #fffdf8;
  border: 1px solid #e5ded2;
  border-left: 3px solid #8a9a77;
  border-radius: 6px;
}

.review-workbench-row.late {
  border-left-color: #9d4f49;
  background: #fff7f5;
}

.review-workbench-row.future {
  border-left-color: #b4874f;
}

.review-workbench-card-main {
  display: block;
  min-width: 0;
  height: 300px;
  overflow: hidden;
  background: #f4efe6;
  border: 1px solid #eee3d2;
  border-radius: 5px;
}

.review-workbench-row img {
  display: block;
  width: 100%;
  height: 300px;
  object-fit: contain;
  object-position: center center;
  background: #f4efe6;
}

.review-workbench-style {
  position: static;
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 0 2px;
  background: transparent;
  border: 0;
  box-shadow: none;
}

.review-workbench-style strong,
.review-workbench-style span,
.review-workbench-style small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.review-workbench-style strong {
  color: var(--text);
  font-size: 14px;
  line-height: 1.2;
}

.review-workbench-style span,
.review-workbench-style small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.25;
}

.review-standard-chip,
.review-status-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 26px;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.review-workbench-card-footer {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
  padding-top: 8px;
  border-top: 1px solid #eee6dc;
}

.review-workbench-card-badges {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  gap: 6px;
  min-width: 0;
}

.review-workbench-saved-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 10px;
  min-height: 18px;
  color: #617064;
  font-size: 11px;
  line-height: 1.4;
}

.review-workbench-saved-meta:empty {
  display: none;
}

.review-workbench-saved-meta strong {
  color: #3f654a;
}

.review-workbench-saved-meta.followup strong {
  color: #9d4f49;
}

.review-workbench-saved-meta.calibration strong,
.review-workbench-saved-meta.incomplete strong {
  color: #8b6a35;
}

.review-workbench-row.approved {
  border-left-color: #5d8d69;
}

.review-workbench-row.followup {
  border-left-color: #a7544d;
  background: #fff8f7;
}

.review-workbench-row.calibration,
.review-workbench-row.incomplete {
  border-left-color: #b4874f;
}

.review-workbench-row button {
  flex: 0 0 auto;
  min-height: 30px;
  padding: 5px 10px;
}

.review-standard-chip {
  color: #7b5834;
  background: #fff4dd;
  border: 1px solid #e4cfaa;
}

.review-status-pill {
  color: #4f7259;
  background: #e4efe2;
  border: 1px solid #c8dabe;
}

.review-status-pill.late {
  color: #9d4f49;
  background: #f4dedb;
  border-color: #dfbdb8;
}

.review-status-pill.future,
.review-status-pill.pending,
.review-status-pill.progress {
  color: #7b5834;
  background: #f8edda;
  border-color: #e1cba8;
}

.review-recap-head {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 14px 16px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: var(--shadow);
}

.review-recap-head h2 {
  margin: 0;
}

.review-recap-head p {
  margin: 6px 0 0;
  color: var(--muted);
  line-height: 1.55;
}

.review-recap-filter-bar {
  display: grid;
  grid-template-columns: 150px 160px 160px 140px minmax(220px, 1fr) auto auto;
  gap: 10px;
  align-items: end;
  padding: 12px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: var(--shadow);
}

.review-recap-filter-bar label {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.review-recap-filter-bar label > span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.review-recap-filter-bar select,
.review-recap-filter-bar input {
  width: 100%;
  min-width: 0;
}

.review-recap-issue-list {
  display: grid;
  gap: 10px;
}

.review-recap-issue-row {
  display: grid;
  grid-template-columns: 72px minmax(160px, 0.8fr) minmax(300px, 1.55fr) auto;
  gap: 12px;
  align-items: center;
  min-width: 0;
  padding: 10px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-left: 4px solid #b4544d;
  border-radius: 6px;
}

.review-recap-issue-row.calibration {
  border-left-color: #bd873d;
}

.review-recap-issue-row.closed {
  border-left-color: #62886d;
  background: #fbfdf9;
}

.review-recap-issue-row > img {
  width: 72px;
  height: 88px;
  object-fit: cover;
  background: #f3eee5;
  border: 1px solid #e5dac8;
  border-radius: 4px;
}

.review-recap-issue-style,
.review-recap-issue-detail {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.review-recap-issue-style strong,
.review-recap-issue-detail b {
  overflow: hidden;
  color: var(--text);
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.review-recap-issue-style span,
.review-recap-issue-style small,
.review-recap-issue-detail small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.review-recap-issue-detail > div {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.review-recap-issue-detail p {
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  color: #4e473d;
  font-size: 13px;
  line-height: 1.45;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.review-recap-issue-state {
  flex: 0 0 auto;
  padding: 3px 7px;
  color: #9d4f49;
  background: #fff0ee;
  border: 1px solid #ebc6c1;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
}

.review-recap-issue-state.calibration {
  color: #8b6229;
  background: #fff6e5;
  border-color: #ead0a1;
}

.review-recap-issue-state.closed {
  color: #416d4c;
  background: #edf7ee;
  border-color: #cce2cf;
}

.review-recap-issue-actions {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  gap: 7px;
  justify-content: end;
}

.review-recap-delete {
  padding: 6px 8px;
  color: #9d4f49;
  background: #fff8f7;
  border: 1px solid #dfbdb8;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.review-recap-delete:disabled {
  cursor: not-allowed;
  opacity: 0.6;
}

.review-center-load-error {
  display: grid;
  justify-items: center;
  gap: 8px;
  padding: 28px 18px;
  color: #7a4b46;
  text-align: center;
  background: #fff8f7;
  border: 1px solid #e5c5c1;
  border-radius: 6px;
}

.review-center-load-error strong {
  color: #8b3f38;
}

.review-center-load-error button {
  min-height: 34px;
}

@media (max-width: 980px) {
  .review-center-tabs {
    flex-wrap: wrap;
  }

  .review-center-tab {
    flex: 1 1 128px;
  }

  .review-workbench-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .review-workbench-toolbar strong {
    text-align: left;
  }

  .review-workbench-filter-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-recap-filter-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-recap-search-label,
  .review-recap-filter-bar > button {
    grid-column: auto;
  }

  .review-recap-issue-row {
    grid-template-columns: 68px minmax(150px, 0.8fr) minmax(0, 1.4fr);
  }

  .review-recap-issue-row > img {
    width: 68px;
  }

  .review-recap-issue-actions {
    grid-column: 2 / -1;
    grid-template-columns: repeat(2, max-content);
    justify-content: start;
  }

  .review-workbench-search-label,
  .review-workbench-control-row {
    grid-column: 1 / -1;
  }

  .review-workbench-status-buttons {
    flex-wrap: wrap;
  }

  .review-workbench-control-row {
    grid-template-columns: 1fr;
  }

  .review-workbench-priority > header,
  .review-workbench-priority.is-empty > div {
    align-items: flex-start;
    flex-direction: column;
  }

  .review-workbench-filter-actions {
    justify-content: flex-start;
    min-width: 0;
    flex-wrap: wrap;
  }

  .review-workbench-row {
    min-height: 0;
  }

  .review-workbench-card-main {
    height: 240px;
  }

  .review-workbench-row img {
    height: 240px;
  }

  .review-workbench-card-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .review-workbench-row button {
    width: 100%;
  }

  .review-recap-grid {
    grid-template-columns: 1fr;
  }
}

.review-sop-head .room-page-meta strong {
  color: var(--red);
}

.review-sop-hero {
  display: grid;
  align-items: center;
  min-height: 132px;
  padding: 22px 24px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-left: 4px solid var(--red);
  box-shadow: var(--shadow);
}

.review-sop-hero div {
  display: grid;
  gap: 8px;
}

.review-sop-hero span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.review-sop-hero strong {
  max-width: 980px;
  font-size: 26px;
  line-height: 1.35;
  font-weight: 800;
}

.review-sop-flow {
  display: grid;
  grid-template-columns: minmax(110px, 130px) repeat(5, minmax(118px, 1fr));
  gap: 8px;
  align-items: stretch;
  padding: 10px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-sop-flow > strong {
  display: grid;
  align-content: center;
  padding: 0 8px;
  color: #1f3f6e;
  font-size: 14px;
  line-height: 1.35;
}

.review-sop-flow a {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: 2px 7px;
  align-content: center;
  min-height: 52px;
  padding: 7px 8px;
  color: var(--text);
  text-decoration: none;
  background: #f7efe1;
  border: 1px solid #e4d4bf;
  border-radius: 6px;
}

.review-sop-flow a:hover,
.review-sop-flow a:focus-visible {
  background: #fff7e8;
  border-color: #c9a978;
  outline: none;
}

.review-sop-flow b {
  grid-row: span 2;
  display: inline-grid;
  place-items: center;
  width: 26px;
  height: 26px;
  color: #fff;
  background: #2d5794;
  border-radius: 50%;
  font-size: 12px;
}

.review-sop-flow span {
  font-weight: 900;
  line-height: 1.25;
}

.review-sop-flow small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.review-sop-navigator {
  position: sticky;
  top: 126px;
  z-index: 8;
  display: grid;
  grid-template-columns: minmax(220px, 0.9fr) minmax(360px, 1.5fr) auto;
  gap: 10px;
  align-items: end;
  padding: 10px;
  background: rgba(255, 253, 248, 0.97);
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.06);
}

.review-sop-navigator label {
  display: grid;
  gap: 4px;
}

.review-sop-navigator label span,
.review-sop-navigator-actions span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.review-sop-navigator input {
  width: 100%;
  min-height: 34px;
  padding: 6px 9px;
  color: var(--text);
  background: #fff;
  border: 1px solid #d8cdbd;
  border-radius: 4px;
  font: inherit;
}

.review-sop-module-buttons,
.review-sop-navigator-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.review-sop-module-buttons button,
.review-sop-navigator-actions button {
  min-height: 34px;
  padding: 6px 10px;
}

.review-sop-module-buttons button.active {
  color: #fff;
  background: var(--header);
  border-color: var(--header);
}

.review-sop-navigator-actions {
  justify-content: flex-end;
}

.review-sop-section {
  display: grid;
  gap: 12px;
  position: relative;
}

.review-sop-section.is-sop-filtered-out {
  display: none;
}

.review-sop-section.is-sop-collapsed > :not(.section-title, .review-sop-block-edit-button) {
  display: none;
}

.review-sop-section.is-sop-collapsed {
  gap: 6px;
  padding-block: 8px;
  border-bottom: 1px solid var(--line);
}

.review-sop-block-edit-button {
  justify-self: start;
  border: 1px solid #d8c8b1;
  background: #fff8eb;
  color: #6b421f;
  font-weight: 900;
  border-radius: 6px;
  padding: 6px 10px;
  cursor: pointer;
}

.review-sop-block-edit-button:hover {
  background: #fff1d8;
}

.review-sop-section.is-sop-content-editing {
  outline: 2px dashed #b46a2a;
  outline-offset: 4px;
  background: rgba(255, 248, 235, 0.58);
}

.review-sop-section.is-sop-content-editing :is(.section-title, h3, p, li, td, th, span, strong, small, b) {
  cursor: text;
}

.review-sop-content-editor {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px;
  border: 1px solid #d8c8b1;
  background: #fffaf1;
  border-radius: 6px;
}

.review-sop-content-editor button {
  border: 1px solid #d8c8b1;
  background: #fffdfa;
  color: var(--text);
  border-radius: 6px;
  padding: 7px 12px;
  font-weight: 900;
  cursor: pointer;
}

.review-sop-content-editor [data-review-sop-block-save] {
  background: #201a16;
  color: #fff;
  border-color: #201a16;
}

.review-sop-content-editor span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.review-live-standard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(285px, 1fr));
  gap: 10px;
}
.review-live-standard-card {
  display: grid;
  gap: 10px;
  align-content: start;
  padding: 14px;
  background: #fffaf1;
  border: 1px solid #d8cdbd;
  border-left: 4px solid #b46a2a;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}
.review-live-standard-card h3 {
  margin: 0;
  color: #201a16;
  font-size: 16px;
}
.review-live-standard-card ul {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.review-live-standard-card li {
  display: grid;
  gap: 3px;
  padding: 8px;
  background: #fffdf8;
  border: 1px solid #eadfcd;
  border-radius: 6px;
}
.review-live-standard-card strong {
  color: #201a16;
  font-size: 13px;
}
.review-live-standard-card span {
  color: #5f4635;
  line-height: 1.45;
}

.review-redline-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 10px;
}

.review-redline-grid article,
.review-category-grid article {
  background: #fffdf8;
  border: 1px solid var(--line);
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-redline-grid article {
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 8px;
  min-height: 176px;
  padding: 14px;
}

.review-redline-grid b {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  background: var(--red);
  color: #fff;
  border-radius: 50%;
  font-size: 13px;
}

.review-redline-grid strong {
  font-size: 16px;
  line-height: 1.25;
}

.review-redline-grid span {
  color: var(--muted);
  line-height: 1.55;
}

.review-category-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(285px, 1fr));
  gap: 10px;
}

.review-category-grid article {
  display: grid;
  align-content: start;
  gap: 10px;
  padding: 15px;
}

.review-category-grid .review-sop-placeholder-card {
  min-height: 185px;
  border-style: dashed;
  background: #fffdfa;
}

.review-category-grid .review-sop-placeholder-card.is-empty-placeholder {
  color: var(--muted);
}

.review-category-grid .review-sop-placeholder-card.is-empty-placeholder ul {
  min-height: 72px;
  border: 1px dashed #dacbb7;
  border-radius: 6px;
  background: #fbf7ef;
  padding: 0;
}

.review-category-grid .review-sop-placeholder-card.is-filled-placeholder {
  border-style: solid;
}

.review-category-grid h3 {
  display: grid;
  gap: 4px;
  margin: 0;
  font-size: 17px;
  line-height: 1.35;
}

.review-category-grid h3 small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.4;
}

.review-sop-standard-edit-button {
  justify-self: start;
  border: 1px solid #d8c8b1;
  background: #fff8eb;
  color: #6b421f;
  font-weight: 800;
  border-radius: 6px;
  padding: 6px 10px;
  cursor: pointer;
}

.review-sop-standard-edit-button:hover {
  background: #fff1d8;
}

.review-category-grid ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 18px;
  color: var(--text);
  line-height: 1.55;
}

.review-category-grid p {
  margin: 0;
  padding: 9px 10px;
  background: #fbf0ee;
  color: var(--red);
  border: 1px solid #e8ccc8;
  font-weight: 700;
  line-height: 1.45;
}

.review-sop-standard-editor {
  display: grid;
  gap: 10px;
}

.review-sop-standard-editor label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.review-sop-standard-editor textarea {
  width: 100%;
  min-height: 170px;
  resize: vertical;
  border: 1px solid #d8c8b1;
  border-radius: 6px;
  background: #fffdfa;
  color: var(--text);
  padding: 10px;
  line-height: 1.55;
  font: inherit;
}

.review-sop-standard-editor input {
  width: 100%;
  border: 1px solid #d8c8b1;
  border-radius: 6px;
  background: #fffdfa;
  color: var(--text);
  padding: 9px 10px;
  font: inherit;
}

.review-sop-standard-edit-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.review-sop-standard-edit-actions button {
  border: 1px solid #d8c8b1;
  background: #fffdfa;
  color: var(--text);
  border-radius: 6px;
  padding: 7px 12px;
  font-weight: 900;
  cursor: pointer;
}

.review-sop-standard-edit-actions [data-review-sop-standard-save] {
  background: #201a16;
  color: #fff;
  border-color: #201a16;
}

.review-sop-standard-edit-actions span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.review-focus-table {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(315px, 1fr));
  gap: 10px;
}

.review-focus-table article {
  display: grid;
  align-content: start;
  gap: 10px;
  padding: 0;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-left: 4px solid #2d5794;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
  overflow: hidden;
}

.review-focus-table h3 {
  margin: 0;
  padding: 12px 14px;
  background: #dbe5f5;
  color: #1f3f6e;
  font-size: 18px;
}

.review-focus-table ol {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0 16px 16px 36px;
  color: var(--red);
  font-size: 15px;
  font-weight: 800;
  line-height: 1.48;
}

.review-focus-table p {
  margin: 0;
  padding: 0 16px;
  color: var(--red);
  font-weight: 800;
  line-height: 1.5;
}

.review-section-note {
  margin: 0;
  color: var(--muted);
  line-height: 1.6;
}

.review-sop-subtitle {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  padding-left: 10px;
  border-left: 4px solid #2d5794;
  color: #1f3f6e;
  font-size: 16px;
  font-weight: 800;
}

.review-core-size-table-wrap {
  overflow-x: auto;
  margin-top: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}

.review-core-size-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  font-size: 12px;
  line-height: 1.55;
}

.review-core-size-table th,
.review-core-size-table td {
  padding: 9px 10px;
  border-bottom: 1px solid #ece7dc;
  text-align: left;
  vertical-align: top;
}

.review-core-size-table th {
  color: #1f3f6e;
  background: #eef3f8;
  font-weight: 900;
}

.review-core-size-table td:first-child {
  color: #1f1f1f;
  font-weight: 900;
}

.review-core-size-table tr:last-child td {
  border-bottom: 0;
}

.review-category-snapshot-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(245px, 1fr));
  gap: 10px;
}

.review-snapshot-card {
  display: grid;
  align-content: start;
  gap: 8px;
  min-height: 168px;
  padding: 14px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-top: 3px solid #2d5794;
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}

.review-snapshot-card h3 {
  margin: 0;
  color: #1f3f6e;
  font-size: 18px;
}

.review-snapshot-card strong {
  color: var(--text);
  font-size: 15px;
  line-height: 1.35;
}

.review-snapshot-card p {
  margin: 0;
  color: var(--muted);
  line-height: 1.55;
}

.review-snapshot-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-self: end;
}

.review-snapshot-tags span {
  padding: 4px 8px;
  background: #eef3f8;
  border: 1px solid #cbd9e7;
  border-radius: 999px;
  color: #1f3f6e;
  font-size: 12px;
  font-weight: 800;
}

.review-action-card-grid {
  display: grid;
  gap: 12px;
}

.review-action-card {
  display: grid;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
  overflow: hidden;
}

.review-action-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  background: #f7efe1;
  border-bottom: 1px solid var(--line);
}

.review-action-card-head h3 {
  margin: 0;
  color: var(--text);
  font-size: 17px;
}

.review-action-card-head span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
  text-align: right;
}

.review-action-table-wrap {
  overflow-x: auto;
}

.review-action-table {
  width: 100%;
  min-width: 820px;
  border-collapse: collapse;
  table-layout: fixed;
}

.review-action-table th,
.review-action-table td {
  padding: 10px 12px;
  border-bottom: 1px solid #eadfd1;
  color: var(--text);
  line-height: 1.5;
  text-align: left;
  vertical-align: top;
}

.review-action-table th {
  background: #fbf4e6;
  color: #6c4a2a;
  font-size: 13px;
  font-weight: 800;
}

.review-action-table td:first-child {
  color: #1f3f6e;
  font-weight: 800;
}

.review-action-table td:nth-child(2) {
  color: var(--red);
  font-weight: 800;
}

.review-action-table tbody tr:nth-child(even) {
  background: #fff9ef;
}

.review-action-table tbody tr:last-child td {
  border-bottom: 0;
}

.review-return-case-section {
  order: 9;
  padding: 14px;
  background: #fffaf1;
  border: 1px solid #ead7be;
  border-left: 4px solid var(--orange);
  border-radius: 6px;
}

.review-return-case-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
}

.review-return-case-card {
  display: grid;
  grid-template-rows: 250px 1fr;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
  overflow: hidden;
}

.review-return-case-card img {
  width: 100%;
  height: 100%;
  background: #f2eee6;
  object-fit: cover;
  object-position: center top;
}

.review-return-case-card div {
  display: grid;
  align-content: start;
  gap: 8px;
  padding: 12px;
}

.review-return-case-card h3 {
  margin: 0;
  font-size: 16px;
  line-height: 1.3;
}

.review-return-case-card p,
.review-return-case-card b {
  margin: 0;
  line-height: 1.55;
}

.review-return-case-card p {
  color: var(--muted);
}

.review-return-case-card b {
  color: var(--text);
}

.review-case-badge {
  justify-self: start;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.review-case-badge.danger {
  background: #fbf0ee;
  border: 1px solid #e8ccc8;
  color: var(--red);
}

.review-case-badge.safe {
  background: #eef7f0;
  border: 1px solid #cfe2d3;
  color: #3f7652;
}
.app-sidebar {
  position: sticky;
  top: 92px;
  display: grid;
  gap: 14px;
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.app-content { min-width: 0; }
body.recruitment-only .app-layout {
  grid-template-columns: minmax(0, 1fr);
}
body.recruitment-only .app-sidebar {
  display: none;
}
.sidebar-group {
  display: grid;
  gap: 8px;
}
.sidebar-group + .sidebar-group {
  padding-top: 12px;
  border-top: 1px solid #ebe5dc;
}
.sidebar-title {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.view-tabs {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  margin-bottom: 16px;
  background: #ebe6dc;
  border: 1px solid var(--line);
  border-radius: 4px;
}
.tab-btn {
  width: 100%;
  min-width: 0;
  justify-content: flex-start;
  background: var(--panel-soft);
  border-color: var(--line);
  color: #4f4942;
  text-align: left;
}
.tab-btn:hover { background: #efe9df; border-color: #c8bdaf; }
.tab-btn.active { background: var(--header); border-color: var(--header); color: #fff; box-shadow: none; }
.view { display: none; }
.view.active { display: block; }
.dashboard-layout {
  display: block;
}
.dashboard-content {
  width: 100%;
  max-width: none;
  min-width: 0;
}
.dashboard-layout > .month-sidebar { display: none; }
.month-sidebar {
  position: sticky;
  top: 86px;
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.month-sidebar-title {
  margin-bottom: 10px;
  color: var(--text);
  font-weight: 900;
}
.month-nav {
  display: grid;
  gap: 8px;
}
.month-year {
  display: grid;
  gap: 6px;
}
.month-year-title {
  padding: 4px 2px 0;
  color: #8a7460;
  font-size: 11px;
  font-weight: 900;
}
.month-year-list {
  display: grid;
  gap: 8px;
}
.month-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  height: 42px;
  padding: 0 12px;
  background: var(--panel-soft);
  border-color: var(--line);
  color: #4f4942;
  text-align: left;
}
.month-btn:hover {
  background: #efe9df;
  border-color: #c8bdaf;
}
.month-btn.active {
  background: var(--header);
  border-color: var(--header);
  color: #fff;
}
.month-btn strong {
  min-width: 28px;
  padding: 2px 7px;
  color: inherit;
  background: rgba(36, 35, 34, 0.08);
  border-radius: 999px;
  text-align: center;
}
.month-btn.active strong { background: rgba(255, 255, 255, 0.18); }
.summary-line {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 16px;
  color: var(--muted);
  line-height: 1.7;
}
.summary-line strong { color: var(--text); margin-right: 10px; }
.page-head {
  display: grid;
  gap: 5px;
  margin-bottom: 14px;
}
.page-head h2 {
  margin: 0;
  color: var(--text);
  font-size: 24px;
  line-height: 1.25;
}
.page-head p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}
.standalone-content { max-width: none; }

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.kpi {
  min-height: 112px;
  padding: 16px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-top: 2px solid var(--accent);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.kpi-label { color: var(--muted); font-weight: 700; }
.kpi-value { margin-top: 8px; font-size: 28px; font-weight: 900; line-height: 1; }
.kpi-sub { margin-top: 8px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.kpi.amber .kpi-value { color: var(--amber); }
.kpi.blue .kpi-value { color: var(--blue); }
.kpi.green .kpi-value { color: var(--green); }
.kpi.teal .kpi-value { color: var(--teal); }
.kpi.indigo .kpi-value { color: var(--indigo); }
.kpi.red .kpi-value { color: var(--red); }
.kpi.amber { border-top-color: var(--amber); }
.kpi.blue { border-top-color: var(--blue); }
.kpi.green { border-top-color: var(--green); }
.kpi.teal { border-top-color: var(--teal); }
.kpi.indigo { border-top-color: var(--indigo); }
.kpi.red { border-top-color: var(--red); }

.capacity-panel {
  display: grid;
  gap: 12px;
  margin-bottom: 14px;
  padding: 14px;
  background: #fffaf0;
  border: 1px solid #e3d7c6;
  border-left: 3px solid #c58a33;
  border-radius: 4px;
  box-shadow: var(--shadow);
}

.task-capacity-panel {
  margin-bottom: 16px;
}

.capacity-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
}
.capacity-head div {
  display: grid;
  gap: 3px;
}
.capacity-head strong {
  color: var(--text);
  font-size: 16px;
}
.capacity-head span,
.capacity-head em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}
.capacity-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.capacity-card {
  display: grid;
  gap: 10px;
  padding: 12px;
  background: #fffdf8;
  border: 1px solid #ddd3c3;
  border-radius: 6px;
}
.capacity-card.danger {
  background: #f6e7e4;
  border-color: #e1bdb8;
}
.capacity-card.warn {
  background: #f6efe1;
  border-color: #e5d1ac;
}
.capacity-card.steady {
  background: #eef4ef;
  border-color: #d4e3d7;
}
.capacity-card.idle {
  background: #edf3f4;
  border-color: #d4e0e3;
}
.capacity-card-head,
.capacity-meta {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 10px;
}
.capacity-card-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.capacity-card-head strong {
  display: block;
  margin-top: 3px;
  color: var(--text);
  font-size: 30px;
  line-height: 1;
}
.capacity-card-head b {
  min-width: 58px;
  padding: 4px 8px;
  color: #fff;
  background: var(--blue);
  border-radius: 999px;
  text-align: center;
  font-size: 12px;
}
.capacity-card.danger .capacity-card-head b { background: var(--red); }
.capacity-card.warn .capacity-card-head b { background: var(--orange); }
.capacity-card.steady .capacity-card-head b { background: var(--green); }
.capacity-card.idle .capacity-card-head b { background: var(--blue); }
.capacity-pending-assign-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  color: #7b552c;
  background: rgba(246, 239, 225, 0.9);
  border: 1px dashed #e5d1ac;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 900;
}
.capacity-pending-assign-row b {
  color: #7b552c;
  font-size: 14px;
}
.capacity-meta {
  color: var(--muted);
  font-size: 12px;
}
.capacity-bar {
  height: 8px;
  overflow: hidden;
  background: rgba(36, 35, 34, 0.08);
  border-radius: 999px;
}
.capacity-bar span {
  display: block;
  width: var(--pct);
  height: 100%;
  background: #8a9c8c;
  border-radius: inherit;
}
.capacity-card.danger .capacity-bar span { background: #a75650; }
.capacity-card.warn .capacity-bar span { background: #aa7b57; }
.capacity-card.idle .capacity-bar span { background: #6f8396; }
.capacity-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}
.capacity-stats span {
  display: grid;
  gap: 2px;
  min-height: 48px;
  padding: 8px;
  background: rgba(255, 253, 248, 0.72);
  border: 1px solid rgba(121, 112, 101, 0.14);
  border-radius: 4px;
}
.capacity-stats b {
  color: var(--text);
  font-size: 14px;
}
.capacity-stats em,
.capacity-card small {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.capacity-card p {
  min-height: 34px;
  margin: 0;
  color: #4c4741;
  font-size: 13px;
  line-height: 1.45;
}
.capacity-card.danger p { color: #7e332e; font-weight: 900; }
.capacity-card.warn p { color: #7b552c; font-weight: 900; }
.capacity-detail-button {
  justify-self: start;
  margin-top: -2px;
  padding: 5px 8px;
  color: #7e332e;
  background: rgba(255, 253, 248, 0.64);
  border: 1px solid rgba(167, 86, 80, 0.34);
  border-radius: 4px;
  font-size: 11px;
  font-weight: 900;
  cursor: pointer;
}
.capacity-detail-button:hover {
  background: #fff8ed;
  border-color: rgba(167, 86, 80, 0.56);
}
.capacity-detail-panel {
  display: grid;
  gap: 6px;
  max-height: 340px;
  overflow: auto;
  padding: 8px;
  background: rgba(255, 253, 248, 0.64);
  border: 1px solid rgba(121, 112, 101, 0.16);
  border-radius: 4px;
}
.capacity-detail-panel[hidden] {
  display: none;
}
.capacity-detail-title {
  color: var(--text);
  font-size: 12px;
  font-weight: 900;
}
.capacity-detail-list {
  display: grid;
  gap: 4px;
}
.capacity-detail-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-height: 60px;
  padding: 7px 8px;
  background: rgba(255, 253, 248, 0.78);
  border: 1px solid rgba(224, 211, 194, 0.66);
  border-radius: 4px;
}
.capacity-detail-copy {
  min-width: 0;
}
.capacity-detail-copy strong {
  overflow-wrap: anywhere;
}
.capacity-detail-copy span {
  display: flex;
  gap: 5px;
  align-items: baseline;
}
.capacity-detail-copy i {
  min-width: 34px;
  color: #8a7762;
  font-style: normal;
}
.capacity-detail-item strong,
.capacity-detail-item b {
  color: var(--text);
  font-size: 12px;
}
.capacity-detail-item span,
.capacity-detail-empty {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
}
.capacity-detail-status {
  display: flex;
  gap: 6px;
  align-items: baseline;
  justify-content: flex-end;
  flex-wrap: wrap;
  min-width: 0;
  max-width: 210px;
  text-align: right;
}

@media (max-width: 760px) {
  .capacity-detail-item {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }
  .capacity-detail-status {
    justify-content: flex-start;
    min-width: 0;
    max-width: none;
    text-align: left;
  }
}

.legend {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  margin: 4px 0 16px;
  color: var(--muted);
  font-size: 12px;
}
.legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 9px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 999px;
}
.sq { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.legend .sq.done { background: var(--green); }
.legend .sq.progress { background: var(--blue); }
.legend .sq.warn { background: var(--orange); }
.legend .sq.late { background: var(--red); }
.legend .sq.neutral { background: var(--gray); }

.issue-panel {
  margin-bottom: 16px;
  padding: 14px 16px;
  background: #f7f1e8;
  border: 1px solid #d7cab9;
  border-radius: 4px;
  color: #665744;
}
.section-title { margin-bottom: 8px; color: var(--text); font-weight: 900; }
.issue-list {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.issue-pill {
  padding: 5px 9px;
  background: var(--panel);
  border: 1px solid #d7cab9;
  border-radius: 999px;
  font-size: 12px;
}

.room-page-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 10px;
}
.room-page-head h2 {
  margin: 0;
  color: var(--text);
  font-size: 24px;
  line-height: 1.25;
}
.room-page-head p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 13px;
}
.room-page-meta {
  display: grid;
  justify-items: end;
  gap: 3px;
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
.room-page-meta strong {
  color: var(--text);
  font-size: 13px;
}
.room-month-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}
.room-month-tab {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  height: 34px;
  padding: 0 14px;
  color: #4f4942;
  background: var(--panel);
  border-color: #d5cabe;
  border-radius: 4px;
}
.room-month-tab:hover {
  color: var(--text);
  background: #f2ede5;
  border-color: #c8bdaf;
}
.room-month-tab.active {
  color: #fff;
  background: var(--header);
  border-color: var(--header);
}
.room-month-tab strong {
  min-width: 22px;
  padding: 1px 7px;
  color: inherit;
  background: rgba(36, 35, 34, 0.08);
  border-radius: 999px;
  text-align: center;
  font-size: 12px;
}
.room-month-tab.active strong {
  background: rgba(255, 255, 255, 0.18);
}
.room-total-panel {
  margin-bottom: 14px;
  padding: 16px 18px 18px;
  background: #eef4f8;
  border: 1px solid #cbd9e4;
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.room-total-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
  color: #52616d;
}
.room-total-head div {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.room-total-head strong {
  color: var(--text);
  font-size: 16px;
}
.room-total-head span {
  color: #5f6e79;
  font-size: 12px;
}
.room-total-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.room-total-card {
  min-height: 82px;
  display: grid;
  align-content: center;
  gap: 5px;
  padding: 14px 16px;
  background: var(--panel);
  border: 1px solid #dce4ea;
  border-radius: 6px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}
.room-total-card span,
.room-total-card em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}
.room-total-card strong {
  color: var(--text);
  font-size: 24px;
  line-height: 1.1;
}
.room-total-card.main strong { color: #273445; }
.room-total-card.slate strong { color: var(--blue); }
.room-total-card.green strong { color: var(--green); }
.room-total-card.blue strong { color: var(--blue); }
.room-total-card.teal strong { color: var(--teal); }
.room-total-card.red strong { color: var(--red); }
.room-total-card.amber strong { color: var(--orange); }
.room-stage-panel { margin-bottom: 14px; }
.room-stage-panel .room-stage-overview { margin-bottom: 0; }
.room-month-tabs { display: none; }
.dashboard-flow-panel { margin-bottom: 14px; }
.dashboard-flow-panel .room-wave-row {
  grid-template-columns: 132px minmax(0, 1fr) 70px;
}
.dashboard-flow-panel .room-flow-node {
  min-height: 66px;
}

.timeline-board {
  display: grid;
  gap: 10px;
}
.timeline-rule {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  color: var(--muted);
  font-size: 12px;
}
.timeline-rule span {
  padding: 4px 9px;
  background: #f7f1e7;
  border: 1px solid #e5dacb;
  border-radius: 3px;
}
.timeline-plan {
  overflow: clip;
  background: #fcfaf6;
  border: 1px solid #e2d8ca;
  border-left: 4px solid #bd8758;
  border-radius: 4px;
  box-shadow: 0 10px 22px rgba(78, 60, 38, 0.06);
}
.timeline-plan-head {
  position: sticky;
  top: var(--app-sticky-top);
  z-index: 8;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  background: #f8efd8;
  border-bottom: 1px solid #e1d4c0;
}
.timeline-plan-head strong {
  color: var(--text);
  font-size: 18px;
}
.timeline-plan-head span {
  color: var(--muted);
  font-size: 12px;
}
.timeline-plan-scroll {
  overflow-x: visible;
}
.timeline-plan-table {
  width: 100%;
  min-width: 1320px;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0;
  background: #fcfaf6;
}
.performance-data-scroll {
  overflow-x: auto;
}
.performance-data-table {
  min-width: 980px;
}
.performance-data-table tbody tr {
  height: 88px;
}
.performance-data-table th {
  position: static;
  top: auto;
  z-index: auto;
}
.performance-data-table .plan-cell {
  min-height: 52px;
  align-content: center;
  padding: 10px 12px;
}
.performance-data-table .plan-progress-row {
  grid-template-columns: 48px minmax(70px, 1fr);
  gap: 8px;
  min-height: 22px;
}
.performance-data-table .plan-progress-row strong {
  font-size: 14px;
  line-height: 1.1;
}
.performance-data-table .plan-progress {
  height: 8px;
}
.performance-metric-col {
  width: 210px;
}
.performance-period-col {
  width: 120px;
}
.performance-stage-col {
  width: calc((100% - 330px) / 6);
}
.performance-data-table .timeline-wave-cell span,
.performance-data-table td span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}
.timeline-wave-col { width: 162px; }
.timeline-list-col { width: 76px; }
.timeline-stage-col { width: calc((100% - 238px) / 9); }
.timeline-plan-table th,
.timeline-plan-table td {
  padding: 7px 8px;
  border-right: 1px solid rgba(218, 204, 184, 0.72);
  border-bottom: 1px solid rgba(218, 204, 184, 0.72);
  text-align: left;
  vertical-align: middle;
}
.timeline-plan-table th:nth-child(n+3),
.timeline-plan-table td:nth-child(n+3) {
  text-align: center;
}
.timeline-plan-table thead tr:last-child th {
  text-align: center;
}
.timeline-plan-table th.timeline-stage-head {
  text-align: center !important;
}
.timeline-plan-table th.timeline-stage-head.material-head {
  color: #9a8f83;
  background: #faf7f1;
}
.timeline-plan-table th.timeline-stage-head.owner-head {
  color: #a0473f;
  background: #fff2dc;
}
.timeline-plan-table th.timeline-stage-head.owner-head small {
  color: #a0473f;
}
.timeline-plan-table th.timeline-stage-head.review-head {
  color: #7c5f54;
}
.timeline-plan-table th.timeline-stage-head small {
  display: block;
  margin-top: 2px;
  color: #8d8174;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.1;
}
.timeline-plan-table th {
  position: sticky;
  color: #5b5147;
  background: #f9f4eb;
  font-size: 12px;
  font-weight: 900;
}
.timeline-plan-table thead tr:first-child th {
  top: calc(var(--app-sticky-top) + var(--timeline-plan-head-height));
  z-index: 7;
}
.timeline-plan-table thead tr:nth-child(2) th {
  top: calc(var(--app-sticky-top) + var(--timeline-plan-head-height) + var(--timeline-brand-head-height));
  z-index: 6;
}
.timeline-plan-table thead th[rowspan] {
  top: calc(var(--app-sticky-top) + var(--timeline-plan-head-height));
  z-index: 8;
}
.timeline-plan-table.performance-data-table th {
  position: static;
  top: auto;
  z-index: auto;
}
.timeline-brand-row th {
  height: 31px;
  padding: 5px 10px;
  border-bottom: 3px solid #9a755b;
  text-align: center;
}
.timeline-brand-row th:first-child,
.timeline-brand-row th:nth-child(2) {
  border-bottom-width: 1px;
}
.timeline-brand-row b {
  margin-left: 7px;
  color: #806f62;
  font-weight: 400;
}
.timeline-plan-table th:first-child,
.timeline-plan-table td:first-child {
  width: 162px;
}
.timeline-plan-table th:nth-child(2),
.timeline-plan-table td:nth-child(2) {
  width: 76px;
  text-align: center;
}
.timeline-plan-table td:nth-child(2) {
  background: #f5edcf;
}
.timeline-plan-table tr:last-child td {
  border-bottom: 0;
}
.timeline-plan-table th:last-child,
.timeline-plan-table td:last-child {
  border-right: 0;
}
.timeline-plan-table tbody tr { height: 64px; }
.timeline-wave-cell,
.timeline-list-cell {
  display: table-cell;
}
.timeline-wave-cell strong,
.timeline-list-cell strong {
  display: block;
  margin-bottom: 3px;
  color: var(--text);
  font-size: 14px;
}
.timeline-wave-title {
  display: grid;
  gap: 3px;
  margin-bottom: 3px;
}
.timeline-wave-main {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}
.timeline-wave-title strong {
  margin-bottom: 0;
  white-space: nowrap;
}
.timeline-wave-main em {
  max-width: 54px;
  overflow: hidden;
  padding: 1px 5px;
  color: #9b5200;
  background: #fff4dc;
  border: 1px solid #e9c37a;
  border-radius: 999px;
  font-size: 11px;
  font-style: normal;
  line-height: 1.5;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.timeline-wave-cell span,
.timeline-list-cell span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}
.timeline-owner-tags {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
  margin-bottom: 0;
}
.timeline-owner-tags em {
  width: fit-content;
  max-width: 48px;
  overflow: hidden;
  padding: 1px 5px;
  color: #9b5200;
  background: #fff4dc;
  border: 1px solid #e9c37a;
  border-radius: 999px;
  font-size: 11px;
  font-style: normal;
  line-height: 1.5;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.timeline-list-cell strong {
  color: #ad5f00;
  font-size: 14px;
}
.plan-cell {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 6px 7px;
  background: rgba(255, 252, 246, 0.76);
  border: 1px solid rgba(218, 204, 184, 0.42);
  border-radius: 6px;
  box-shadow: 0 1px 0 rgba(82, 61, 40, 0.03);
}
.plan-cell.done,
.plan-cell.late,
.plan-cell.warn,
.plan-cell.progress,
.plan-cell.future,
.plan-cell.neutral {
  background: rgba(255, 252, 246, 0.76);
}
.plan-date {
  color: #3f3933;
  font-size: 13px;
  font-weight: 900;
  text-align: center;
  line-height: 1.1;
}
.plan-date i {
  display: none;
}
.plan-progress-row {
  display: grid;
  grid-template-columns: auto minmax(36px, 1fr);
  gap: 5px;
  align-items: center;
  min-height: 12px;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
.plan-progress-row strong {
  color: #12996b;
  font-size: 11px;
  font-weight: 900;
}
.plan-cell.late .plan-progress-row strong,
.plan-cell.warn .plan-progress-row strong {
  color: #8c5b56;
}
.plan-progress {
  height: 6px;
  overflow: hidden;
  background: #ebe5dc;
  border-radius: 999px;
}
.plan-progress span {
  display: block;
  height: 100%;
  background: #16b777;
  border-radius: inherit;
}
.plan-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
  line-height: 1.15;
}
.plan-meta em,
.plan-cell b {
  color: #766d62;
  font-size: 10px;
  font-style: normal;
}
.plan-cell b {
  color: #875a54;
  font-weight: 800;
}
.timeline-plan-table td.plan-td.due-hot {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.warn.due-hot {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.late.due-hot.due-strong {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.due-hot .plan-progress {
  background: #e9dfdb;
}
.timeline-plan-table td.plan-td.late:not(.due-hot),
.timeline-plan-table td.plan-td.warn:not(.due-hot) {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.done {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.material {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.progress,
.timeline-plan-table td.plan-td.future {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.neutral {
  background: #fcfaf6;
}
.timeline-plan-table td.plan-td.late,
.timeline-plan-table td.plan-td.warn,
.timeline-plan-table td.plan-td.material.late,
.timeline-plan-table td.plan-td.material.warn,
.timeline-plan-table td.plan-td.due-hot,
.timeline-plan-table td.plan-td.warn.due-hot,
.timeline-plan-table td.plan-td.late.due-hot.due-strong,
.timeline-plan-table td.plan-td.late:not(.due-hot),
.timeline-plan-table td.plan-td.warn:not(.due-hot) {
  background: #fbf8f2;
}
.timeline-plan-table td.plan-td.progress .plan-date,
.timeline-plan-table td.plan-td.future .plan-date,
.timeline-plan-table td.plan-td.neutral .plan-date {
  color: #514941;
}
.timeline-plan-table td.plan-td.progress .plan-meta em,
.timeline-plan-table td.plan-td.future .plan-meta em,
.timeline-plan-table td.plan-td.neutral .plan-meta em {
  color: #635b52;
}
.timeline-plan-table td.plan-td.progress .plan-cell b,
.timeline-plan-table td.plan-td.future .plan-cell b {
  color: #49657c;
}
.timeline-plan-table td.plan-td.due-today {
  position: relative;
  background: #fffaf0;
  box-shadow: inset 0 0 0 1px #bd8758;
}
.timeline-plan-table td.plan-td.due-today .plan-date {
  color: #8a4c00;
}
.timeline-plan-table td.plan-td.due-today .plan-progress-row {
  background: transparent;
}
.timeline-plan-table td.plan-td.material,
.timeline-plan-table td.plan-td.material.due-hot,
.timeline-plan-table td.plan-td.material.warn.due-hot,
.timeline-plan-table td.plan-td.material.late.due-hot.due-strong,
.timeline-plan-table td.plan-td.material.due-today {
  background: #fbf8f2;
  box-shadow: inset 0 0 0 1px #eee5d9;
}
.timeline-plan-table td.plan-td.material .plan-cell {
  background: rgba(248, 244, 236, 0.48);
  border-color: rgba(224, 214, 198, 0.34);
  opacity: 0.6;
  box-shadow: none;
}
.timeline-plan-table td.plan-td.material .plan-date,
.timeline-plan-table td.plan-td.material.due-today .plan-date {
  color: #81766b;
}
.timeline-plan-table td.plan-td.material .plan-progress-row,
.timeline-plan-table td.plan-td.material.due-today .plan-progress-row {
  background: transparent;
}
.timeline-plan-table td.plan-td.material .plan-progress span {
  background: #a99f93;
}
.timeline-plan-table td.plan-td.material .plan-progress-row strong,
.timeline-plan-table td.plan-td.material .plan-meta em,
.timeline-plan-table td.plan-td.material .plan-cell b {
  color: #756b61;
}
.plan-cell.done .plan-progress-row {
  background: transparent;
}
.plan-cell.progress .plan-progress-row,
.plan-cell.future .plan-progress-row,
.plan-cell.neutral .plan-progress-row {
  background: transparent;
}
.plan-cell.done .plan-progress span { background: #16b777; }
.plan-cell.late .plan-progress span { background: #a35d57; }
.plan-cell.warn .plan-progress span { background: #aa7b57; }
.plan-cell.progress .plan-progress span,
.plan-cell.future .plan-progress span { background: #788b91; }
.plan-cell.neutral .plan-progress span { background: #d7d5d0; }
.plan-cell.late b { color: #8d4f4a; }
.plan-cell.warn b { color: #8f674f; }

body.timeline-compact {
  --app-sticky-top: 54px;
  --timeline-plan-head-height: 34px;
  --timeline-brand-head-height: 22px;
}
body.timeline-compact .topbar {
  gap: 14px;
  padding: 7px 24px;
}
body.timeline-compact .brand {
  min-width: 250px;
}
body.timeline-compact .brand-mark {
  height: 34px;
}
body.timeline-compact .brand-word {
  font-size: 25px;
}
body.timeline-compact h1 {
  gap: 10px;
  font-size: 18px;
}
body.timeline-compact .brand p {
  display: none;
}
body.timeline-compact .actions {
  gap: 8px;
}
body.timeline-compact .actions label {
  gap: 2px;
  font-size: 11px;
}
body.timeline-compact .topbar input,
body.timeline-compact .topbar button {
  height: 30px;
}
body.timeline-compact .wrap {
  padding: 8px 16px 28px;
}
body.timeline-compact .app-layout {
  grid-template-columns: 164px minmax(0, 1fr);
  gap: 12px;
}
body.timeline-compact .app-sidebar {
  top: 58px;
  gap: 10px;
  padding: 10px;
}
body.timeline-compact .sidebar-group {
  gap: 6px;
}
body.timeline-compact .sidebar-group + .sidebar-group {
  padding-top: 9px;
}
body.timeline-compact .sidebar-title {
  font-size: 11px;
}
body.timeline-compact .tab-btn,
body.timeline-compact .month-nav button {
  min-height: 29px;
  padding: 0 10px;
  font-size: 12px;
}
body.timeline-compact #timelineView > .section-head {
  display: none;
}
body.timeline-compact .timeline-board {
  gap: 8px;
}
body.timeline-compact .timeline-plan {
  border-left-width: 3px;
}
body.timeline-compact .timeline-plan-head {
  padding: 7px 12px;
}
body.timeline-compact .timeline-plan-head strong {
  font-size: 16px;
}
body.timeline-compact .timeline-plan-head span {
  font-size: 11px;
}
body.timeline-compact .timeline-plan-table {
  min-width: 1160px;
}
body.timeline-compact .timeline-wave-col,
body.timeline-compact .timeline-plan-table th:first-child,
body.timeline-compact .timeline-plan-table td:first-child {
  width: 174px;
}
body.timeline-compact .timeline-list-col,
body.timeline-compact .timeline-plan-table th:nth-child(2),
body.timeline-compact .timeline-plan-table td:nth-child(2) {
  width: 58px;
}
body.timeline-compact .timeline-stage-col {
  width: calc((100% - 232px - 304px) / 5);
}
body.timeline-compact .timeline-material-col {
  width: 76px;
}
body.timeline-compact .timeline-plan-table th,
body.timeline-compact .timeline-plan-table td {
  padding: 2px 4px;
}
body.timeline-compact .timeline-plan-table th {
  font-size: 11px;
}
body.timeline-compact .timeline-brand-row th {
  height: 22px;
  padding: 2px 8px;
  border-bottom-width: 2px;
}
body.timeline-compact .timeline-brand-row b {
  margin-left: 5px;
}
body.timeline-compact .timeline-plan-table th.timeline-stage-head small {
  margin-top: 0;
  font-size: 9px;
}
body.timeline-compact .timeline-plan-table tbody tr {
  height: 50px;
}
body.timeline-compact .timeline-wave-cell strong,
body.timeline-compact .timeline-list-cell strong {
  margin-bottom: 1px;
  font-size: 12px;
}
body.timeline-compact .timeline-wave-title {
  gap: 1px;
  margin-bottom: 1px;
}
body.timeline-compact .timeline-wave-main {
  gap: 4px;
  flex-wrap: nowrap;
}
body.timeline-compact .timeline-wave-main strong {
  flex: 0 0 auto;
}
body.timeline-compact .timeline-wave-main em {
  max-width: 50px;
  padding: 0 4px;
  font-size: 9px;
  line-height: 1.25;
}
body.timeline-compact .timeline-owner-tags {
  gap: 2px;
}
body.timeline-compact .timeline-owner-tags em {
  max-width: 48px;
  padding: 0 4px;
  font-size: 9px;
  line-height: 1.25;
}
body.timeline-compact .timeline-wave-cell span,
body.timeline-compact .timeline-list-cell span {
  font-size: 9px;
  line-height: 1.16;
}
body.timeline-compact .timeline-list-cell strong {
  font-size: 12px;
}
body.timeline-compact .timeline-list-cell span {
  display: none;
}
body.timeline-compact .plan-cell {
  gap: 2px;
  padding: 2px 3px;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
body.timeline-compact .plan-cell.done,
body.timeline-compact .plan-cell.late,
body.timeline-compact .plan-cell.warn,
body.timeline-compact .plan-cell.progress,
body.timeline-compact .plan-cell.future,
body.timeline-compact .plan-cell.neutral {
  background: transparent;
}
body.timeline-compact .plan-date {
  font-size: 12px;
  line-height: 1;
}
body.timeline-compact .plan-progress-row {
  grid-template-columns: auto minmax(30px, 1fr);
  gap: 3px;
  min-height: 8px;
}
body.timeline-compact .plan-progress-row strong,
body.timeline-compact .plan-meta em,
body.timeline-compact .plan-cell b {
  font-size: 9px;
}
body.timeline-compact .plan-progress {
  height: 4px;
}
body.timeline-compact .plan-meta {
  line-height: 1;
}
body.timeline-compact .plan-cell > b {
  justify-self: end;
  line-height: 1;
  margin-top: -1px;
}
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-cell {
  opacity: 0.52;
}
body.timeline-compact .timeline-plan-table td.plan-td.material {
  padding-left: 3px;
  padding-right: 3px;
}
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-date {
  font-size: 11px;
}
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-progress-row {
  grid-template-columns: 1fr;
}
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-progress-row strong {
  display: none;
}
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-meta {
  justify-content: flex-end;
}
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-meta b {
  display: none;
}
body.timeline-compact .timeline-plan-table td.plan-td.review {
  padding-left: 3px;
  padding-right: 3px;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-date {
  font-size: 11px;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-progress-row {
  grid-template-columns: 1fr;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-progress-row strong {
  display: none;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-meta {
  justify-content: flex-end;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-meta b {
  display: none;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-cell {
  background: rgba(248, 244, 236, 0.48);
  border-color: rgba(224, 214, 198, 0.34);
  opacity: 0.58;
  box-shadow: none;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-progress span {
  background: #a99f93;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-date,
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-progress-row strong,
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-meta em,
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-cell b {
  color: #756b61;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material) .plan-cell {
  background: #fdfbf3;
  border: 1px solid #e7ddc6;
  border-radius: 4px;
}
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-date,
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-cell > b,
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-meta b {
  color: #a0473f;
}
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-progress-row strong {
  color: #8f4a42;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).done .plan-cell {
  background: #fdfbef;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).progress .plan-cell,
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).future .plan-cell {
  background: #fcf8e6;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today {
  background: #fff1bf;
  box-shadow: inset 0 0 0 2px #c87913;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today .plan-cell {
  background: #ffe9a3;
  border-color: #c87913;
  box-shadow: 0 0 0 1px rgba(200, 121, 19, 0.18);
}
body.timeline-compact .timeline-plan-table td.plan-td.review.due-today .plan-cell {
  background: rgba(248, 244, 236, 0.68);
  border-color: #c87913;
  opacity: 0.74;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today .plan-date {
  color: #8a3f00;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today .plan-cell > b {
  padding: 1px 4px;
  color: #8a3f00;
  background: #fff7d5;
  border: 1px solid #e1a449;
  border-radius: 999px;
  font-weight: 900;
}
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).late .plan-cell,
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).warn .plan-cell {
  border-color: #e1b686;
}
body.timeline-compact .timeline-plan-table td.plan-td.review .plan-cell {
  background: rgba(248, 244, 236, 0.48);
  border-color: rgba(224, 214, 198, 0.34);
  opacity: 0.58;
  box-shadow: none;
}
body.timeline-compact .timeline-plan-table td.plan-td.review.due-today .plan-cell {
  background: rgba(248, 244, 236, 0.68);
  border-color: #c87913;
  opacity: 0.74;
}

.timeline-row {
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
  padding: 12px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.timeline-wave {
  display: grid;
  align-content: center;
  gap: 5px;
  padding-right: 12px;
  border-right: 1px solid #e7ded2;
}
.timeline-wave strong {
  color: var(--text);
  font-size: 16px;
}
.timeline-wave span,
.timeline-wave em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}
.timeline-track {
  display: grid;
  grid-template-columns: repeat(6, minmax(90px, 1fr));
  gap: 8px;
}
.timeline-step {
  position: relative;
  display: grid;
  gap: 4px;
  min-height: 86px;
  padding: 10px;
  background: var(--panel-soft);
  border: 1px solid #e4dccf;
  border-radius: 4px;
}
.timeline-step i {
  width: 9px;
  height: 9px;
  background: var(--gray);
  border-radius: 50%;
}
.timeline-step strong {
  color: var(--text);
  font-size: 13px;
}
.timeline-step span,
.timeline-step em,
.timeline-step b {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  font-weight: 400;
}
.timeline-step.done {
  background: #eef5ef;
  border-color: #d7e5da;
}
.timeline-step.progress,
.timeline-step.future {
  background: #eef3f6;
  border-color: #d8e1e8;
}
.timeline-step.warn {
  background: #f6efe1;
  border-color: #e6d7bc;
}
.timeline-step.late {
  background: #f6e7e4;
  border-color: #e2c2bd;
}
.timeline-step.done i { background: var(--green); }
.timeline-step.progress i,
.timeline-step.future i { background: var(--blue); }
.timeline-step.warn i { background: var(--orange); }
.timeline-step.late i { background: var(--red); }

.room-stage-overview {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.room-stage-card {
  display: grid;
  gap: 8px;
  padding: 12px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.room-stage-title,
.room-stage-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.room-stage-title span { color: var(--muted); font-weight: 900; }
.room-stage-title strong { font-size: 20px; }
.room-stage-meta { color: var(--muted); font-size: 12px; }
.room-board-panel,
.people-board article {
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.room-board-panel { margin-bottom: 14px; }
.room-wave-board { display: grid; gap: 8px; }
.room-wave-row {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) 72px;
  gap: 12px;
  align-items: center;
  padding: 10px;
  background: var(--panel-soft);
  border: 1px solid #e4dccf;
  border-radius: 4px;
}
.room-wave-name { display: grid; gap: 4px; }
.room-wave-name strong { font-size: 15px; }
.room-wave-name span { color: var(--muted); font-size: 12px; }
.room-flow {
  display: grid;
  grid-template-columns: repeat(7, minmax(70px, 1fr));
  gap: 8px;
}
.room-flow-node {
  position: relative;
  display: grid;
  gap: 6px;
  min-height: 72px;
  padding: 8px;
  background: #fffdf8;
  border: 1px solid #e3dbcf;
  border-radius: 4px;
}
.room-flow-node.done {
  background: #eef5ef;
  border-color: #d7e5da;
}
.room-flow-node.progress,
.room-flow-node.future,
.room-flow-node.warn {
  background: #f6efe1;
  border-color: #e6d7bc;
}
.room-flow-node.late {
  background: #f6e7e4;
  border-color: #e2c2bd;
}
.room-flow-head,
.room-flow-count {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}
.room-flow-node i {
  flex: 0 0 auto;
  width: 9px;
  height: 9px;
  background: var(--gray);
  border-radius: 50%;
}
.room-flow-node strong { flex: 1; font-size: 12px; }
.room-flow-head span {
  color: #5f8068;
  font-size: 12px;
  font-weight: 900;
}
.room-flow-count span,
.room-flow-count b,
.room-flow-node em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.room-flow-count b {
  color: #9e5b55;
  font-weight: 900;
}
.room-flow-bar {
  height: 8px;
  overflow: hidden;
  background: #e4ded4;
  border-radius: 999px;
}
.room-flow-bar span {
  display: block;
  width: var(--pct);
  height: 100%;
  background: #8fa390;
  border-radius: inherit;
}
.room-flow-node.late .room-flow-bar span { background: #a75650; }
.room-flow-node.warn .room-flow-bar span { background: #b08a55; }
.room-flow-node.future .room-flow-bar span,
.room-flow-node.progress .room-flow-bar span { background: #6f8396; }
.room-flow-node.neutral .room-flow-bar span { background: var(--gray); }
.room-flow-node.done i { background: var(--green); }
.room-flow-node.progress i,
.room-flow-node.future i { background: var(--blue); }
.room-flow-node.warn i { background: var(--orange); }
.room-flow-node.late i { background: var(--red); }
.room-wave-percent {
  display: grid;
  place-items: center;
  gap: 2px;
  min-height: 54px;
  border-radius: 4px;
  background: #f3ead6;
  color: #8a682f;
}
.room-wave-percent.high { background: #e4efe5; color: #476b54; }
.room-wave-percent.low { background: #f2dfdc; color: #974c46; }
.room-wave-percent strong { font-size: 18px; }
.room-wave-percent span { font-size: 12px; }
.people-board {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.room-report-filter {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  margin: -2px 0 14px;
}
.report-filter-btn {
  min-width: 74px;
  height: 34px;
  padding: 0 16px;
  color: #5d554b;
  background: #fbf8f2;
  border: 1px solid #d9cbb8;
  border-radius: 4px;
  font-weight: 900;
  cursor: pointer;
}
.report-filter-btn:hover {
  border-color: #9b7b54;
  color: #2b2620;
}
.report-filter-btn.active {
  color: #fff;
  background: #1f1d1b;
  border-color: #1f1d1b;
}
.room-report-query {
  display: grid;
  grid-template-columns: minmax(150px, 190px) minmax(170px, 230px) minmax(150px, 190px) minmax(260px, 1fr) auto auto;
  gap: 10px;
  align-items: end;
  margin: 0 0 14px;
  padding: 12px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.room-report-query label {
  min-width: 0;
  gap: 6px;
}
.room-report-query label.wide {
  min-width: 240px;
}
.room-report-query input,
.room-report-query select {
  width: 100%;
  height: 34px;
  background: #fbf8f2;
  border-color: #d9cbb8;
}
.room-report-query button {
  height: 34px;
  align-self: end;
}
.performance-query {
  grid-template-columns: minmax(180px, 240px) minmax(180px, 1fr) auto;
}
.operations-performance-import {
  grid-template-columns: minmax(280px, 1fr) auto;
  align-items: end;
  margin-top: -2px;
}
.operations-performance-import[hidden] {
  display: none;
}
.operations-performance-import input[type="file"] {
  max-width: 100%;
  padding: 7px 9px;
  background: #fffdf8;
  border: 1px solid #d9cbb8;
  border-radius: 4px;
}
.report-query-hidden {
  display: none !important;
}
.room-performance-grid,
.room-report-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 14px;
}
.room-performance-grid.single-report-section,
.room-report-grid.single-report-section {
  grid-template-columns: minmax(0, 1fr);
}
.empty-report-section {
  display: none;
}
.report-section-hidden {
  display: none !important;
}
.room-performance-grid article,
.room-report-grid article {
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.performance-kpis,
.report-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.performance-kpis span,
.report-kpis span {
  display: grid;
  gap: 3px;
  padding: 10px;
  background: var(--panel-soft);
  border: 1px solid #e4dccf;
  border-radius: 4px;
  color: var(--muted);
  font-size: 12px;
}
.performance-kpis strong,
.report-kpis b {
  color: var(--text);
  font-size: 20px;
}
.report-control-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.report-control-cards span {
  display: grid;
  gap: 3px;
  padding: 10px;
  color: var(--muted);
  background: #f7f0e5;
  border: 1px solid #e4dccf;
  border-radius: 4px;
  font-size: 12px;
}
.report-control-cards b {
  color: #273445;
  font-size: 20px;
}
.report-control-cards em {
  color: #6d665d;
  font-style: normal;
}
.report-score-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
  gap: 8px;
}
.report-score-summary span {
  display: grid;
  gap: 3px;
  padding: 10px;
  color: var(--muted);
  background: #f8f2e8;
  border: 1px solid #e4dccf;
  border-radius: 4px;
  font-size: 12px;
}
.report-score-summary b {
  color: var(--text);
  font-size: 20px;
}
.timeline-node-performance {
  display: grid;
  gap: 14px;
  min-width: 0;
}
.performance-scope-tabs {
  display: flex;
  gap: 8px;
  align-items: end;
  border-bottom: 1px solid #ddd4c9;
}
.performance-scope-tabs button {
  min-height: 34px;
  padding: 7px 14px;
  border: 1px solid #d9cdbf;
  border-bottom: 0;
  border-radius: 4px 4px 0 0;
  color: #665d53;
  background: #fbf8f3;
  font-weight: 800;
}
.performance-scope-tabs button:hover { background: #f5eee4; }
.performance-scope-tabs button.active {
  color: #fff;
  border-color: #25211e;
  background: #25211e;
}
.performance-scope-panel {
  display: grid;
  gap: 14px;
  min-width: 0;
}
.performance-scope-panel.is-hidden { display: none; }
.performance-section-heading {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
}
.performance-section-heading > div:first-child {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.performance-section-heading strong {
  color: var(--text);
  font-size: 14px;
}
.performance-section-heading > div:first-child > span {
  color: var(--muted);
  font-size: 11px;
}
.performance-rate-legend {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.performance-rate-legend span {
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
}
.performance-rate-legend .is-good,
.performance-rate-pill.is-good {
  color: #236747;
  background: #e1f2e8;
}
.performance-rate-legend .is-watch,
.performance-rate-pill.is-watch {
  color: #8a5b10;
  background: #fff0c7;
}
.performance-rate-legend .is-risk,
.performance-rate-pill.is-risk {
  color: #a13f38;
  background: #fbe2e0;
}
.performance-rate-pill.is-empty {
  color: #756f68;
  background: #eeece8;
}
.performance-overview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid #e1d8cc;
  background: #fbf8f3;
}
.performance-overview.performance-overview-pairs {
  display: block;
}
.performance-overview-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.performance-overview-pair + .performance-overview-pair {
  border-top: 1px solid #e1d8cc;
}
.performance-overview-item {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) auto;
  gap: 8px 14px;
  align-items: center;
  min-width: 0;
  padding: 12px;
  border-right: 1px solid #e1d8cc;
  border-top: 3px solid #5d856e;
}
.performance-overview-item:last-child { border-right: 0; }
.performance-overview-item.tone-sample { border-top-color: #b47a32; }
.performance-overview-item.tone-materialPackage { border-top-color: #4f7f82; }
.performance-overview-item.tone-pricing { border-top-color: #ad5d55; }
.performance-overview-item.tone-launchAchievement { border-top-color: #6b5e91; }
.performance-overview-item.tone-slotCompletion { border-top-color: #7d6a36; }
.performance-overview-item > div:first-child {
  display: grid;
  gap: 4px;
}
.operations-reconciliation-details {
  display: grid;
  gap: 10px;
  margin-top: 14px;
  padding: 12px;
  border: 1px solid #e1d8cc;
  border-radius: 4px;
  background: #fffdf8;
}
.operations-reconciliation-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.operations-reconciliation-grid > div {
  min-width: 0;
  padding: 10px;
  border: 1px solid #ebe1d3;
  border-radius: 4px;
  background: #fbf8f3;
}
.operations-code-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.operations-code-list span {
  max-width: 100%;
  padding: 3px 7px;
  overflow-wrap: anywhere;
  color: #664a2a;
  background: #f3e8d7;
  border-radius: 3px;
  font-size: 12px;
}
.performance-overview-item > div:first-child strong {
  color: var(--text);
  font-size: 13px;
}
.performance-overview-item > div:first-child span {
  color: var(--muted);
  font-size: 10px;
}
.performance-overview-counts {
  grid-column: 1 / -1;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  color: var(--muted);
  font-size: 10px;
}
.performance-overview-counts b { color: var(--text); }
.performance-rate-pill {
  display: inline-flex;
  gap: 6px;
  align-items: baseline;
  justify-content: center;
  width: fit-content;
  max-width: 100%;
  padding: 4px 8px;
  border-radius: 999px;
  white-space: nowrap;
}
.performance-rate-pill b,
.performance-rate-pill em {
  display: block;
}
.performance-rate-pill b {
  color: inherit;
  font-size: 14px;
  line-height: 1;
}
.performance-rate-pill em {
  color: inherit;
  font-size: 9px;
  font-style: normal;
  opacity: .82;
}
.performance-comparison-section {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding-top: 12px;
  border-top: 1px solid #ddd4c9;
}
.performance-table-wrap {
  min-width: 0;
  overflow-x: auto;
  border: 1px solid #e1d8cc;
}
.performance-comparison-table {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 11px;
}
.performance-comparison-table th,
.performance-comparison-table td {
  padding: 7px 10px;
  border-bottom: 1px solid #ece5dc;
  text-align: left;
  vertical-align: middle;
}
.performance-comparison-table thead th {
  color: #5f574e;
  background: #f4efe7;
  font-size: 10px;
  font-weight: 800;
}
.performance-comparison-table tbody th {
  color: var(--text);
  font-weight: 800;
}
.performance-comparison-table tbody tr:last-child th,
.performance-comparison-table tbody tr:last-child td { border-bottom: 0; }
.performance-comparison-table tbody tr:hover { background: #fffaf2; }
.performance-comparison-table td:last-child { width: 150px; }
.performance-natural-table { min-width: 760px; }
.performance-slot-owner-table { min-width: 680px; }
.performance-empty-cell {
  padding: 18px !important;
  color: var(--muted);
  text-align: center !important;
}
.performance-support-totals {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.performance-support-totals > div {
  display: flex;
  gap: 6px;
  align-items: center;
}
.performance-support-totals em {
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
}
.performance-support-table { min-width: 680px; }
.performance-support-table thead th:nth-child(3) { background: #fff4d2; }
.performance-support-table thead th:nth-child(4) { background: #eee9fb; }
.performance-support-result {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
}
.performance-support-result > span:last-child {
  color: var(--muted);
  font-size: 9px;
  white-space: nowrap;
}
.score-diff-positive {
  color: #2f6f56 !important;
  font-weight: 900;
}
.score-diff-negative {
  color: #a84e45 !important;
  font-weight: 900;
}
.score-diff-neutral {
  color: #74695e !important;
  font-weight: 800;
}
.performance-subtitle {
  margin-bottom: 9px;
  color: var(--muted);
  font-size: 12px;
}
.mini-people-group {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  align-items: center;
  margin-top: 8px;
}
.mini-people-group b {
  color: var(--text);
}
.mini-people-group span,
.performance-empty {
  padding: 4px 7px;
  color: #5f5850;
  background: #f3eee5;
  border-radius: 999px;
  font-size: 12px;
}
.ranking-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) 78px 90px;
  gap: 8px;
  align-items: center;
  min-height: 34px;
  border-bottom: 1px solid #ebe5dc;
}
.ranking-row:last-child { border-bottom: 0; }
.ranking-row i {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  color: #fff;
  background: var(--header);
  border-radius: 50%;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}
.ranking-row span,
.ranking-row em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  text-align: right;
}
.ranking-section + .ranking-section {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid #ebe5dc;
}
.ranking-duo {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
.ranking-duo .ranking-section + .ranking-section {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.report-table-wrap {
  overflow-x: auto;
  border: 1px solid #e4dccf;
  border-radius: 4px;
}

@media (max-width: 900px) {
  .operations-performance-import {
    grid-template-columns: minmax(0, 1fr);
  }
  .operations-reconciliation-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .performance-scope-tabs {
    align-items: stretch;
    flex-wrap: wrap;
  }
  .performance-scope-tabs button {
    flex: 1 1 148px;
  }
  .ranking-duo {
    grid-template-columns: 1fr;
  }
  .performance-overview {
    grid-template-columns: minmax(0, 1fr);
  }
  .performance-overview-pair {
    grid-template-columns: minmax(0, 1fr);
  }
  .performance-overview-item {
    border-right: 0;
    border-bottom: 1px solid #e1d8cc;
  }
  .performance-overview-item:last-child { border-bottom: 0; }
  .performance-section-heading {
    align-items: flex-start;
    flex-direction: column;
  }
  .performance-rate-legend,
  .performance-support-totals { justify-content: flex-start; }
}
.report-section {
  display: grid;
  gap: 7px;
  margin-top: 10px;
}
.report-section > strong {
  color: var(--text);
  font-size: 13px;
}
.report-table {
  width: 100%;
  min-width: 650px;
  border-collapse: collapse;
  background: #fffdf8;
  font-size: 12px;
}
.report-table th,
.report-table td {
  padding: 8px;
  border-bottom: 1px solid #ebe5dc;
  text-align: left;
  white-space: nowrap;
}
.report-table th {
  color: #665f56;
  background: var(--panel-soft);
  font-weight: 900;
}
.module-person-list {
  margin-top: 3px;
  color: #8a7460;
  font-size: 11px;
  line-height: 1.45;
  white-space: normal;
}
.missing-attendance-cell {
  min-width: 150px;
  max-width: 260px;
  color: #9a463e;
  line-height: 1.5;
  white-space: normal;
}
.reason-box {
  display: grid;
  gap: 5px;
  margin-top: 10px;
  padding: 10px;
  color: #5f5850;
  background: #f8f2e8;
  border: 1px solid #e4d7c2;
  border-radius: 4px;
  line-height: 1.6;
  font-size: 12px;
}
.reason-box p { margin: 0; }
.people-list { display: grid; gap: 8px; }
.person-row {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) 68px;
  gap: 10px;
  align-items: center;
  min-height: 52px;
  padding: 8px;
  background: var(--panel-soft);
  border: 1px solid #e4dccf;
  border-radius: 4px;
}
.person-rank {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  color: #fff;
  background: var(--header);
  border-radius: 50%;
  font-size: 12px;
  font-weight: 900;
}
.person-main { display: grid; gap: 7px; min-width: 0; }
.person-main div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}
.person-main span {
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.person-score { display: grid; justify-items: end; gap: 2px; }
.person-score span { color: var(--muted); font-size: 12px; }

.wave-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.wave-card {
  overflow: hidden;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.wave-head {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 16px;
  color: #fff;
  background: var(--header);
}
.wave-head h2 { margin: 0; font-size: 20px; line-height: 1.2; }
.owner, .listing { margin: 6px 0 0; font-weight: 700; opacity: 0.92; }
.listing { margin: 0; min-width: 124px; text-align: right; line-height: 1.7; }
.node-list { padding: 10px 12px 4px; }
.node-row {
  display: grid;
  grid-template-columns: 116px 82px 82px 108px minmax(140px, 1fr);
  gap: 10px;
  align-items: center;
  min-height: 38px;
  border-bottom: 1px solid #ebe5dc;
}
.node-row-head {
  min-height: 30px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  background: var(--panel-soft);
  border: 1px solid #e7ded2;
  border-radius: 4px;
  padding: 0 8px;
}
.node-name { font-weight: 800; color: #2f2d2a; }
.node-date, .node-count { color: var(--muted); white-space: nowrap; }
.node-count { font-weight: 900; color: var(--text); }
.node-row.done-row {
  opacity: 0.58;
}
.node-row.done-row:hover {
  opacity: 0.9;
}
.tag {
  padding: 5px 7px;
  border-radius: 4px;
  text-align: center;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
.tag.done { color: #476b54; background: #e4efe5; }
.tag.progress { color: #4d6378; background: #e7edf1; }
.tag.warn { color: #8a682f; background: #f2e8d6; }
.tag.late { color: #974c46; background: #f2dfdc; }
.tag.future { color: #4d6378; background: #e7edf1; }
.tag.neutral { color: #6d675f; background: #ece7df; }
.bar-bg { height: 10px; overflow: hidden; background: #e3ddd4; border-radius: 999px; }
.bar { height: 100%; border-radius: 999px; }
.bar.done { background: var(--green); }
.bar.progress, .bar.future { background: var(--blue); }
.bar.warn { background: var(--orange); }
.bar.late { background: var(--red); }
.bar.neutral { background: var(--gray); }
.node-progress {
  display: grid;
  grid-template-columns: minmax(80px, 1fr) 42px;
  gap: 8px;
  align-items: center;
}
.node-progress span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-align: right;
}
.wave-foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  color: var(--muted);
  border-top: 1px solid #ebe5dc;
  font-size: 12px;
}
.wave-foot strong { color: var(--text); }
.attention {
  display: none;
  padding: 10px 14px;
  color: #665744;
  background: #f7f1e8;
  border-top: 1px solid #d7cab9;
  font-size: 12px;
  line-height: 1.6;
  white-space: pre-line;
}
.attention.show { display: block; }
.style-progress-board {
  display: grid;
  gap: 16px;
  margin-top: 14px;
}
.style-board-head,
.style-wave-section {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.style-board-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: end;
  padding: 14px 16px;
}
.style-board-head p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.style-board-head > span {
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
.style-filter-bar {
  display: grid;
  grid-template-columns: repeat(3, minmax(130px, 160px)) minmax(220px, 1fr) auto;
  gap: 10px;
  align-items: end;
  padding: 12px;
  background: #fffdf8;
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.style-filter-bar label {
  min-width: 0;
}
.style-filter-bar select,
.style-filter-bar input {
  width: 100%;
  background: var(--panel-soft);
}
.style-search-label {
  min-width: 220px;
}
.style-filter-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
}
.style-filter-actions button {
  min-width: 64px;
}
.style-wave-section {
  overflow: hidden;
}
.style-wave-head {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 16px;
  background: #fffdf8;
  color: var(--text);
  border: 1px solid var(--line);
  border-bottom: 0;
}
.style-wave-head h3 {
  margin: 0;
  font-size: 18px;
}
.style-wave-head p {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.style-wave-alert {
  display: grid;
  justify-items: end;
  align-content: center;
  min-width: 118px;
  color: var(--muted);
  font-size: 12px;
}
.style-wave-alert strong {
  color: var(--text);
  font-size: 14px;
}
.style-wave-alert.late strong { color: #9d4f49; }
.artwork-receipt-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
  gap: 8px;
  padding: 10px 12px;
  background: #fffdf8;
  border-bottom: 1px solid #ebe5dc;
}
.artwork-receipt-stats span {
  min-width: 0;
  padding: 7px 8px;
  background: #f4efe6;
  border: 1px solid #e3d7c5;
  border-radius: 4px;
}
.artwork-receipt-stats i {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.artwork-receipt-stats b {
  display: block;
  margin-top: 2px;
  color: var(--text);
  font-size: 18px;
}
.style-wave-chips {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(126px, 1fr));
  gap: 8px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border-bottom: 1px solid #ebe5dc;
}
.style-wave-chip {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 8px;
  align-items: center;
  padding: 8px 10px;
  background: #fffdf8;
  border: 1px solid #e4dccf;
  border-radius: 4px;
  color: inherit;
  font: inherit;
  font-size: 12px;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.style-wave-chip strong { color: var(--text); }
.style-wave-chip em,
.style-wave-chip i {
  color: var(--muted);
  font-style: normal;
}
.style-wave-chip b {
  color: #516d5a;
  font-size: 14px;
  text-align: right;
}
.style-wave-chip.late {
  background: #f4e5e2;
  border-color: #dec2bd;
}
.style-wave-chip.late b,
.style-wave-chip.late i { color: #9d4f49; }
.style-wave-chip.warn,
.style-wave-chip.progress,
.style-wave-chip.future {
  background: #f7eedc;
  border-color: #e2d0ae;
}
.style-wave-chip.neutral {
  background: #f2eee7;
}
.style-wave-chip:hover,
.style-wave-chip:focus-visible {
  border-color: #b4874f;
  box-shadow: 0 0 0 2px rgba(180, 135, 79, 0.16);
  outline: none;
}
.style-wave-chip.active {
  border-color: #9f6f32;
  box-shadow: inset 0 0 0 1px #9f6f32, 0 8px 18px rgba(73, 52, 28, 0.12);
}
.style-stage-focus-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px 14px;
  align-items: center;
  padding: 10px 14px;
  background: #fff7e5;
  border-bottom: 1px solid #e6d8bd;
  color: var(--text);
  font-size: 12px;
}
.style-stage-focus-panel strong {
  display: block;
  color: #8b3f35;
  font-size: 14px;
}
.style-stage-focus-panel span {
  color: var(--muted);
}
.style-stage-focus-panel p {
  grid-column: 1 / -1;
  margin: 0;
  color: #6a4b28;
  line-height: 1.6;
}
.style-stage-focus-panel button {
  min-width: 82px;
}
.style-card-scroller {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(300px, 320px);
  gap: 10px;
  overflow-x: auto;
  padding: 14px;
  overscroll-behavior-x: contain;
}
.style-progress-card {
  min-width: 0;
  overflow: hidden;
  background: #f4f6f0;
  border: 1px solid #d5decf;
  border-radius: 4px;
  box-shadow: 0 8px 18px rgba(52, 45, 36, 0.05);
}
.style-progress-card.late {
  background: #f6ebe8;
  border-color: #e1c5c0;
}
.style-progress-card.progress,
.style-progress-card.pending {
  background: #f7f1e4;
  border-color: #e4d6ba;
}
.style-thumb {
  position: relative;
  height: 300px;
  overflow: hidden;
  background: #eee8dd;
}
.style-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center center;
  background: #f4efe6;
}
.style-thumb span,
.style-thumb strong {
  position: absolute;
  z-index: 1;
  border-radius: 3px;
  font-size: 12px;
  font-weight: 900;
}
.style-thumb span {
  left: 8px;
  top: 8px;
  padding: 4px 7px;
  color: #fff;
  background: rgba(36, 35, 34, 0.84);
}
.style-thumb strong {
  right: 8px;
  bottom: 8px;
  padding: 6px 8px;
  color: #9d4f49;
  background: #f4dedb;
}
.style-progress-card.done .style-thumb strong {
  color: #4f7259;
  background: #e0ecdf;
}
.style-card-body {
  display: grid;
  gap: 8px;
  padding: 10px;
}
.style-code-row,
.style-meta-row,
.style-price-row {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
}
.style-code-row b {
  overflow: hidden;
  color: var(--text);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.style-code-row em {
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
}
.style-card-body p {
  margin: 0;
  min-height: 18px;
  color: var(--text);
  font-weight: 900;
}
.style-meta-row span,
.style-price-row span {
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.style-stage-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
  padding-top: 2px;
}
.style-stage-pill {
  display: flex;
  justify-content: space-between;
  gap: 5px;
  min-width: 0;
  padding: 4px 6px;
  background: rgba(255, 253, 248, 0.76);
  border: 1px solid #e5ded2;
  border-radius: 4px;
  font-size: 11px;
}
.style-stage-pill b,
.style-stage-pill em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.style-stage-pill em {
  color: var(--muted);
  font-style: normal;
}
.style-stage-pill.done em { color: #51735b; }
.style-stage-pill.late em { color: #9d4f49; }
.style-stage-review-entry {
  cursor: pointer;
  appearance: none;
  font-family: inherit;
}
.style-stage-review-entry b {
  color: #2b2118;
  font-weight: 900;
}
.style-stage-review-entry.future {
  background: #fffaf1;
  border-color: #dcc7a8;
}
.style-stage-review-entry.future b {
  color: #2b2118;
}
.style-stage-review-entry:hover,
.style-stage-review-entry:focus-visible {
  border-color: #b46a2a;
  background: #fff8ec;
  box-shadow: 0 0 0 2px rgba(180, 106, 42, 0.14);
  outline: none;
}
.style-stage-review-entry em {
  color: #9d4f49;
  font-weight: 900;
}
.style-flow-mini {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0;
  margin-top: 2px;
  padding: 9px 6px 7px;
  background: rgba(255, 253, 248, 0.64);
  border: 1px solid #e7ded2;
  border-radius: 4px;
}
.style-flow-step {
  display: grid;
  justify-items: center;
  gap: 4px;
  position: relative;
  min-width: 0;
  color: var(--muted);
  background: transparent !important;
  border: 0 !important;
  font-size: 10px;
}
.style-flow-step::before {
  content: "";
  position: absolute;
  top: 6px;
  left: -50%;
  width: 100%;
  height: 2px;
  background: #d9d2c7;
}
.style-flow-step.line-done::before { background: #8a9d8b; }
.style-flow-step:first-child::before { display: none; }
.style-flow-step i {
  position: relative;
  z-index: 1;
  width: 11px;
  height: 11px;
  box-sizing: border-box;
  background: #fffdf8;
  border: 2px solid #9d958a;
  border-radius: 50%;
}
.style-flow-step.done i {
  background: #6f8c73;
  border-color: #6f8c73;
}
.style-flow-step.late i,
.style-flow-step.warn i,
.style-flow-step.progress i,
.style-flow-step.future i {
  background: #fffdf8;
  border-color: #6b8297;
}
.style-flow-step b {
  max-width: 100%;
  overflow: hidden;
  color: #5f5850;
  font-weight: 700;
  line-height: 1.1;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.style-review-action {
  display: flex;
  justify-content: flex-end;
  margin-top: 2px;
}
.style-review-action button {
  min-height: 30px;
  padding: 0 10px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 900;
}
body.style-review-checklist-open {
  overflow: hidden;
}
.style-review-checklist-modal[hidden] {
  display: none;
}
.style-review-checklist-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  padding: 24px;
}
.style-review-checklist-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(31, 31, 31, 0.42);
}
.style-review-checklist-dialog {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  width: min(1240px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  background: #fffdf8;
  border: 1px solid #dccfb9;
  border-radius: 8px;
  box-shadow: 0 24px 70px rgba(32, 25, 18, 0.28);
}
.style-review-checklist-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 18px;
  background: #f7efe2;
  border-bottom: 1px solid #eadfcd;
}
.style-review-checklist-head span {
  color: #9d4f49;
  font-size: 12px;
  font-weight: 900;
}
.style-review-checklist-head h2 {
  margin: 4px 0;
  font-size: 18px;
}
.style-review-checklist-head p {
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}
.style-review-checklist-progress {
  margin-top: 6px;
  color: #7b5834;
  font-size: 12px;
  font-weight: 900;
}
.style-review-checklist-progress.has-fail {
  color: #9d4f49;
}
.style-review-checklist-progress.complete {
  color: #2f6b45;
}
.style-review-checklist-layout {
  display: grid;
  grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
  gap: 14px;
  min-height: 0;
  padding: 14px 18px;
  overflow: hidden;
}
.style-review-checklist-preview {
  display: grid;
  gap: 12px;
  align-content: start;
  padding: 12px;
  background: #fffaf1;
  border: 1px solid #eadfcd;
  border-radius: 8px;
}
.style-review-checklist-sidebar {
  position: sticky;
  top: 0;
  align-self: start;
  max-height: 100%;
  overflow: auto;
}
.style-review-checklist-preview-image {
  width: 100%;
  height: 320px;
  overflow: hidden;
  background: #fff;
  border: 1px solid #e2d6c5;
  border-radius: 6px;
}
.style-review-checklist-preview-image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.style-review-checklist-preview-text {
  display: grid;
  gap: 5px;
  min-width: 0;
}
.style-review-checklist-preview-text strong {
  color: var(--text);
  font-size: 18px;
}
.style-review-checklist-preview-text span,
.style-review-checklist-preview-text p {
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}
.style-review-checklist-close {
  width: 32px;
  height: 32px;
  border: 1px solid #d7c9b6;
  border-radius: 6px;
  color: #5f4635;
  background: #fffaf1;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.style-review-checklist-close:hover,
.style-review-checklist-close:focus-visible {
  outline: none;
  border-color: #b46a2a;
  box-shadow: 0 0 0 2px rgba(180, 106, 42, 0.14);
}
.style-review-checklist-rows {
  overflow: auto;
  min-width: 0;
  min-height: 0;
  padding: 0;
}
.style-review-checklist-content {
  overflow: auto;
}
.style-review-checklist-groups {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.style-review-checklist-group {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.style-review-checklist-group h3 {
  position: sticky;
  top: 0;
  z-index: 1;
  margin: 0;
  padding: 8px 10px;
  color: #201a16;
  font-size: 15px;
  background: #f4efe6;
  border: 1px solid #e2d7c5;
  border-radius: 6px;
}
.style-review-checklist-group-action {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  padding: 2px 2px 0;
}
.style-review-checklist-group-action button {
  min-height: 32px;
  padding: 5px 12px;
  color: #fff;
  background: #2f6b45;
  border: 1px solid #2f6b45;
  border-radius: 6px;
  font-weight: 900;
}
.style-review-checklist-group-action button:hover,
.style-review-checklist-group-action button:focus-visible {
  outline: none;
  background: #245437;
  border-color: #245437;
  box-shadow: 0 0 0 2px rgba(47, 107, 69, 0.16);
}
.style-review-checklist-group-action span {
  color: #7b7167;
  font-size: 12px;
}
.style-review-checklist-row {
  display: grid;
  grid-template-columns: minmax(150px, 0.75fr) minmax(220px, 1fr) auto;
  gap: 10px;
  align-items: start;
  padding: 8px 10px;
  background: #fff;
  border: 1px solid #eadfcd;
  border-radius: 8px;
}
.style-review-checklist-row[data-review-checklist-status="pass"] {
  border-color: #cbd9c5;
  background: #fbfff8;
}
.style-review-checklist-row[data-review-checklist-status="fail"] {
  border-color: #e5c0ba;
  background: #fff8f6;
}
.style-review-checklist-row[data-review-checklist-status="not_applicable"] {
  border-color: #e5c781;
  background: #fffaf0;
}
.style-review-checklist-main {
  display: grid;
  gap: 6px;
  min-width: 0;
}
.style-review-checklist-main strong {
  display: block;
  color: #201a16;
  font-size: 14px;
}
.style-review-checklist-main span {
  display: block;
  margin-top: 3px;
  color: #5f4635;
  line-height: 1.45;
}
.style-review-checklist-main span b {
  display: inline-flex;
  margin-right: 6px;
  color: #7b5834;
  font-size: 12px;
}
.style-review-checklist-main p {
  margin: 0;
  color: var(--muted);
  line-height: 1.45;
}
.style-review-checklist-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.style-review-checklist-tags em {
  padding: 3px 7px;
  color: #51735b;
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
  background: #eef4ea;
  border: 1px solid #cbd9c5;
  border-radius: 999px;
}
.style-review-checklist-tags em.danger {
  color: #9d4f49;
  background: #f7e3df;
  border-color: #e5c0ba;
}
.style-review-checklist-standard-box,
.style-review-checklist-judge,
.style-review-checklist-note {
  display: grid;
  gap: 6px;
}
.style-review-checklist-standard-box span,
.style-review-checklist-note span {
  color: #5f5850;
  font-size: 12px;
  font-weight: 800;
}
.style-review-checklist-standard-box {
  align-content: start;
  min-height: 74px;
  width: 100%;
  padding: 8px 9px;
  border: 1px solid #d8cdbd;
  border-radius: 6px;
  background: #fffdf8;
}
.style-review-checklist-standard-box strong {
  color: #5f4635;
  font-size: 13px;
  line-height: 1.45;
}
.style-review-standard-head {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
}
.style-review-standard-head button {
  min-height: 24px;
  padding: 3px 8px;
  color: #5f4635;
  background: #fffaf1;
  border: 1px solid #d8cdbd;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
}
.style-review-standard-head button:hover,
.style-review-standard-head button:focus-visible {
  outline: none;
  border-color: #b46a2a;
  box-shadow: 0 0 0 2px rgba(180, 106, 42, 0.14);
}
.style-review-checklist-standard-box.is-editing {
  gap: 8px;
  background: #fffaf1;
  border-color: #c98743;
}
.review-standard-edit-textarea {
  min-height: 86px;
  resize: vertical;
  padding: 8px;
  color: #201a16;
  border: 1px solid #d8cdbd;
  border-radius: 6px;
  font: inherit;
  line-height: 1.45;
}
.review-standard-edit-textarea:focus {
  outline: none;
  border-color: #b46a2a;
  box-shadow: 0 0 0 2px rgba(180, 106, 42, 0.14);
}
.review-standard-edit-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}
.review-standard-edit-actions button {
  min-height: 28px;
  padding: 4px 10px;
  border-radius: 6px;
  font-weight: 900;
}
.review-standard-edit-actions button:first-child {
  color: #fff;
  background: #1f1d1a;
  border-color: #1f1d1a;
}
.style-review-checklist-judge div {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
}
.style-review-checklist-judge button {
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  min-height: 34px;
  padding: 0;
  color: #5f5850;
  background: #fffdf8;
  border: 1px solid #d8cdbd;
  border-radius: 50%;
  font-size: 16px;
  font-weight: 900;
}
.style-review-checklist-judge button em {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.style-review-checklist-judge button[data-review-checklist-result="pass"].active {
  color: #fff;
  background: #2f6b45;
  border-color: #2f6b45;
}
.style-review-checklist-judge button[data-review-checklist-result="fail"].active {
  color: #fff;
  background: #9d4f49;
  border-color: #9d4f49;
}
.style-review-checklist-judge button[data-review-checklist-result="not_applicable"].active {
  color: #fff;
  background: #8a6a24;
  border-color: #8a6a24;
}
.style-review-checklist-quick-reasons {
  display: none;
  grid-column: 1 / -1;
  gap: 6px;
  padding: 8px 9px;
  background: #fffaf1;
  border: 1px dashed #d8cdbd;
  border-radius: 6px;
}
.style-review-checklist-quick-reasons.is-visible {
  display: grid;
}
.style-review-checklist-quick-reasons span {
  color: #5f5850;
  font-size: 12px;
  font-weight: 800;
}
.style-review-checklist-quick-reasons div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.style-review-checklist-quick-reasons button {
  min-height: 28px;
  padding: 4px 10px;
  color: #5f4635;
  background: #fffdf8;
  border: 1px solid #d8cdbd;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}
.style-review-checklist-quick-reasons button:hover,
.style-review-checklist-quick-reasons button:focus-visible,
.style-review-checklist-quick-reasons button.active {
  color: #fff;
  background: #8a6a24;
  border-color: #8a6a24;
  outline: none;
}
.style-review-checklist-note {
  display: none;
  grid-column: 1 / -1;
}
.style-review-checklist-note.is-visible {
  display: grid;
}
.style-review-checklist-note textarea {
  min-height: 54px;
  resize: vertical;
  border: 1px solid #d8cdbd;
  border-radius: 6px;
  padding: 8px;
  font: inherit;
  line-height: 1.45;
}
.style-review-checklist-note textarea:focus {
  outline: none;
  border-color: #b46a2a;
  box-shadow: 0 0 0 2px rgba(180, 106, 42, 0.14);
}
.style-review-checklist-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  padding: 12px 18px;
  background: #fffaf1;
  border-top: 1px solid #eadfcd;
}
.style-review-checklist-status {
  margin: 0 auto 0 0;
  color: #5f5850;
  font-size: 12px;
  font-weight: 800;
}
.style-review-checklist-status.success {
  color: #2f6b45;
}
.style-review-checklist-status.error {
  color: #a33d2b;
}
.style-review-checklist-actions button {
  min-height: 34px;
}
.style-note {
  display: -webkit-box;
  overflow: hidden;
  color: #665744;
  font-size: 12px;
  line-height: 1.45;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.state {
  padding: 44px 20px;
  color: var(--muted);
  text-align: center;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 4px;
}
.state.compact { padding: 22px 16px; box-shadow: none; }

.review-layout {
  display: grid;
  grid-template-columns: minmax(360px, 520px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  margin-top: 16px;
}
#reviewView.active {
  display: grid;
  grid-template-columns: minmax(360px, 520px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
#reviewView .review-layout {
  grid-template-columns: 1fr;
  gap: 14px;
  margin-top: 0;
  padding: 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: var(--shadow);
}
#reviewView .pending-panel,
#reviewView .review-history {
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
#reviewView .pending-panel {
  display: grid;
  gap: 10px;
}
#reviewView .review-document-head {
  margin-top: 0;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}
#reviewView .pending-review-card {
  grid-template-columns: 130px minmax(0, 1fr);
  background: var(--panel-soft);
}
#reviewView .pending-grid {
  grid-template-columns: repeat(4, minmax(120px, 1fr));
}
.upload-entry {
  display: grid;
  grid-template-columns: minmax(360px, 520px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.pending-panel,
.batch-upload-form,
.upload-result-panel,
.review-form,
.review-history {
  padding: 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: var(--shadow);
}
.pending-panel { margin-top: 0; }
.review-form {
  display: grid;
  gap: 12px;
}
.batch-upload-form {
  display: grid;
  gap: 12px;
}
.upload-kind {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
}
.batch-fixed-type {
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  color: #284b73;
  background: #eef4fb;
  border: 1px solid #c6d6e8;
  border-radius: 6px;
  line-height: 1.5;
}
.batch-fixed-type strong {
  color: #17263b;
}
.batch-fixed-type span {
  color: var(--muted);
  font-size: 12px;
}
.batch-upload-form input,
.batch-upload-form select,
.batch-upload-form textarea {
  width: 100%;
}
.batch-type-hint {
  padding: 9px 10px;
  color: #284b73;
  background: #eef4fb;
  border: 1px solid #c6d6e8;
  border-radius: 6px;
  line-height: 1.6;
}
.batch-preview {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.upload-batch-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.upload-batch-card {
  padding: 14px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.upload-type-tag {
  flex: 0 0 auto;
  padding: 5px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 900;
}
.upload-type-tag.review { color: #265f9c; background: #e3eef9; }
.upload-type-tag.modification { color: #1f6f4d; background: #dff2e9; }
.assistant-prompt {
  max-height: 170px;
  overflow: auto;
  margin: 10px 0 0;
  padding: 10px;
  color: #263244;
  background: #f8fafc;
  border: 1px solid #e3e8ef;
  border-radius: 6px;
  font: 12px/1.6 "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
  white-space: pre-wrap;
}
.sample-search {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: end;
}
.sample-search input,
.review-form select,
.review-form textarea,
.review-form label input {
  width: 100%;
}
.match-state {
  padding: 8px 10px;
  color: var(--muted);
  background: #f4f7fa;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.match-state.success { color: #1f6f4d; background: #e1f3ea; border-color: #b9dfcd; }
.match-state.error { color: #a73a3a; background: #f8dddd; border-color: #efb7b7; }
.sample-info {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  padding: 12px;
  background: #f8fafc;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.sample-info div {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.sample-info span {
  color: var(--muted);
  font-size: 12px;
}
.sample-info strong {
  overflow-wrap: anywhere;
  font-size: 13px;
}
.upload-box {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 64px;
  padding: 12px;
  background: #f8fafc;
  border: 1px dashed #aebccc;
  border-radius: 8px;
}
.upload-box.dragging { background: #eef6f1; border-color: var(--green); }
.upload-box span { color: var(--muted); }
.image-preview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.review-standard-panel {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 12px;
  background: #fffaf0;
}

.review-standard-head,
.review-standard-controls,
.review-release-row {
  display: flex;
  gap: 10px;
  align-items: flex-end;
  flex-wrap: wrap;
}

.review-standard-head {
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}

.review-standard-head span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 2px;
}

.review-measurement-rows {
  display: grid;
  gap: 8px;
  margin-top: 10px;
}

.review-measurement-row {
  display: grid;
  grid-template-columns: minmax(160px, 1.2fr) minmax(90px, .6fr) minmax(130px, .8fr) minmax(160px, 1fr);
  gap: 8px;
  align-items: center;
}

.review-measurement-name span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 2px;
}

.review-standard-manager {
  display: grid;
  gap: 10px;
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}

.review-standard-create-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr)) auto auto minmax(160px, 1.2fr) auto;
  gap: 8px;
  align-items: center;
}

.review-standard-create-form label {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 36px;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: #fff;
  font-size: 12px;
}

.review-standard-list {
  display: grid;
  gap: 6px;
}

.review-standard-list-item,
.saved-review-measurements div {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: #fff;
  font-size: 12px;
}

.review-standard-list-item span,
.saved-review-measurements span,
.saved-review-measurements small {
  color: var(--muted);
}

.review-standard-list-item b,
.saved-review-measurements em {
  padding: 2px 8px;
  border-radius: 999px;
  background: #fff4df;
  color: #9a4d12;
  font-style: normal;
}

.review-standard-list-item b.danger {
  background: #ffe6e2;
  color: #a33a2b;
}

.review-measurement-detail-row td {
  background: #fffaf0;
}

.saved-review-measurements {
  display: grid;
  gap: 6px;
}

.preview-item {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
  background: #eef2f6;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.preview-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.preview-item button {
  position: absolute;
  top: 5px;
  right: 5px;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(17, 29, 47, 0.78);
  line-height: 1;
}
.preview-item span {
  position: absolute;
  left: 5px;
  bottom: 5px;
  padding: 2px 5px;
  color: #fff;
  background: rgba(17, 29, 47, 0.7);
  border-radius: 4px;
  font-size: 11px;
}
.form-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}
.form-actions .danger {
  color: #9a3b36;
  border-color: #e3b8b2;
  background: #f8e9e5;
}
.record-actions { margin-top: 10px; }
.pending-review-list {
  display: grid;
  gap: 12px;
}
.pending-review-card {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 14px;
  padding: 12px;
  background: #f8fafc;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.pending-image {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: center top;
  background: #e7edf3;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.pending-content {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.pending-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.pending-grid div,
.pending-grid label {
  min-width: 0;
  display: grid;
  gap: 4px;
  padding: 9px;
  background: #fff;
  border: 1px solid #e3e8ef;
  border-radius: 6px;
}
.pending-grid span,
.pending-wide-field span,
.candidate-list span {
  color: var(--muted);
  font-size: 12px;
}
.pending-grid strong {
  display: block;
  margin-top: 4px;
  overflow-wrap: anywhere;
}
.pending-grid input,
.pending-grid select,
.pending-wide-field textarea {
  width: 100%;
}
.pending-wide-field {
  display: grid;
  gap: 5px;
}
.candidate-list {
  padding: 9px 10px;
  background: #fff;
  border: 1px solid #e3e8ef;
  border-radius: 6px;
}
.candidate-list summary {
  cursor: pointer;
  font-weight: 800;
}
.candidate-list div {
  display: grid;
  grid-template-columns: 140px 90px 90px 1fr;
  gap: 8px;
  padding-top: 8px;
  align-items: center;
}
.review-record-list {
  display: grid;
  gap: 10px;
}
.review-document-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}
.doc-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}
.review-document-head p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.review-document {
  margin-top: 10px;
}
.upload-filter-bar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 220px));
  gap: 10px;
  align-items: end;
  margin-top: 12px;
  padding: 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 8px;
}
.upload-filter-bar button {
  min-height: 34px;
}
.upload-filter-bar label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.upload-filter-bar select,
.upload-filter-bar input {
  min-height: 34px;
  background: #fff;
}
.review-document-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 8px;
}
.review-document-summary span {
  padding: 4px 8px;
  color: #284761;
  background: #edf4fb;
  border: 1px solid #d8e7f4;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 800;
}
.review-document-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.review-document-table {
  width: 100%;
  min-width: 1060px;
  border-collapse: collapse;
  background: #fff;
  font-size: 12px;
}
.modification-document-table {
  min-width: 1680px;
  background: var(--panel);
}
.review-document-table th,
.review-document-table td {
  padding: 8px;
  border-bottom: 1px solid #e7edf4;
  border-right: 1px solid #e7edf4;
  text-align: left;
  vertical-align: top;
  line-height: 1.5;
}
.review-document-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  color: #17263b;
  background: #eef6ef;
  font-weight: 900;
  white-space: nowrap;
}
.modification-document-table th {
  color: var(--text);
  background: #efe7dc;
  border-color: var(--line);
  text-align: center;
}
.modification-document-table td {
  background: var(--panel);
  border-color: var(--line);
  color: var(--text);
  vertical-align: middle;
}
.modification-document-table tbody tr:nth-child(even) td {
  background: var(--panel-soft);
}
.modification-document-table td:nth-child(2),
.modification-document-table td:nth-child(3),
.modification-document-table td:nth-child(4),
.modification-document-table td:nth-child(5),
.modification-document-table td:nth-child(6),
.modification-document-table td:nth-child(7),
.modification-document-table td:nth-child(8),
.modification-document-table td:nth-child(9),
.modification-document-table td:nth-child(11),
.modification-document-table td:nth-child(12),
.modification-document-table td:nth-child(13),
.modification-document-table td:nth-child(14),
.modification-document-table td:nth-child(15) {
  text-align: center;
}
.modification-document-table .reason-cell {
  min-width: 260px;
  text-align: left;
  white-space: normal;
}
.review-document-table th:last-child,
.review-document-table td:last-child {
  border-right: 0;
}
.review-document-table tbody tr:last-child td {
  border-bottom: 0;
}
.doc-image-cell img {
  display: block;
  width: 54px;
  height: 54px;
  object-fit: cover;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.modification-image-cell img {
  width: 116px;
  height: 86px;
  margin: 0 auto;
  object-fit: cover;
  object-position: center top;
}
.pending-modification-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
}
.mod-pending-list {
  display: grid;
  gap: 10px;
}
.mod-pending-card {
  display: grid;
  grid-template-columns: 130px minmax(0, 1fr);
  gap: 12px;
  padding: 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 8px;
}
.mod-pending-card .form-actions {
  grid-column: 2;
}
.mod-pending-fields {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: 8px;
}
.mod-pending-fields label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.mod-pending-fields label.wide {
  grid-column: 1 / -1;
}
.mod-pending-fields input,
.mod-pending-fields textarea {
  width: 100%;
}
.month-document-section {
  display: grid;
  gap: 8px;
  margin-top: 12px;
}
.month-document-section h3 {
  margin: 0;
  color: var(--text);
  font-size: 15px;
}
.muted {
  color: var(--muted);
}
.review-record {
  padding: 14px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.record-main,
.record-meta {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
}
.record-main h3 {
  margin: 0;
  font-size: 17px;
}
.record-main p {
  margin: 4px 0 0;
  color: var(--muted);
}
.pass-tag {
  flex: 0 0 auto;
  padding: 5px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 900;
}
.pass-tag.yes { color: #1f6f4d; background: #dff2e9; }
.pass-tag.no { color: #a73a3a; background: #f8dddd; }
.pass-tag.pending { color: #75611d; background: #f6edc8; }
.record-meta {
  justify-content: flex-start;
  flex-wrap: wrap;
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
}
.sync-tag {
  padding: 2px 6px;
  border-radius: 5px;
  font-weight: 900;
}
.sync-tag.pending { color: #75611d; background: #f6edc8; }
.sync-tag.synced { color: #1f6f4d; background: #dff2e9; }
.sync-tag.failed { color: #a73a3a; background: #f8dddd; }
.record-store-tag {
  display: inline-flex;
  width: fit-content;
  margin-top: 10px;
  padding: 5px 8px;
  color: #1f6f4d;
  background: #dff2e9;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 900;
}
.record-text {
  margin-top: 8px;
  color: #263244;
  line-height: 1.6;
  overflow-wrap: anywhere;
}
.record-images {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.record-images img {
  width: 74px;
  height: 74px;
  object-fit: cover;
  border: 1px solid var(--line);
  border-radius: 8px;
}

.task-filter-bar {
  display: grid;
  grid-template-columns: minmax(150px, 190px) minmax(220px, 1fr) minmax(150px, 190px) auto auto;
  gap: 10px;
  align-items: end;
  margin-bottom: 14px;
  padding: 12px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.task-filter-bar label {
  min-width: 0;
  gap: 6px;
}
.task-filter-bar input,
.task-filter-bar select {
  width: 100%;
  height: 34px;
  background: #fbf8f2;
  border-color: #d9cbb8;
}
.task-filter-bar button {
  height: 34px;
}

#taskFilterBar {
  display: none;
}

.task-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.task-summary-card {
  min-height: 94px;
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.task-summary-card span,
.task-summary-card em {
  display: block;
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
}
.task-summary-card strong {
  display: block;
  margin: 6px 0 4px;
  color: #273244;
  font-size: 26px;
  line-height: 1;
}
.task-summary-card.main strong { color: #255d73; }
.task-summary-card.late strong { color: var(--red); }
.task-stage-panel {
  padding: 14px;
  margin-bottom: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.task-stage-board {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
}
.task-stage-lane {
  display: grid;
  gap: 10px;
  min-height: 230px;
  padding: 12px;
  background: #fbf8f2;
  border: 1px solid #d9cbb8;
  border-top: 4px solid #8a7b67;
  border-radius: 4px;
}
.task-stage-lane.paper { border-top-color: #9b705c; }
.task-stage-lane.sample { border-top-color: #7f8d77; }
.task-stage-lane.review { border-top-color: #9a736f; }
.task-stage-lane.price { border-top-color: #607383; }
.task-stage-lane.clerk { border-top-color: #a68b63; }
.task-stage-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.task-stage-head strong,
.task-stage-head span {
  display: block;
}
.task-stage-head strong {
  font-size: 16px;
}
.task-stage-head span,
.task-stage-meta,
.task-person-row em {
  color: var(--muted);
  font-size: 12px;
}
.task-stage-head b {
  display: grid;
  place-items: center;
  flex: 0 0 38px;
  height: 32px;
  color: #fff;
  background: var(--header);
  border-radius: 4px;
  font-size: 18px;
}
.task-stage-meter {
  height: 8px;
  overflow: hidden;
  background: #e8e0d6;
  border-radius: 999px;
}
.task-stage-meter span {
  display: block;
  width: var(--pct);
  height: 100%;
  background: #7f8d77;
  border-radius: inherit;
}
.task-stage-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
}
.task-stage-meta .late {
  color: var(--red);
  font-weight: 900;
}
.task-stage-people {
  display: grid;
  gap: 7px;
}
.task-person-row {
  padding: 8px;
  background: #fffdf8;
  border: 1px solid #e5dccf;
  border-radius: 4px;
}
.task-person-row strong,
.task-person-row span,
.task-person-row em {
  display: block;
}
.task-person-row span {
  margin-top: 2px;
  color: #273244;
  font-size: 12px;
  font-weight: 900;
}
.task-stage-empty {
  display: grid;
  place-items: center;
  min-height: 78px;
  color: var(--muted);
  background: #fffdf8;
  border: 1px dashed #d8cabb;
  border-radius: 4px;
}
.task-board-panel {
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}
.task-list-details > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
  list-style: none;
}
.task-list-details > summary::-webkit-details-marker {
  display: none;
}
.task-list-details > summary > span:last-child {
  color: var(--muted);
  font-size: 12px;
}
.task-list-details[open] > summary {
  margin-bottom: 12px;
}
.task-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 320px));
  gap: 12px;
  align-items: start;
}
.task-card {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  min-height: 0;
  padding: 10px;
  background: #fbf8f2;
  border: 1px solid #d9cbb8;
  border-left: 4px solid #7c947f;
  border-radius: 4px;
}
.task-card.late {
  border-left-color: var(--red);
  background: #f7ebe7;
}
.task-image {
  width: 100%;
  height: 300px;
  overflow: hidden;
  background: #eee7dd;
  border: 1px solid var(--line);
  border-radius: 4px;
}
.task-image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center center;
  background: #f4efe6;
  display: block;
}
.task-image-placeholder {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  color: var(--muted);
  font-size: 12px;
}
.task-card-body {
  display: grid;
  gap: 8px;
  min-width: 0;
}
.task-card-head,
.task-card-main {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.task-card-head strong {
  display: block;
  font-size: 16px;
}
.task-card-head span,
.task-card-head em,
.task-card-main span {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}
.task-card-head em {
  flex: 0 0 auto;
  height: fit-content;
  padding: 3px 7px;
  color: #5b523f;
  background: #efe7da;
  border-radius: 999px;
}
.task-card-main b {
  color: #111;
  overflow-wrap: anywhere;
}
.task-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 10px;
}
.task-meta-grid span {
  min-width: 0;
  color: #283548;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.task-meta-grid i {
  display: block;
  margin-bottom: 1px;
  color: var(--muted);
  font-style: normal;
  font-size: 11px;
}
.task-card p {
  margin: 0;
  color: #514a42;
  font-size: 12px;
  line-height: 1.5;
}
.task-card-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.task-card-actions button {
  min-width: 92px;
}

.task-stage-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
  color: var(--muted);
  font-size: 12px;
}
.task-stage-toolbar strong {
  color: var(--text);
  font-size: 15px;
}
.task-stage-board {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}
.task-stage-lane {
  display: block;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  background: #fcfaf5;
  border: 1px solid #ded2c2;
  border-top: 0;
  border-radius: 4px;
}
.task-stage-lane.artwork {
  border-color: #c98237;
}
.task-stage-lane.artwork summary {
  background: #fff3df;
  border-top-color: #c98237;
}
.task-stage-lane.artwork .task-lane-badges b {
  background: #9a5426;
}
.task-stage-lane summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 42px;
  padding: 9px 12px;
  cursor: pointer;
  background: #f7f1e7;
  border-top: 1px solid #ded2c2;
  list-style: none;
}
.task-stage-lane summary::-webkit-details-marker {
  display: none;
}
.task-stage-lane summary::before {
  content: "›";
  color: #8c7659;
  font-weight: 900;
  transform: rotate(0deg);
  transition: transform .16s ease;
}
.task-stage-lane[open] summary::before {
  transform: rotate(90deg);
}
.task-lane-title {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.task-lane-title i {
  width: 22px;
  text-align: center;
  font-style: normal;
}
.task-lane-title strong {
  color: var(--text);
  font-size: 15px;
}
.task-lane-title em {
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
}
.task-lane-badges {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}
.task-lane-badges b,
.task-lane-badges mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 24px;
  padding: 0 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
}
.task-lane-badges b {
  color: #fff;
  background: #6b4a2d;
}
.task-lane-badges mark {
  color: #a65a00;
  background: #fff1d7;
  border: 1px solid #f1b15d;
}
.task-lane-body {
  padding: 10px 12px 12px;
  background: #fffdf8;
}
.task-lane-insight {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 8px;
  color: #6b6259;
  font-size: 12px;
}
.task-lane-insight span {
  padding: 4px 8px;
  background: #f2eadf;
  border-radius: 999px;
}
.task-lane-insight b {
  color: #6b3e25;
}
.task-stage-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 9px;
}
.task-stage-chips span {
  padding: 4px 9px;
  color: #5e554d;
  background: #f6efe4;
  border: 1px solid #e2d4c4;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}
.task-stage-chips span.late {
  color: #9d4f2d;
  background: #fff1df;
  border-color: #eead68;
}
.task-stage-people {
  display: grid;
  gap: 6px;
}
.task-artwork-followup {
  display: grid;
  grid-template-columns: minmax(280px, 0.9fr) minmax(360px, 1.4fr);
  gap: 10px;
  margin: 0 0 10px;
}
.task-artwork-followup section {
  overflow: hidden;
  background: #fffaf1;
  border: 1px solid #e2b574;
  border-radius: 4px;
}
.task-artwork-followup-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 38px;
  padding: 8px 10px;
  background: #fff4df;
  border-bottom: 1px solid #ead3af;
}
.task-artwork-followup-head strong {
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-followup-head span {
  color: #7b5632;
  font-size: 12px;
}
.task-artwork-priority-list,
.task-artwork-designer-list {
  display: grid;
  gap: 7px;
  padding: 8px;
}
.task-artwork-priority-row,
.task-artwork-designer-row {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 8px;
  background: #fffdf8;
  border: 1px solid #ead7ba;
  border-radius: 4px;
}
.task-artwork-priority-row > div:first-child,
.task-artwork-designer-row > div:first-child {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}
.task-artwork-priority-row strong,
.task-artwork-designer-row strong {
  color: #1f2c37;
  font-size: 13px;
  white-space: nowrap;
}
.task-artwork-priority-row span,
.task-artwork-designer-row span {
  min-width: 0;
  overflow: hidden;
  color: #6f665c;
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-artwork-priority-meter {
  height: 5px;
  overflow: hidden;
  background: #f2dfbf;
  border-radius: 999px;
}
.task-artwork-priority-meter span {
  display: block;
  width: var(--pct, 0%);
  height: 100%;
  background: #9a5426;
}
.task-artwork-priority-tags,
.task-artwork-designer-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.task-artwork-priority-tags b,
.task-artwork-designer-stats span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 9px;
  color: #6b4a2a;
  background: #fffaf1;
  border: 1px solid #ead3af;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.task-artwork-priority-tags b.warn,
.task-artwork-designer-stats span.warn {
  color: #a14c21;
  background: #fff4e5;
  border-color: #d89449;
}
.task-artwork-designer-stats i {
  margin-right: 4px;
  color: #7d6f60;
  font-style: normal;
}
.task-artwork-followup-empty {
  padding: 10px 12px;
  color: #7d6f60;
  background: #fff7e8;
  border: 1px dashed #dfb978;
  border-radius: 4px;
  font-size: 12px;
}
.task-artwork-wave-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 8px;
  margin: 0 0 10px;
}
.task-artwork-month-groups {
  display: grid;
  gap: 10px;
  margin: 0 0 10px;
}
.task-artwork-month-group {
  overflow: hidden;
  background: #fffaf1;
  border: 1px solid #df9c54;
  border-radius: 4px;
}
.task-artwork-month-group > summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  padding: 8px 10px;
  background: #fff2dc;
  border-bottom: 1px solid #e7c28b;
  cursor: pointer;
}
.task-artwork-month-group > summary strong {
  margin-right: auto;
  color: #1f2c37;
  font-size: 15px;
}
.task-artwork-month-group > summary span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 9px;
  color: #6b4a2a;
  background: #fffaf1;
  border: 1px solid #ead3af;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.task-artwork-month-group > summary span.warn {
  color: #a14c21;
  background: #fff4e5;
  border-color: #d89449;
}
.task-artwork-month-group .task-artwork-wave-summary {
  margin: 0;
  padding: 8px;
}
.task-artwork-wave-summary.empty {
  padding: 10px 12px;
  color: #7d6f60;
  background: #fff7e8;
  border: 1px dashed #dfb978;
  border-radius: 4px;
  font-size: 12px;
}
.task-artwork-pending-overview,
.task-artwork-pending-section,
.task-artwork-wave-filter-panel {
  display: grid;
  gap: 8px;
  margin: 0 0 10px;
}
.task-artwork-section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 42px;
  padding: 8px 10px;
  background: #fffaf1;
  border: 1px solid #e2b574;
  border-radius: 4px;
}
.task-artwork-section-head > div {
  display: grid;
  gap: 2px;
  min-width: 0;
}
.task-artwork-section-head strong {
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-section-head span {
  color: #7b5632;
  font-size: 12px;
}
.task-artwork-section-head button {
  min-height: 30px;
  padding: 0 12px;
  color: #6b4a2a;
  background: #fffaf1;
  border: 1px solid #d8b17a;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}
.task-artwork-section-head button.active {
  color: #fff;
  background: #9a5426;
  border-color: #9a5426;
}
.task-artwork-section-head button:disabled {
  color: #9f9181;
  cursor: default;
  background: #f5efe4;
  border-color: #e2d2bd;
}
.task-artwork-pending-details {
  display: grid;
  gap: 8px;
}
.task-artwork-pending-details[hidden] {
  display: none;
}
.task-artwork-overview-wave {
  display: grid;
  gap: 8px;
  padding: 8px;
  background: #fffaf1;
  border: 1px solid #e7c28b;
  border-radius: 4px;
}
.task-artwork-overview-wave[hidden] {
  display: none;
}
.task-artwork-overview-wave-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: #5f3d1f;
  font-size: 13px;
}
.task-artwork-overview-list {
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}
.task-artwork-wave-item {
  display: grid;
  width: 100%;
  gap: 7px;
  padding: 10px;
  text-align: left;
  background: #fffaf1;
  border: 1px solid #e7c28b;
  border-radius: 4px;
}
.task-artwork-wave-item.behind {
  background: #fff4e5;
  border-color: #d89449;
}
.task-artwork-wave-item.active {
  box-shadow: 0 0 0 2px #9a5426 inset;
}
.task-artwork-wave-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.task-artwork-wave-head strong {
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-wave-head span {
  color: #8a5a2e;
  font-size: 12px;
  font-weight: 900;
}
.task-artwork-wave-meter {
  height: 6px;
  overflow: hidden;
  background: #f2dfbf;
  border-radius: 999px;
}
.task-artwork-wave-meter span {
  display: block;
  width: var(--pct, 0%);
  height: 100%;
  background: #9a5426;
}
.task-artwork-wave-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(82px, 1fr));
  gap: 6px;
}
.task-artwork-wave-stats span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 6px;
  background: #fffdf8;
  border: 1px solid #ead7ba;
  border-radius: 4px;
}
.task-artwork-wave-stats i {
  color: #7d6f60;
  font-size: 11px;
  font-style: normal;
  white-space: nowrap;
}
.task-artwork-wave-stats b {
  color: #1f2c37;
  font-size: 16px;
}
.task-artwork-wave-stats span.warn b {
  color: #b6532f;
}
.task-artwork-wave-filter-actions {
  display: flex;
  justify-content: flex-end;
}
.task-artwork-wave-filter-actions button {
  min-height: 30px;
  padding: 0 14px;
  color: #fff;
  background: #1f1d1a;
  border: 1px solid #1f1d1a;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}
.task-artwork-wave-filter-actions button.active {
  background: #9a5426;
  border-color: #9a5426;
}
.task-artwork-wave-filter-panel .task-artwork-wave-summary {
  grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
}
.task-artwork-history {
  overflow: hidden;
  margin: 0 0 10px;
  background: #fffaf1;
  border: 1px solid #e2b574;
  border-radius: 4px;
}
.task-artwork-history > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 40px;
  padding: 8px 10px;
  cursor: pointer;
  background: #fff4df;
  list-style: none;
}
.task-artwork-history > summary::-webkit-details-marker {
  display: none;
}
.task-artwork-history > summary strong {
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-history > summary span {
  color: #7b5632;
  font-size: 12px;
}
.task-artwork-history > summary b {
  color: #9a5426;
}
.task-artwork-history-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr)) minmax(180px, 1.4fr);
  gap: 8px;
  padding: 8px;
  border-top: 1px solid #ead3af;
}
.task-artwork-history-filters select,
.task-artwork-history-filters input {
  width: 100%;
  min-height: 34px;
  padding: 0 9px;
  background: #fffdf8;
  border: 1px solid #dac9b3;
  border-radius: 4px;
}
.task-artwork-history-table {
  display: grid;
  gap: 1px;
  padding: 0 8px 8px;
}
.task-artwork-history-row {
  display: grid;
  grid-template-columns: 46px minmax(160px, 1.2fr) minmax(90px, 0.8fr) minmax(84px, 0.7fr) minmax(150px, 1fr) minmax(86px, 0.7fr);
  align-items: center;
  gap: 8px;
  min-height: 54px;
  padding: 6px 8px;
  background: #fffdf8;
  border: 1px solid #ead7ba;
  border-radius: 4px;
}
.task-artwork-history-row.head {
  min-height: 32px;
  color: #7d6f60;
  background: #fbf0df;
  font-size: 12px;
  font-weight: 900;
}
.task-artwork-history-row[hidden] {
  display: none;
}
.task-artwork-history-row .task-person-thumb {
  width: 38px;
  height: 38px;
}
.task-artwork-history-row > span,
.task-artwork-history-row > strong,
.task-artwork-history-style b,
.task-artwork-history-style span,
.task-artwork-history-style em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-artwork-history-style {
  display: grid;
  gap: 2px;
  min-width: 0;
}
.task-artwork-history-style b {
  color: #1f2c37;
  font-size: 12px;
}
.task-artwork-history-style span,
.task-artwork-history-style em,
.task-artwork-history-row > span {
  color: #6f665c;
  font-size: 11px;
  font-style: normal;
}
.task-artwork-history-row > strong {
  font-size: 11px;
}
.task-artwork-history-row > strong.ok {
  color: #14704d;
}
.task-artwork-history-row > strong.late {
  color: #b6532f;
}
.task-artwork-history-empty {
  padding: 10px 12px;
  color: #7d6f60;
  background: #fff7e8;
  border: 1px dashed #dfb978;
  border-radius: 4px;
  font-size: 12px;
}
.task-artwork-browser {
  display: grid;
  gap: 10px;
  margin: 0 0 10px;
}
.task-artwork-browser-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 46px;
  padding: 9px 10px;
  background: #fffaf1;
  border: 1px solid #e2b574;
  border-radius: 4px;
}
.task-artwork-browser-head > div {
  display: grid;
  gap: 2px;
}
.task-artwork-browser-head strong {
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-browser-head span {
  color: #7b5632;
  font-size: 12px;
}
.task-artwork-browser-head > span {
  font-weight: 900;
  white-space: nowrap;
}
.task-artwork-browser-filters {
  display: grid;
  grid-template-columns: 170px 170px minmax(220px, 1fr) auto auto;
  align-items: end;
  gap: 8px;
  padding: 10px;
  background: #fffdf8;
  border: 1px solid #ead7ba;
  border-radius: 4px;
}
.task-artwork-browser-filters label {
  display: grid;
  gap: 5px;
  min-width: 0;
  color: #6f665c;
  font-size: 12px;
}
.task-artwork-browser-filters select,
.task-artwork-browser-filters input {
  width: 100%;
  min-width: 0;
  min-height: 36px;
  padding: 0 10px;
  color: #1f2c37;
  background: #fff;
  border: 1px solid #d9c7ad;
  border-radius: 4px;
  font: inherit;
}
.task-artwork-browser-statuses {
  display: inline-flex;
  align-items: stretch;
  min-height: 36px;
  overflow: hidden;
  border: 1px solid #d8b17a;
  border-radius: 4px;
}
.task-artwork-browser-statuses button,
.task-artwork-browser-reset {
  min-height: 36px;
  padding: 0 11px;
  color: #6b4a2a;
  background: #fffaf1;
  border: 0;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
  cursor: pointer;
}
.task-artwork-browser-statuses button + button {
  border-left: 1px solid #e4c89f;
}
.task-artwork-browser-statuses button.active {
  color: #fff;
  background: #9a5426;
}
.task-artwork-browser-reset {
  border: 1px solid #d8b17a;
  border-radius: 4px;
}
.task-artwork-browser-groups {
  display: grid;
  gap: 12px;
}
.task-artwork-browser-wave {
  display: grid;
  gap: 8px;
  padding-top: 1px;
  border-top: 1px solid #df9c54;
}
.task-artwork-browser-wave[hidden],
.task-artwork-browser-row[hidden],
.task-artwork-browser-empty[hidden] {
  display: none;
}
.task-artwork-browser-wave-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  min-height: 42px;
  padding: 8px 10px;
  background: #fff2dc;
  border-bottom: 1px solid #e7c28b;
}
.task-artwork-browser-wave-head strong {
  margin-right: auto;
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-browser-wave-head span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 9px;
  color: #6b4a2a;
  background: #fffaf1;
  border: 1px solid #ead3af;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.task-artwork-browser-wave-head span.plan {
  color: #1f2c37;
  background: #fff;
  border-color: #bd7a2f;
}
.task-artwork-browser-wave-head span.warn {
  color: #a14c21;
  background: #fff4e5;
  border-color: #d89449;
}
.task-artwork-browser-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 320px));
  gap: 8px;
  align-items: start;
}
.task-artwork-browser-row .task-artwork-status strong.warn {
  color: #a14c21;
}
.task-artwork-browser-empty {
  padding: 14px 12px;
  color: #7d6f60;
  text-align: center;
  background: #fff7e8;
  border: 1px dashed #dfb978;
  border-radius: 4px;
  font-size: 12px;
}
.task-artwork-quick-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 320px));
  gap: 8px;
  margin: 0 0 10px;
  align-items: start;
}
.task-artwork-quick-list.empty,
.task-artwork-more {
  padding: 10px 12px;
  color: #7d6f60;
  background: #fff7e8;
  border: 1px dashed #dfb978;
  border-radius: 4px;
  font-size: 12px;
}
.task-artwork-more {
  display: flex;
  align-items: center;
  min-height: 52px;
}
.task-artwork-wave-groups {
  display: grid;
  gap: 10px;
  margin: 0 0 10px;
}
.task-artwork-task-wave {
  overflow: hidden;
  background: #fffaf1;
  border: 1px solid #df9c54;
  border-radius: 4px;
}
.task-artwork-task-wave-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  padding: 8px 10px;
  background: #fff2dc;
  border-bottom: 1px solid #e7c28b;
}
.task-artwork-task-wave-head strong {
  margin-right: auto;
  color: #1f2c37;
  font-size: 14px;
}
.task-artwork-task-wave-head span,
.task-artwork-task-wave-head button {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 9px;
  color: #6b4a2a;
  background: #fffaf1;
  border: 1px solid #ead3af;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.task-artwork-task-wave-head button {
  cursor: pointer;
}
.task-artwork-task-wave-head button.active {
  color: #fff;
  background: #9a5426;
  border-color: #9a5426;
}
.task-artwork-task-wave-head span.warn,
.task-artwork-task-wave-head button.warn {
  color: #a14c21;
  background: #fff4e5;
  border-color: #d89449;
}
.task-artwork-task-wave-head button.warn.active {
  color: #fff;
  background: #b6532f;
  border-color: #b6532f;
}
.task-artwork-task-wave-head span.plan {
  color: #1f2c37;
  background: #fff;
  border-color: #bd7a2f;
}
.task-artwork-wave-view {
  display: none;
}
.task-artwork-wave-view.active {
  display: block;
}
.task-artwork-task-wave .task-artwork-quick-list {
  margin: 0;
  padding: 8px;
}
.task-artwork-quick-item {
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 8px;
  min-height: 0;
  padding: 10px;
  background: #fffaf1;
  border: 1px solid #e7c28b;
  border-radius: 4px;
}
.task-artwork-quick-item.late {
  background: #fff3df;
  border-color: #d89449;
}
.task-artwork-quick-item.signed {
  background: #f7fbf5;
  border-color: #c9dabc;
}
.task-artwork-copy,
.task-artwork-status {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.task-artwork-quick-item .task-person-thumb {
  width: 100%;
  height: 300px;
  background: #f4efe6;
  border: 1px solid #ead7ba;
  border-radius: 4px;
}

.task-artwork-quick-item .task-person-thumb img {
  object-fit: contain;
  object-position: center center;
  background: #f4efe6;
}

.task-artwork-quick-item .task-artwork-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.task-pricing-wave-groups {
  margin-top: 2px;
}
.task-pricing-task-wave {
  background: #f8fbfb;
  border-color: #91a5ad;
}
.task-pricing-task-wave .task-artwork-task-wave-head,
.task-pricing-task-wave-head {
  background: #eef4f5;
  border-bottom-color: #c6d4d8;
}
.task-pricing-task-wave .task-artwork-task-wave-head strong {
  color: #1f2c37;
}
.task-pricing-task-wave .task-artwork-task-wave-head span,
.task-pricing-task-wave .task-artwork-task-wave-head button {
  color: #314b56;
  background: #ffffff;
  border-color: #c6d4d8;
}
.task-pricing-task-wave .task-artwork-task-wave-head button.active {
  color: #ffffff;
  background: #355667;
  border-color: #355667;
}
.task-pricing-task-wave .task-artwork-task-wave-head button.warn {
  color: #9a5426;
  border-color: #d89449;
}
.task-pricing-task-wave .task-artwork-task-wave-head button.warn.active {
  color: #ffffff;
  background: #9a5426;
  border-color: #9a5426;
}
.task-pricing-quick-list.empty {
  background: #f8fbfb;
  border-color: #c6d4d8;
}
.task-pricing-quick-item {
  background: #f8fbfb;
  border-color: #c6d4d8;
}
.task-pricing-quick-item.confirmed {
  background: #f7fbf5;
  border-color: #c9dabc;
}
.task-pricing-quick-item .task-person-thumb {
  width: 100%;
  height: 300px;
  background: #f1f5f5;
  border: 1px solid #c6d4d8;
  border-radius: 4px;
}
.task-pricing-quick-item .task-person-thumb img {
  object-fit: contain;
  object-position: center center;
  background: #f1f5f5;
}
.task-artwork-copy b,
.task-artwork-copy span,
.task-artwork-copy em,
.task-artwork-status span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-artwork-copy b {
  color: #1f2c37;
  font-size: 13px;
}
.task-artwork-copy span,
.task-artwork-copy em,
.task-artwork-status span {
  color: #6f665c;
  font-size: 11px;
  font-style: normal;
}
.task-artwork-status {
  justify-items: end;
}
.task-artwork-status button {
  min-width: 112px;
  min-height: 42px;
  padding: 0 16px;
  font-size: 14px;
  font-weight: 900;
  touch-action: manipulation;
}
.task-artwork-quick-item.signed-locally,
.task-card.signed-locally {
  display: none;
}
.task-artwork-status strong {
  justify-self: end;
  color: #14704d;
  font-size: 12px;
}
.task-artwork-status strong.late {
  color: #b6532f;
}
.task-person-row {
  display: block;
  min-height: 36px;
  padding: 0;
  background: #fcfaf6;
  border: 1px solid #e2d8ca;
  border-radius: 4px;
  overflow: hidden;
}
.task-person-row.late {
  background: #fff7eb;
  border-color: #edbd79;
}
.task-person-row summary {
  display: grid;
  grid-template-columns: 14px minmax(90px, 150px) minmax(130px, 210px) minmax(110px, 1fr) minmax(160px, 1.2fr);
  align-items: center;
  gap: 10px;
  min-height: 36px;
  padding: 7px 10px;
  cursor: pointer;
  list-style: none;
}
.task-person-row summary::-webkit-details-marker {
  display: none;
}
.task-person-row summary::before {
  content: "›";
  color: #8c7659;
  font-weight: 900;
}
.task-person-row[open] summary::before {
  transform: rotate(90deg);
}
.task-person-row strong,
.task-person-row span,
.task-person-row em,
.task-person-row small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-person-row strong {
  color: #1f2c37;
}
.task-person-row span {
  margin: 0;
  color: #6b4a2d;
  font-size: 12px;
  font-weight: 900;
}
.task-person-row em {
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
}
.task-person-row small {
  color: #8c7659;
  font-size: 12px;
}
.task-person-details {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 8px;
  padding: 9px;
  background: #fffdf8;
  border-top: 1px solid #eadfce;
}
.task-person-item {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) minmax(96px, auto);
  align-items: center;
  gap: 8px;
  min-height: 54px;
  padding: 7px;
  background: #fffaf0;
  border: 1px solid #ead7ba;
  border-radius: 4px;
}
.task-person-item.late {
  background: #fff4e1;
  border-color: #eba956;
}
.task-person-thumb {
  width: 42px;
  height: 42px;
  overflow: hidden;
  background: #f0e7db;
  border-radius: 3px;
}
.task-person-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.task-person-thumb-placeholder {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  color: #9b8f80;
  font-size: 11px;
}
.task-person-copy,
.task-person-meta {
  display: grid;
  min-width: 0;
  gap: 2px;
}
.task-person-copy b,
.task-person-copy span,
.task-person-copy em,
.task-person-meta span,
.task-person-meta strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-person-copy b {
  color: #1f2c37;
  font-size: 12px;
}
.task-person-copy span,
.task-person-copy em,
.task-person-meta span {
  color: #6f665c;
  font-size: 11px;
  font-style: normal;
}
.task-person-meta {
  text-align: right;
}
.task-person-meta strong {
  color: #9d4f2d;
  font-size: 11px;
}
.task-person-empty {
  padding: 12px;
  color: var(--muted);
  text-align: center;
}
.task-stage-empty {
  min-height: 52px;
}

@media (max-width: 1180px) {
  :root {
    --app-sticky-top: 154px;
  }
  .app-layout { grid-template-columns: 1fr; }
  .app-sidebar { position: static; }
  .sidebar-group .month-nav { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); }
  .dashboard-layout { grid-template-columns: 1fr; }
  .month-sidebar { position: static; }
  .month-nav { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); }
  .kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .capacity-grid { grid-template-columns: 1fr; }
  .capacity-head { align-items: start; flex-direction: column; }
  .room-total-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .room-stage-overview { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .style-filter-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .style-search-label,
  .style-filter-actions { grid-column: 1 / -1; }
  .room-report-query {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .task-filter-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .task-artwork-browser-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .task-artwork-browser-search,
  .task-artwork-browser-statuses {
    grid-column: 1 / -1;
  }
  .task-artwork-browser-reset {
    width: 100%;
  }
  .task-filter-bar button {
    width: 100%;
  }
  .task-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .task-stage-board {
    grid-template-columns: 1fr;
  }
  .room-report-query label.wide {
    min-width: 0;
    grid-column: 1 / -1;
  }
  .room-wave-row { grid-template-columns: 1fr; }
  .room-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .dashboard-flow-panel .room-wave-row { grid-template-columns: 1fr; }
  .timeline-row { grid-template-columns: 1fr; }
  .timeline-wave { padding-right: 0; padding-bottom: 10px; border-right: 0; border-bottom: 1px solid #e7ded2; }
  .timeline-track { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .people-board,
  .room-performance-grid,
  .room-report-grid { grid-template-columns: 1fr; }
  .wave-grid { grid-template-columns: 1fr; }
  .upload-entry { grid-template-columns: 1fr; }
  #reviewView.active { grid-template-columns: 1fr; }
  .review-layout { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  :root {
    --app-sticky-top: 218px;
  }
  .task-list-details > summary {
    align-items: flex-start;
    flex-direction: column;
  }
  .performance-comparison-table { min-width: 680px; }
  .performance-support-table { min-width: 620px; }
  .performance-support-result { align-items: flex-start; flex-direction: column; }
  .global-auth-gate {
    padding: 16px;
  }
  .global-auth-panel {
    padding: 28px 20px 24px;
  }
  .global-auth-panel h1 {
    font-size: 22px;
  }
  .global-auth-actions {
    grid-template-columns: 1fr;
  }
  .topbar, .summary-line, .room-page-head, .room-total-head, .wave-head, .wave-foot { align-items: stretch; flex-direction: column; }
  .actions { justify-content: stretch; }
  .actions label, .actions button { flex: 1 1 120px; }
  .global-user-area {
    width: 100%;
    justify-content: space-between;
    padding: 0 0 8px;
    border-left: 0;
    border-bottom: 1px solid var(--line);
  }
  .global-user-area span {
    max-width: calc(100% - 72px);
  }
  .global-user-area button {
    flex: 0 0 auto;
  }
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .capacity-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .room-page-meta { justify-items: start; }
  .planning-entry-link {
    align-items: stretch;
    flex-direction: column;
  }
  .planning-entry-link strong {
    font-size: 22px;
  }
  .planning-entry-link b {
    width: 100%;
  }
  .room-total-grid { grid-template-columns: 1fr; }
  .room-stage-overview,
  .room-flow { grid-template-columns: 1fr; }
  .style-board-head,
  .style-wave-head { flex-direction: column; align-items: stretch; }
  .style-wave-alert { justify-items: start; }
  .style-filter-bar { grid-template-columns: 1fr; }
  .style-search-label,
  .style-filter-actions { grid-column: auto; }
  .style-filter-actions { justify-content: stretch; }
  .style-filter-actions button { flex: 1; }
  .room-report-query {
    grid-template-columns: 1fr;
  }
  .task-filter-bar,
  .task-summary,
  .task-stage-board,
  .task-artwork-followup,
  .task-list {
    grid-template-columns: 1fr;
  }
  .task-stage-lane summary,
  .task-lane-title {
    align-items: flex-start;
    flex-direction: column;
  }
  .task-lane-badges {
    align-self: flex-start;
  }
  .task-artwork-quick-list {
    grid-template-columns: 1fr;
  }
  .task-artwork-browser-head,
  .task-artwork-browser-wave-head {
    align-items: flex-start;
    flex-direction: column;
  }
  .task-artwork-browser-head > span,
  .task-artwork-browser-wave-head strong {
    margin-right: 0;
  }
  .task-artwork-browser-filters {
    grid-template-columns: 1fr;
  }
  .task-artwork-browser-search,
  .task-artwork-browser-statuses {
    grid-column: auto;
  }
  .task-artwork-browser-statuses {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .task-artwork-browser-statuses button + button {
    border-left: 0;
  }
  .task-artwork-browser-statuses button:nth-child(even) {
    border-left: 1px solid #e4c89f;
  }
  .task-artwork-browser-statuses button:nth-child(n + 3) {
    border-top: 1px solid #e4c89f;
  }
  .task-artwork-browser-grid {
    grid-template-columns: 1fr;
  }
  .task-artwork-browser-row {
    grid-template-columns: 1fr;
  }
  .task-artwork-browser-row .task-person-thumb {
    width: 100%;
    height: 240px;
  }
  .task-artwork-wave-summary,
  .task-artwork-wave-stats {
    grid-template-columns: 1fr;
  }
  .task-artwork-history > summary {
    align-items: flex-start;
    flex-direction: column;
  }
  .task-artwork-history-filters,
  .task-artwork-history-row {
    grid-template-columns: 1fr;
  }
  .task-artwork-history-row.head {
    display: none;
  }
  .task-artwork-history-row .task-person-thumb {
    width: 56px;
    height: 56px;
  }
  .task-artwork-task-wave-head {
    align-items: flex-start;
    flex-direction: column;
  }
  .task-artwork-task-wave-head strong {
    margin-right: 0;
  }
  .task-artwork-quick-item:not(.task-artwork-browser-row) {
    grid-template-columns: 42px minmax(0, 1fr);
  }
  .task-artwork-status {
    grid-column: 1 / -1;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    justify-items: stretch;
  }
  .task-person-row {
    grid-template-columns: 1fr;
    gap: 3px;
  }
  .room-report-query label.wide {
    grid-column: auto;
  }
  .room-report-query button {
    width: 100%;
  }
  .performance-kpis,
  .report-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ranking-row { grid-template-columns: 28px minmax(0, 1fr); }
  .ranking-row span,
  .ranking-row em { grid-column: 2; text-align: left; }
  .person-row { grid-template-columns: 26px minmax(0, 1fr); }
  .person-score { grid-column: 2; justify-items: start; }
  .node-row { grid-template-columns: 1fr 78px; gap: 6px 10px; padding: 8px 0; }
  .node-row-head { display: none; }
  .node-row .tag, .node-row .node-progress, .node-row .node-count { grid-column: 1 / -1; }
  .node-count { text-align: left; }
  .view-tabs { display: flex; }
  .tab-btn { flex: 1; }
  .app-sidebar .tab-btn { flex: 0 0 auto; }
  .app-sidebar .month-nav { display: flex; overflow-x: auto; padding-bottom: 2px; }
  .month-nav { display: flex; overflow-x: auto; padding-bottom: 2px; }
  .month-btn { flex: 0 0 118px; }
  .timeline-track { grid-template-columns: 1fr; }
  .pending-review-card { grid-template-columns: 1fr; }
  .pending-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .candidate-list div { grid-template-columns: 1fr 72px; }
  .upload-kind { grid-template-columns: 1fr; }
  .sample-search { grid-template-columns: 1fr; }
  .sample-info { grid-template-columns: 1fr; }
  .image-preview { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .record-main { flex-direction: column; }
  .review-document-head { align-items: stretch; flex-direction: column; }
  .style-review-checklist-modal {
    padding: 12px;
  }
  .style-review-checklist-dialog {
    width: 100%;
    max-height: calc(100vh - 24px);
  }
  .style-review-checklist-layout {
    grid-template-columns: 1fr;
    overflow: auto;
  }
  .style-review-checklist-sidebar {
    position: static;
    max-height: none;
  }
  .style-review-checklist-preview {
    grid-template-columns: 108px minmax(0, 1fr);
    align-items: center;
  }
  .style-review-checklist-preview-image {
    width: 108px;
    height: 136px;
  }
  .style-review-checklist-groups {
    grid-template-columns: 1fr;
  }
  .style-review-checklist-row {
    grid-template-columns: 1fr;
  }
  .style-review-checklist-actions {
    flex-direction: column;
  }
  .style-review-checklist-actions button {
    width: 100%;
  }
}

.recruitment-dashboard {
  display: grid;
  gap: 16px;
}

.planning-entry-panel {
  margin-top: -2px;
}

.planning-entry-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 74px;
  padding: 16px 18px;
  color: #fff;
  text-decoration: none;
  background: #234034;
  border: 1px solid #163125;
  border-radius: 4px;
  box-shadow: var(--shadow);
}

.planning-entry-link:hover {
  background: #1f392f;
  border-color: #0f281e;
}

.planning-entry-link span {
  flex: 0 0 auto;
  color: #d8eadf;
  font-size: 13px;
  font-weight: 900;
}

.planning-entry-link strong {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 24px;
  line-height: 1.2;
}

.planning-entry-link b {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 68px;
  min-height: 38px;
  padding: 0 14px;
  color: #193329;
  background: #f4fbf6;
  border-radius: 4px;
}

.recruitment-mismatch {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding: 12px 14px;
  background: #fff5e5;
  border: 1px solid #e2c38f;
  border-radius: 4px;
  color: #644311;
}

.recruitment-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.recruitment-kpi,
.recruitment-panel {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}

.recruitment-kpi {
  display: grid;
  gap: 6px;
  min-height: 104px;
  padding: 14px;
}

.recruitment-kpi span,
.recruitment-kpi small {
  color: var(--muted);
}

.recruitment-kpi strong {
  font-size: 30px;
  line-height: 1;
}

.recruitment-kpi.risk strong {
  color: var(--red);
}

.recruitment-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(300px, 0.8fr);
  gap: 14px;
}

.recruitment-panel {
  display: grid;
  gap: 12px;
  padding: 14px;
}

.recruitment-progress-list,
.recruitment-gap-list {
  display: grid;
  gap: 8px;
}

.recruitment-progress-row,
.recruitment-gap-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 180px auto;
  align-items: center;
  gap: 12px;
  height: auto;
  min-height: 48px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border-color: var(--line);
  color: var(--text);
  text-align: left;
}

.recruitment-gap-row {
  grid-template-columns: minmax(0, 1fr) auto;
}

.recruitment-progress-row span,
.recruitment-gap-row span {
  display: grid;
  gap: 3px;
}

.recruitment-progress-row small,
.recruitment-gap-row small {
  color: var(--muted);
}

.recruitment-progress-row i {
  display: block;
  height: 8px;
  overflow: hidden;
  background: #eee7dd;
  border-radius: 999px;
}

.recruitment-progress-row i b {
  display: block;
  height: 100%;
  background: var(--green);
}

.recruitment-progress-row em,
.recruitment-gap-row em {
  color: var(--red);
  font-style: normal;
  font-weight: 900;
}

.recruitment-filter-bar {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr)) minmax(220px, 1.5fr) auto auto;
  gap: 10px;
  align-items: end;
}

.recruitment-filter-bar .wide {
  min-width: 0;
}

.recruitment-detail-table {
  overflow-x: auto;
}

.recruitment-detail-table table {
  width: 100%;
  min-width: 980px;
  border-collapse: collapse;
}

.recruitment-detail-table th,
.recruitment-detail-table td {
  padding: 10px 9px;
  border-bottom: 1px solid #ebe5dc;
  text-align: left;
  vertical-align: top;
}

.recruitment-detail-table th {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}

.recruitment-detail-table td small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
}

.recruitment-status {
  display: inline-flex;
  align-items: center;
  min-width: 68px;
  justify-content: center;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  background: #ece7de;
  color: var(--text);
}

.recruitment-status.done {
  background: #e4eee5;
  color: var(--green);
}

.recruitment-status.warn {
  background: #fff5dc;
  color: #8a651b;
}

.recruitment-status.late {
  background: #f8e4e1;
  color: var(--red);
}

.recruitment-status.progress {
  background: #e5edf3;
  color: var(--blue);
}

.recruitment-status.neutral {
  background: #eeeae2;
  color: var(--muted);
}

.recruitment-kpis {
  grid-template-columns: minmax(320px, 1.15fr) minmax(320px, 0.85fr);
}

.recruitment-target-card,
.recruitment-target-metrics {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}

.recruitment-target-card {
  display: grid;
  gap: 18px;
  padding: 22px;
  border-left: 6px solid var(--red);
}

.recruitment-target-card.warning {
  border-left-color: #a67620;
}

.recruitment-target-card.success {
  border-left-color: var(--green);
}

.recruitment-target-card span,
.recruitment-target-card small,
.recruitment-target-metrics span,
.recruitment-target-metrics small {
  color: var(--muted);
}

.recruitment-target-card strong {
  display: block;
  margin: 8px 0;
  font-size: clamp(52px, 8vw, 86px);
  line-height: 0.95;
}

.recruitment-target-card.danger strong {
  color: var(--red);
}

.recruitment-target-card.warning strong {
  color: #8a651b;
}

.recruitment-target-card.success strong {
  color: var(--green);
}

.recruitment-target-meter i {
  display: block;
  height: 14px;
  overflow: hidden;
  background: #eee7dd;
  border-radius: 999px;
}

.recruitment-target-meter b {
  display: block;
  height: 100%;
  background: var(--green);
}

.recruitment-target-card.danger .recruitment-target-meter b {
  background: var(--red);
}

.recruitment-target-card.warning .recruitment-target-meter b {
  background: #a67620;
}

.recruitment-target-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  background: var(--line);
}

.recruitment-target-metrics div {
  display: grid;
  gap: 8px;
  min-height: 112px;
  padding: 16px;
  background: var(--panel);
}

.recruitment-target-metrics strong {
  font-size: 34px;
  line-height: 1;
}

.recruitment-target-metrics .risk strong {
  color: var(--red);
}

.recruitment-management-grid {
  grid-template-columns: minmax(0, 1.45fr) minmax(300px, 0.55fr);
}

.recruitment-secondary-grid {
  grid-template-columns: minmax(0, 0.9fr) minmax(340px, 1.1fr);
}

.recruitment-open-list,
.recruitment-risk-list,
.recruitment-trend-board,
.recruitment-hired-list {
  display: grid;
  gap: 8px;
}

.recruitment-open-row {
  display: grid;
  grid-template-columns: 86px minmax(160px, 1fr) minmax(130px, 0.7fr) minmax(110px, 0.5fr);
  align-items: center;
  gap: 12px;
  min-height: 64px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 4px;
  color: var(--text);
  text-align: left;
}

.recruitment-open-row:hover,
.recruitment-risk-card:hover {
  border-color: var(--ink);
}

.recruitment-open-row span {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.recruitment-open-row strong,
.recruitment-open-row b {
  overflow-wrap: anywhere;
}

.recruitment-open-row small {
  color: var(--muted);
}

.recruitment-risk-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px 10px;
  min-height: 70px;
  padding: 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 4px;
  color: var(--text);
  text-align: left;
}

.recruitment-risk-card strong {
  grid-row: span 2;
  font-size: 30px;
  line-height: 1;
}

.recruitment-risk-card small {
  color: var(--muted);
}

.recruitment-risk-card.late strong {
  color: var(--red);
}

.recruitment-risk-card.warn strong {
  color: #8a651b;
}

.recruitment-trend-summary {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px solid #e5ded2;
  border-left: 4px solid var(--muted);
  border-radius: 4px;
  background: #fffaf1;
}

.recruitment-trend-summary.up {
  border-left-color: var(--green);
}

.recruitment-trend-summary.down {
  border-left-color: var(--red);
}

.recruitment-trend-summary span,
.recruitment-trend-summary small,
.recruitment-trend-row span,
.recruitment-trend-row small,
.recruitment-hired-row small {
  color: var(--muted);
}

.recruitment-trend-summary strong {
  font-size: 34px;
  line-height: 1;
}

.recruitment-trend-summary.up strong {
  color: var(--green);
}

.recruitment-trend-summary.down strong {
  color: var(--red);
}

.recruitment-trend-summary div {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.recruitment-trend-summary b {
  padding: 5px 8px;
  border-radius: 4px;
  background: #efe9de;
  font-size: 12px;
}

.recruitment-trend-history {
  display: grid;
  gap: 6px;
}

.recruitment-trend-row,
.recruitment-hired-row {
  display: grid;
  align-items: center;
  gap: 10px;
  padding: 10px 11px;
  border: 1px solid #ebe5dc;
  border-radius: 4px;
  background: #fffdf8;
}

.recruitment-trend-row {
  grid-template-columns: minmax(120px, 1fr) 64px minmax(130px, 1fr);
}

.recruitment-hired-row {
  grid-template-columns: minmax(110px, 0.7fr) minmax(160px, 1fr) minmax(90px, 0.5fr);
}

.recruitment-hired-row span {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.recruitment-hired-row strong,
.recruitment-hired-row b {
  overflow-wrap: anywhere;
}

@media (max-width: 1100px) {
  .review-sop-flow {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-sop-flow > strong {
    grid-column: 1 / -1;
    padding: 0;
  }

  .review-redline-grid,
  .review-category-grid,
  .review-category-snapshot-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-sop-hero strong {
    font-size: 21px;
  }

  .recruitment-kpis,
  .recruitment-grid,
  .recruitment-filter-bar {
    grid-template-columns: 1fr;
  }

  .recruitment-progress-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .recruitment-target-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .recruitment-open-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .recruitment-trend-row,
  .recruitment-hired-row {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 720px) {
  .review-sop-flow {
    grid-template-columns: 1fr;
  }

  .review-redline-grid,
  .review-category-grid,
  .review-category-snapshot-grid {
    grid-template-columns: 1fr;
  }

  .review-redline-grid article {
    min-height: auto;
  }

  .review-snapshot-card {
    min-height: auto;
  }

  .review-action-card-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .review-action-card-head span {
    text-align: left;
  }

  .review-measurement-row {
    grid-template-columns: 1fr;
  }

  .review-standard-create-form {
    grid-template-columns: 1fr;
  }
}

body.onboarding-only .app-layout {
  grid-template-columns: minmax(0, 1fr);
}

body.onboarding-only .app-sidebar {
  display: none;
}

.onboarding-dashboard {
  display: grid;
  gap: 14px;
}

.onboarding-panel {
  display: grid;
  gap: 12px;
  padding: 14px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--shadow);
}

.onboarding-panel-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
}

.onboarding-panel-head p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 12px;
}

.onboarding-grid {
  display: grid;
  grid-template-columns: minmax(360px, 0.95fr) minmax(300px, 0.55fr);
  gap: 14px;
  align-items: start;
}

.onboarding-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.onboarding-form label {
  min-width: 0;
}

.onboarding-form .wide,
.onboarding-actions {
  grid-column: 1 / -1;
}

.onboarding-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.onboarding-source-list,
.onboarding-case-list,
.onboarding-step-list,
.onboarding-file-list,
.onboarding-print-list {
  display: grid;
  gap: 8px;
}

.onboarding-source {
  display: grid;
  grid-template-columns: minmax(150px, 0.38fr) minmax(0, 1fr) minmax(130px, 0.24fr);
  align-items: center;
  gap: 10px;
  min-height: 54px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-left: 4px solid var(--gray);
}

.onboarding-source strong,
.onboarding-source span,
.onboarding-source em {
  overflow-wrap: anywhere;
}

.onboarding-source span,
.onboarding-source em {
  color: var(--muted);
  font-style: normal;
  font-size: 12px;
}

.onboarding-source.confirmed {
  border-left-color: var(--green);
}

.onboarding-source.changed,
.onboarding-source.pending {
  border-left-color: var(--orange);
}

.onboarding-source.missing {
  border-left-color: var(--red);
}

.onboarding-case-row {
  display: grid;
  grid-template-columns: minmax(100px, 0.7fr) minmax(120px, 1fr) minmax(82px, 0.5fr);
  align-items: center;
  gap: 10px;
  min-height: 62px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 4px;
  color: var(--text);
  text-align: left;
}

.onboarding-case-row.active,
.onboarding-case-row:hover {
  border-color: var(--header);
}

.onboarding-case-row span {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.onboarding-case-row strong,
.onboarding-case-row b {
  overflow-wrap: anywhere;
}

.onboarding-case-row small {
  color: var(--muted);
}

.onboarding-step {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) 86px;
  align-items: center;
  gap: 12px;
  min-height: 58px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-left: 4px solid var(--gray);
}

.onboarding-step > span {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fffdf8;
  color: var(--muted);
  font-weight: 900;
}

.onboarding-step div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.onboarding-step small {
  color: var(--muted);
  line-height: 1.45;
}

.onboarding-step.done {
  border-left-color: var(--green);
}

.onboarding-step.ready {
  border-left-color: var(--blue);
}

.onboarding-step.locked {
  opacity: 0.72;
}

.onboarding-step button {
  width: 86px;
  padding: 0;
}

.onboarding-salary-total {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.onboarding-salary-total span {
  padding: 7px 10px;
  background: #edf3f4;
  border: 1px solid #d4e0e3;
  border-radius: 4px;
  font-weight: 900;
}

.onboarding-warning {
  padding: 10px 12px;
  background: #fff7e7;
  border: 1px solid #e8d1a5;
  border-left: 4px solid var(--orange);
  color: #6e5426;
  line-height: 1.5;
}

.onboarding-salary-grid,
.onboarding-field-list {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  background: var(--line);
  border: 1px solid var(--line);
}

.onboarding-salary-grid div,
.onboarding-field-list div {
  display: grid;
  gap: 6px;
  min-height: 66px;
  padding: 12px;
  background: #fffdf8;
}

.onboarding-salary-grid span,
.onboarding-field-list span {
  color: var(--muted);
  font-size: 12px;
}

.onboarding-salary-grid strong,
.onboarding-field-list strong {
  overflow-wrap: anywhere;
}

.onboarding-draft-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.onboarding-draft-grid article {
  display: grid;
  align-content: start;
  gap: 8px;
  min-width: 0;
  padding: 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 4px;
}

.onboarding-draft-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.onboarding-draft-grid pre {
  max-height: 320px;
  margin: 0;
  padding: 10px;
  overflow: auto;
  background: #fffdf8;
  border: 1px solid var(--line);
  color: var(--text);
  white-space: pre-wrap;
  line-height: 1.55;
  font-family: inherit;
}

.onboarding-print-list article {
  display: grid;
  grid-template-columns: minmax(150px, 0.8fr) 92px 118px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 54px;
  padding: 10px 12px;
  background: var(--panel-soft);
  border: 1px solid var(--line);
  border-radius: 4px;
}

.onboarding-file-list a,
.onboarding-file-list > div {
  display: grid;
  grid-template-columns: minmax(150px, 0.8fr) 112px 72px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 54px;
  padding: 10px 12px;
  background: #edf3f4;
  border: 1px solid #d4e0e3;
  border-radius: 4px;
  color: var(--text);
  text-decoration: none;
}

.onboarding-file-list a:hover {
  border-color: var(--blue);
}

.onboarding-file-list > div[aria-disabled="true"] {
  background: var(--panel-soft);
  color: var(--muted);
}

.onboarding-file-list span,
.onboarding-file-list small,
.onboarding-print-list span,
.onboarding-print-list small {
  color: var(--muted);
}

.onboarding-file-list small,
.onboarding-print-list small {
  overflow-wrap: anywhere;
}

@media (max-width: 1100px) {
  .onboarding-grid,
  .onboarding-draft-grid {
    grid-template-columns: 1fr;
  }

  .onboarding-salary-grid,
  .onboarding-field-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .onboarding-source,
  .onboarding-print-list article,
  .onboarding-file-list a,
  .onboarding-file-list > div {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .onboarding-form,
  .onboarding-case-row,
  .onboarding-step {
    grid-template-columns: 1fr;
  }

  .onboarding-step button {
    width: 100%;
  }

  .onboarding-panel-head {
    display: grid;
  }

  .onboarding-salary-grid,
  .onboarding-field-list {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1180px) {
  .review-center-page {
    width: 100%;
  }

  .review-workbench-filter-bar {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .review-workbench-search-label,
  .review-workbench-control-row {
    grid-column: 1 / -1;
  }

  .review-workbench-control-row,
  .review-workbench-filter-actions {
    justify-content: flex-start;
    flex-wrap: wrap;
  }

  .review-sop-navigator {
    position: static;
    grid-template-columns: 1fr;
  }

  .review-sop-navigator-actions {
    justify-content: flex-start;
  }
}

@media (max-width: 680px) {
  .review-center-tabs {
    position: static;
  }

  .review-workbench-filter-bar {
    grid-template-columns: 1fr;
  }

  .review-recap-filter-bar {
    grid-template-columns: 1fr;
  }

  .review-recap-filter-bar > button {
    width: 100%;
  }

  .review-recap-issue-row {
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: start;
  }

  .review-recap-issue-row > img {
    width: 64px;
    height: 78px;
  }

  .review-recap-issue-detail,
  .review-recap-issue-actions {
    grid-column: 1 / -1;
  }

  .review-recap-issue-actions {
    grid-template-columns: 1fr 1fr;
  }

  .review-recap-issue-actions button {
    width: 100%;
  }

  .review-workbench-filter-bar > *:not(.review-workbench-control-row) {
    grid-column: 1;
  }

  .review-workbench-control-row {
    grid-column: 1;
  }

  .review-wave-options {
    max-height: 240px;
  }

  .review-workbench-status-buttons button {
    flex: 1 1 calc(50% - 6px);
  }

  .review-workbench-priority-list {
    grid-template-columns: 1fr;
  }

  .review-workbench-priority-row {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .review-workbench-priority-row button {
    grid-column: 1 / -1;
    width: 100%;
  }

  .review-workbench-filter-actions button {
    flex: 1 1 120px;
  }

  .review-workbench-rows {
    grid-template-columns: 1fr;
    padding: 8px;
  }

  .review-workbench-card-main,
  .review-workbench-row img {
    height: min(66vh, 420px);
  }

  .review-recap-head {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* ===== 时间轴配色（预览：米灰底 + 黑色字 + 柔和红绿） ===== */
body.timeline-compact .timeline-plan-table th { color: #2a2724; background: #f6f1e7; }
body.timeline-compact .timeline-plan-table th.timeline-stage-head small { color: #6b6258; }
body.timeline-compact .timeline-plan-table th.timeline-stage-head.material-head { color: #6b6258; background: #f6f1e7; }
body.timeline-compact .timeline-plan-table th.timeline-stage-head.owner-head { color: #2a2724; background: #efe7d8; }
body.timeline-compact .timeline-plan-table th.timeline-stage-head.owner-head small { color: #6b6258; }
body.timeline-compact .timeline-plan-table th.timeline-stage-head.review-head { color: #2a2724; }
body.timeline-compact .timeline-plan-table td { border-right-color: #e9dfce; border-bottom-color: #e9dfce; }
body.timeline-compact .timeline-plan-table td:nth-child(2) { background: #fbf7ee; }
body.timeline-compact .timeline-plan-table td.plan-td:not(.material) .plan-cell { background: #fffdf8; border-color: #e9dfce; }
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).done .plan-cell { background: #fffdf8; }
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).progress .plan-cell,
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).future .plan-cell { background: #fffdf8; }
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today { background: #f7ecd6; box-shadow: inset 0 0 0 2px #cba25f; }
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today .plan-cell { background: #f7ecd6; border-color: #cba25f; box-shadow: none; }
body.timeline-compact .timeline-plan-table td.plan-td:not(.material).due-today .plan-cell > b { color: #6b4e1f; background: #f0e2c6; border-color: #cba25f; }
body.timeline-compact .plan-date { color: #3d3b37; }
body.timeline-compact .plan-progress { background: #ece5d8; }
body.timeline-compact .plan-progress-row strong { color: #3d3b37; }
body.timeline-compact .plan-cell.late .plan-progress-row strong,
body.timeline-compact .plan-cell.warn .plan-progress-row strong { color: #3d3b37; }
body.timeline-compact .plan-progress span { background: #10b981; }
body.timeline-compact .plan-cell.done .plan-progress span { background: #10b981; }
body.timeline-compact .plan-cell.progress .plan-progress span,
body.timeline-compact .plan-cell.future .plan-progress span { background: #10b981; }
body.timeline-compact .plan-cell.late .plan-progress span,
body.timeline-compact .plan-cell.warn .plan-progress span { background: #c07d72; }
body.timeline-compact .plan-cell.neutral .plan-progress span { background: #ddd6c9; }
body.timeline-compact .plan-cell b, body.timeline-compact .plan-meta em { color: #3a352f; }
body.timeline-compact .plan-cell > b { color: #3a352f; }
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-date,
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-cell > b,
body.timeline-compact .timeline-plan-table td.plan-td.owner-stage .plan-meta b { color: #3d3b37; }
body.timeline-compact .timeline-plan-table td.plan-td.material .plan-cell { background: #fffdf8; border-color: #e9dfce; }

/* ===== 时间轴字体：对齐主看板轻量现代字体 ===== */
body.timeline-compact .timeline-plan-table {
  font-family: "HarmonyOS Sans SC", "MiSans", "PingFang SC", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
}
body.timeline-compact .timeline-plan-table td { font-weight: 400; }
body.timeline-compact .timeline-plan-table .plan-date { font-weight: 600; font-size: 12px; }
body.timeline-compact .timeline-plan-table .plan-progress-row strong { font-weight: 400; }
body.timeline-compact .timeline-plan-table .plan-meta em { font-weight: 400; }
body.timeline-compact .timeline-plan-table .plan-cell b { font-weight: 400; }
body.timeline-compact .timeline-plan-table th { font-weight: 600; }
