:root {
  --bg: #f4f6fa;
  --surface: #ffffff;
  --surface-alt: #f9fafb;
  --border: #e5e7eb;
  --border-strong: #d1d5db;
  --text: #0f172a;
  --text-secondary: #475569;
  --muted: #64748b;
  --accent: #2563eb;
  --accent-hover: #1d4ed8;
  --accent-light: #dbeafe;

  --section-bg: #1e293b;
  --section-text: #f1f5f9;

  --total-bg: #fef3c7;
  --total-border: #fde68a;
  --total-text: #78350f;

  --row-alt: #fafbfc;
  --hover: #eff6ff;

  --neg-bg: #fef2f2;
  --neg-text: #b91c1c;
  --neg-border: #fecaca;
  --pos-bg: #ecfdf5;
  --pos-text: #047857;
  --pos-border: #a7f3d0;

  --sticky-shadow: 4px 0 6px -3px rgba(15, 23, 42, 0.12);
}

[hidden] {
  display: none !important;
}


html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", "Helvetica Neue", Arial, "Noto Sans", sans-serif;
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* Print background colours (progress bars, pills, section bars) exactly */
* {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.app-header {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  padding: 14px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  position: sticky;
  top: 0;
  z-index: 20;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.brand {
  display: flex;
  align-items: center;
  gap: 14px;
}
.brand-logo {
  height: 34px;
  width: auto;
  display: block;
}

.header-controls {
  display: flex;
  align-items: center;
  gap: 14px;
}

.btn {
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 6px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, transform 0.05s;
}
.btn:hover { background: var(--accent-hover); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: 0.6; cursor: not-allowed; }

.btn-secondary {
  background: #fff;
  color: var(--accent);
  border: 1px solid var(--accent);
}
.btn-secondary:hover {
  background: var(--accent-light);
}

/* Login */
.login-screen {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: var(--bg);
}
.login-card {
  width: 100%;
  max-width: 360px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 32px 28px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.login-logo {
  height: 40px;
  width: auto;
  align-self: center;
}
.login-title {
  margin: 0;
  text-align: center;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.login-error {
  margin: 0;
  padding: 8px 12px;
  border-radius: 6px;
  background: var(--neg-bg);
  color: var(--neg-text);
  border: 1px solid var(--neg-border);
  font-size: 13px;
  text-align: center;
}
.login-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-secondary);
}
.login-field input {
  padding: 10px 12px;
  border: 1px solid var(--border-strong);
  border-radius: 6px;
  font-size: 14px;
  font-family: inherit;
  color: var(--text);
  background: #fff;
}
.login-field input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-light);
}
.login-submit {
  width: 100%;
  margin-top: 4px;
  padding: 10px 16px;
}
.auth-user {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text-secondary);
  padding: 4px 10px;
  background: var(--surface-alt);
  border: 1px solid var(--border);
  border-radius: 999px;
}

.tabs {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  padding: 0 24px;
  display: flex;
  gap: 4px;
  overflow-x: auto;
  position: sticky;
  top: 57px;
  z-index: 15;
}

.tab {
  background: transparent;
  border: none;
  padding: 12px 18px;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
  text-decoration: none;
  display: inline-block;
  transition: color 0.15s, border-color 0.15s;
}
.tab:hover { color: var(--text); }
.tab:visited { color: var(--muted); }
.tab.active,
.tab.active:visited {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

.content {
  padding: 20px 24px;
}
.content:has(#smr.active),
.content:has(#finance.active),
.content:has(#pto.active) {
  padding: 0;
  overflow: hidden;
  max-width: 100%;
}

.report { display: none; }
.report.active { display: block; }

/* Production program */
.prod-layout {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: 0;
  margin: -20px -24px;
  min-height: calc(100vh - 140px);
  background: var(--surface);
  border-top: 1px solid var(--border);
}
.prod-sidebar {
  display: flex;
  flex-direction: column;
  width: max-content;
  min-width: 280px;
  max-width: min(560px, 46vw);
  border-right: 1px solid var(--border);
  background: #fff;
  min-height: 0;
}
.prod-sidebar-top {
  padding: 16px 14px 10px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.prod-sidebar-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}
.prod-sidebar-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
}
button.prod-sidebar-title {
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  cursor: pointer;
  text-align: left;
}
button.prod-sidebar-title:hover {
  color: var(--accent);
}
.prod-sidebar-heading.is-all button.prod-sidebar-title {
  color: var(--accent);
}
.prod-sidebar-count {
  font-size: 13px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.prod-sidebar-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-alt);
}
.prod-sidebar-search:focus-within {
  border-color: #bfdbfe;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.prod-search-icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  opacity: 0.55;
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Ccircle cx='7' cy='7' r='4.5' stroke='%2364748b' stroke-width='1.5'/%3E%3Cpath d='M10.5 10.5L13.5 13.5' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
}
.prod-sidebar-search input {
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  font: inherit;
  font-size: 13px;
  color: var(--text);
}
.prod-sidebar-search input::placeholder {
  color: #94a3b8;
}
.prod-project-list {
  list-style: none;
  margin: 0;
  padding: 8px 8px 16px;
  overflow: auto;
  flex: 1;
  min-height: 0;
}
.prod-project-item {
  margin: 0;
  position: relative;
}
.prod-project-item .prod-project-btn {
  padding-left: calc(10px + var(--prod-depth, 0) * 16px);
}
.prod-project-item.is-folder.is-queue,
.prod-project-item.is-folder.is-stage,
.prod-project-item.is-leaf {
  margin-left: calc(var(--prod-depth, 0) * 8px);
  padding-left: 8px;
  border-left: 1px dotted #cbd5e1;
}
.prod-project-item[style*="--prod-depth:0"] {
  margin-left: 0;
  padding-left: 0;
  border-left: 0;
}
.prod-project-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  width: auto;
  min-width: 100%;
  padding: 9px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}
.prod-project-btn:hover {
  background: #f1f5f9;
}
.prod-project-item.is-active .prod-project-btn {
  background: #eef2f7;
  font-weight: 600;
}
.prod-project-item.is-folder .prod-project-name {
  font-weight: 600;
}
.prod-project-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  background: center / contain no-repeat;
}
.prod-project-icon.is-folder {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M3.5 7.2V15a1.5 1.5 0 0 0 1.5 1.5h10A1.5 1.5 0 0 0 16.5 15V8.2A1.5 1.5 0 0 0 15 6.7h-4.1l-1.2-1.6A1.2 1.2 0 0 0 8.7 4.5H5A1.5 1.5 0 0 0 3.5 6v1.2Z' fill='%233b82f6'/%3E%3Cpath d='M9.2 10.2h1.6v1.6h1.6v1.6h-1.6v1.6H9.2v-1.6H7.6v-1.6h1.6v-1.6Z' fill='%23fff'/%3E%3C/svg%3E");
}
.prod-project-item.is-collapsed .prod-project-icon.is-folder {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M3.5 7.2V15a1.5 1.5 0 0 0 1.5 1.5h10A1.5 1.5 0 0 0 16.5 15V8.2A1.5 1.5 0 0 0 15 6.7h-4.1l-1.2-1.6A1.2 1.2 0 0 0 8.7 4.5H5A1.5 1.5 0 0 0 3.5 6v1.2Z' fill='%233b82f6'/%3E%3Cpath d='M7.6 11.8h4.8v1.6H7.6v-1.6Z' fill='%23fff'/%3E%3C/svg%3E");
}
.prod-project-icon.is-leaf {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.2 13.5V4.8c0-.4.3-.8.8-.8h2.1l.7 1.1h5.2c.4 0 .8.4.8.8v7.6c0 .4-.4.8-.8.8H4c-.5 0-.8-.4-.8-.8Z' fill='%2394a3b8'/%3E%3Cpath d='M5.2 7.2h1.3v4.2H5.2V7.2Zm2.4 0h1.3v4.2H7.6V7.2Zm2.4 0H11.3v4.2H10V7.2Z' fill='%23fff'/%3E%3C/svg%3E");
}
.prod-project-name {
  flex: none;
  white-space: nowrap;
  line-height: 1.35;
}
.prod-project-empty {
  padding: 14px 10px;
  color: var(--muted);
  font-size: 13px;
}
.prod-project-row {
  display: flex;
  align-items: center;
  gap: 2px;
  width: max-content;
  min-width: 100%;
}
.prod-project-row .prod-project-btn {
  flex: 0 1 auto;
}
.prod-project-delete,
.prod-project-rename,
.prod-project-home {
  flex: none;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #94a3b8;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
}
.prod-project-move {
  flex: none;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #94a3b8;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
}
.prod-project-delete {
  font-size: 18px;
}
.prod-project-item:hover .prod-project-delete,
.prod-project-item.is-active .prod-project-delete,
.prod-project-item:hover .prod-project-rename,
.prod-project-item.is-active .prod-project-rename,
.prod-project-item:hover .prod-project-move,
.prod-project-item.is-active .prod-project-move,
.prod-project-item:hover .prod-project-home,
.prod-project-item.is-active .prod-project-home,
.prod-project-home.is-on {
  opacity: 1;
}
.prod-project-home.is-on {
  color: #2563eb;
}
.prod-project-home.is-static {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: default;
}
.prod-project-home:hover {
  background: #eff6ff;
  color: #1d4ed8;
}
.prod-project-delete:hover {
  background: #fef2f2;
  color: #dc2626;
}
.prod-project-rename:hover {
  background: #eff6ff;
  color: #2563eb;
}
.prod-project-move:hover {
  background: #ecfdf5;
  color: #059669;
}
.prod-sidebar-footer {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
  padding: 10px 12px 14px;
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}
.prod-add-btn {
  width: 100%;
  justify-content: center;
  padding-left: 8px;
  padding-right: 8px;
  font-size: 12px;
}
.prod-modal[hidden] {
  display: none !important;
}
.prod-modal {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.prod-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.35);
}
.prod-modal-card {
  position: relative;
  z-index: 1;
  width: min(420px, 100%);
  background: #fff;
  border-radius: 12px;
  border: 1px solid var(--border);
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.18);
  padding: 20px;
}
.prod-modal-card h3 {
  margin: 0 0 14px;
  font-size: 17px;
}
.prod-modal-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 12px;
  font-size: 13px;
  color: var(--text-secondary);
}
.prod-modal-field input,
.prod-modal-field select {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 9px 10px;
  font: inherit;
  font-size: 14px;
  color: var(--text);
  background: #fff;
}
.prod-modal-field input:focus,
.prod-modal-field select:focus {
  outline: none;
  border-color: #93c5fd;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.prod-modal-hint {
  margin: 0 0 14px;
  font-size: 13px;
  line-height: 1.45;
  color: var(--text-secondary, #64748b);
}
.prod-modal-choice {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 12px;
  font-size: 13px;
  color: var(--text);
}
.prod-modal-choice label {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}
.prod-modal-choice input {
  accent-color: var(--accent);
}
.prod-modal-error {
  margin: 0 0 10px;
  color: #dc2626;
  font-size: 13px;
}
.prod-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 8px;
}
.prod-main {
  min-width: 0;
  padding: 18px 20px 24px;
  background: var(--bg);
}
.prod-program-head {
  margin: 0 0 16px;
}
.prod-program-head-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}
.prod-program-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
#prod-schedule-edit-btn.is-editing {
  background: #0f172a;
  border-color: #0f172a;
  color: #fff;
}
.prod-program-table table.report-table tbody tr.prod-schedule-empty-row td {
  text-align: center;
  padding: 56px 20px;
  color: var(--muted);
  font-size: 15px;
  font-weight: 500;
  border-bottom: 0;
  background: transparent;
}
.prod-save-status {
  font-size: 12px;
  color: var(--muted);
  white-space: nowrap;
}
.prod-save-status.is-pending {
  color: #b45309;
}
.prod-save-status.is-saved {
  color: #16a34a;
}
.prod-save-status.is-error {
  color: #dc2626;
}
.prod-program-title {
  margin: 0;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--text);
}
.prod-program-title-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  min-width: 0;
}
.prod-rename-btn {
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--accent, #2563eb);
  cursor: pointer;
  white-space: nowrap;
}
.prod-rename-btn:hover {
  text-decoration: underline;
}
body.prod-readonly-mode .prod-rename-btn,
body.prod-readonly-mode .prod-project-rename,
body.prod-readonly-mode .prod-project-move {
  display: none !important;
}
.prod-program-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px 18px;
}
.prod-meta-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--muted);
}
.prod-meta-field select {
  min-width: 160px;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 10px;
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text);
  background: #fff;
  cursor: pointer;
}
.prod-home-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}
.prod-home-check input {
  width: 16px;
  height: 16px;
  accent-color: #2563eb;
}

.prod-view-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0 0 14px;
  border-bottom: 1px solid var(--border);
}
.prod-view-tab {
  border: 0;
  background: transparent;
  padding: 10px 14px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.prod-view-tab:hover { color: var(--text); }
.prod-view-tab.is-active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}
body.prod-folder-rollup .prod-program-meta .prod-meta-field:not(.prod-meta-home) {
  display: none;
}
body.prod-folder-rollup .tep-sections-card,
body.prod-folder-rollup .tep-sections-actions {
  display: none !important;
}
.prod-rollup-note {
  margin: 0 0 10px;
  padding: 10px 12px;
  border-radius: 10px;
  background: #f8fafc;
  border: 1px solid var(--border);
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.4;
}

.tep-finish-card,
.tep-sections-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 12px;
}
.tep-card-title {
  margin: 0 0 14px;
  font-size: 15px;
  font-weight: 700;
}
.tep-finish-body {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 20px;
  align-items: center;
}
.tep-donut {
  width: 140px;
  height: 140px;
}
.tep-donut-svg { width: 100%; height: 100%; }
.tep-finish-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px 16px;
}
.tep-stat {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-size: 12px;
  color: var(--text-secondary);
}
.tep-stat b {
  display: block;
  color: var(--text);
  font-size: 13px;
  margin-bottom: 2px;
}
.tep-stat-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-top: 4px;
  flex: none;
}
.tep-sections-scroll {
  overflow: auto;
}
.tep-sections-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  min-width: 1180px;
}
.tep-sections-table th {
  text-align: left;
  padding: 8px 8px;
  background: #f8fafc;
  color: var(--text-secondary);
  font-size: 11px;
  font-weight: 600;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.tep-sections-table td {
  padding: 6px 6px;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}
.tep-section-row.is-selected td {
  background: #eff6ff;
}
.tep-sections-table input,
.tep-sections-table select {
  width: 100%;
  min-width: 70px;
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 6px 8px;
  font: inherit;
  font-size: 12px;
  background: #fff;
  color: var(--text);
}
.tep-sections-table input:focus,
.tep-sections-table select:focus {
  outline: none;
  border-color: #93c5fd;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.12);
}
.tep-sections-table input[readonly] {
  background: #f8fafc;
  color: var(--text-secondary);
  cursor: default;
}
.tep-sections-table input[readonly]:focus {
  border-color: var(--border);
  box-shadow: none;
}
.tep-sections-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 12px;
}
.tep-link-btn {
  border: 0;
  background: transparent;
  color: var(--accent);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 0;
}
.tep-link-btn:hover { text-decoration: underline; }
.tep-link-danger { color: #dc2626; }

.tep-mode[hidden] { display: none !important; }
.tep-social-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 0;
  overflow: hidden;
  max-width: 520px;
  margin-bottom: 12px;
}
.tep-corpus-areas-card {
  max-width: 560px;
}
.tep-social-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.tep-social-table th {
  text-align: left;
  padding: 12px 14px;
  background: #f8fafc;
  color: var(--text-secondary);
  font-size: 12px;
  font-weight: 600;
  border-bottom: 1px solid var(--border);
}
.tep-social-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  color: var(--text);
}
.tep-social-table tr:last-child td { border-bottom: 0; }
.tep-social-table input {
  width: 100%;
  border: 1px solid transparent;
  border-radius: 6px;
  padding: 6px 8px;
  font: inherit;
  font-size: 13px;
  text-align: left;
  background: transparent;
  color: var(--text);
}
.tep-social-table input:hover {
  border-color: var(--border);
  background: #fff;
}
.tep-social-table input:focus {
  outline: none;
  border-color: #93c5fd;
  background: #fff;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.12);
}
.tep-social-table input[readonly] {
  color: var(--text);
  cursor: default;
  background: transparent;
}
.tep-social-table input[readonly]:hover,
.tep-social-table input[readonly]:focus {
  border-color: transparent;
  box-shadow: none;
  background: transparent;
}
.tep-social-table input::placeholder {
  color: #94a3b8;
}

@media (max-width: 800px) {
  .tep-finish-body {
    grid-template-columns: 1fr;
    justify-items: center;
  }
}

.prod-program-table {
  max-height: none;
}
.prod-program-table table.report-table {
  width: max-content;
  max-width: 100%;
  font-size: 12px;
}
.prod-program-table table.report-table thead {
  display: table-header-group;
}
.prod-program-table table.report-table thead th {
  position: static !important;
  top: auto !important;
  z-index: auto;
  padding: 6px 8px;
  font-size: 10px;
  line-height: 1.2;
  white-space: nowrap;
  background: var(--surface-alt) !important;
  color: var(--text-secondary);
  border-bottom: 2px solid var(--border-strong);
}
.prod-program-table table.report-table th,
.prod-program-table table.report-table td {
  white-space: nowrap;
  padding: 4px 8px;
  line-height: 1.25;
}
.prod-program-table table.report-table > thead > tr.thead-cols > th:first-child,
.prod-program-table table.report-table > tbody > tr > td:first-child {
  position: static;
  left: auto;
  z-index: auto;
  box-shadow: none;
  min-width: 0;
  max-width: none;
  width: auto;
  white-space: nowrap;
  font-weight: 500;
  padding-right: 16px;
}
.prod-program-table table.report-table > thead > tr.thead-cols > th:not(:first-child),
.prod-program-table table.report-table > tbody > tr > td:not(:first-child) {
  width: 1%;
  min-width: 0;
  padding-left: 10px;
  padding-right: 10px;
  white-space: nowrap;
}
.prod-program-table table.report-table td.cell-date .date-forecast-icon {
  width: 11px;
  height: 11px;
  margin-right: 4px;
}
.prod-program-table table.report-table td.prod-date-cell {
  padding: 2px 4px;
}
.prod-program-table table.report-table td.prod-fact-cell {
  width: 44px;
  min-width: 44px;
  max-width: 52px;
  text-align: center;
  padding: 4px 6px;
  vertical-align: middle;
}
.prod-program-table table.report-table td.prod-fact-cell.is-facted {
  background: #dcfce7;
}
.prod-program-table table.report-table td.is-facted-date,
.prod-program-table table.report-table td.is-facted-date.prod-readonly {
  background: #dcfce7;
  border-radius: 6px;
}
.prod-program-table table.report-table td.is-facted-date .prod-date-input,
.prod-program-table table.report-table td.is-facted-date .prod-date-text {
  color: #15803d;
  font-weight: 700;
}
.prod-fact-btn {
  display: inline-block;
  width: 18px;
  height: 18px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  vertical-align: middle;
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Ccircle cx='8' cy='8' r='6.25' stroke='%2394a3b8' stroke-width='1.4'/%3E%3Cpath d='M5.2 8.1l1.8 1.8 3.8-3.8' stroke='%2394a3b8' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  cursor: pointer;
  opacity: 0.9;
}
.prod-fact-btn:hover {
  opacity: 1;
  transform: scale(1.08);
}
.prod-fact-btn.is-on {
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Ccircle cx='8' cy='8' r='7' fill='%2316a34a'/%3E%3Cpath d='M5.1 8.15l1.85 1.85 3.9-3.9' stroke='%23fff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  opacity: 1;
}
.prod-date-input {
  width: 100%;
  min-width: 72px;
  max-width: 96px;
  margin: 0 auto;
  display: block;
  border: 1px solid transparent;
  border-radius: 4px;
  padding: 3px 6px;
  font: inherit;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  text-align: center;
  background: transparent;
  color: var(--text);
}
.prod-date-text {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.prod-date-input:hover {
  border-color: var(--border);
  background: #fff;
}
.prod-date-input:focus {
  outline: none;
  border-color: #93c5fd;
  background: #fff;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.12);
}
.prod-date-input.is-invalid {
  border-color: #fca5a5;
  background: #fef2f2;
}
body.prod-readonly-mode .prod-sidebar-footer {
  display: none !important;
}
body.prod-readonly-mode .prod-project-delete,
body.prod-readonly-mode .prod-project-rename,
body.prod-readonly-mode .prod-project-move {
  display: none !important;
}
body.prod-readonly-mode .tep-sections-actions {
  display: none !important;
}
body.prod-readonly-mode .prod-meta-field select:disabled {
  opacity: 1;
  color: var(--text);
  background: #f8fafc;
  cursor: default;
}
body.prod-readonly-mode #report3 .prod-save-status {
  display: none;
}
body.prod-readonly-mode .prod-fact-btn {
  pointer-events: none;
  cursor: default;
}
.prod-program-table table.report-table td.prod-readonly {
  cursor: default;
  user-select: text;
  background: #f8fafc;
}
.prod-program-table table.report-table td.prod-editable {
  cursor: text;
  background: #fff;
}
.prod-program-table table.report-table td.prod-editable:hover {
  background: #f8fafc;
}
.prod-program-table table.report-table td.prod-editable:focus {
  outline: 2px solid #bfdbfe;
  outline-offset: -2px;
  background: #fff;
}
.cell-sched-delta {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cell-sched-delta.is-ahead {
  color: #16a34a;
  font-weight: 600;
}
.cell-sched-delta.is-behind {
  color: #dc2626;
  font-weight: 600;
}
.cell-date .date-forecast-icon {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 5px;
  vertical-align: -1px;
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Ccircle cx='8' cy='8' r='6.25' stroke='%2394a3b8' stroke-width='1.4'/%3E%3Cpath d='M8 4.5V8l2.2 1.4' stroke='%2394a3b8' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* Home page */
.home-title {
  margin: 4px 0 18px;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.home-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(320px, 1fr));
  gap: 20px;
}
.home-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 22px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05);
}
.home-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}
.home-card-head h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.25;
  min-width: 0;
}
.home-open {
  padding: 6px 12px;
  font-size: 12.5px;
  text-decoration: none;
}
.home-open-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}
.home-card-empty {
  color: var(--muted);
  font-size: 13px;
  margin-bottom: 12px;
}
.home-fills {
  display: grid;
  gap: 10px;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.home-fill-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 13px;
}
.home-fill-row span:first-child {
  color: var(--muted);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.04em;
  font-weight: 700;
  margin-right: auto;
}
.home-fill-row b {
  font-variant-numeric: tabular-nums;
}
.home-fill-pct {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  min-width: 2.8em;
  text-align: right;
}
.home-mini-bar {
  height: 6px;
  border-radius: 99px;
  background: #e2e8f0;
  overflow: hidden;
  margin-top: 6px;
}
.home-mini-bar span {
  display: block;
  height: 100%;
  background: #2563eb;
  border-radius: inherit;
}
.home-tep {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.home-tep-title {
  color: var(--muted);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.04em;
  font-weight: 700;
  margin-bottom: 10px;
}
.home-tep-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 16px;
}
.home-tep-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.home-tep-item span {
  color: var(--muted);
  font-size: 12px;
}
.home-tep-item b {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.home-projects-hint {
  margin: 16px 0 0;
  color: var(--muted);
  font-size: 13px;
}
.home-card-fact {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 14px;
}
.home-fact-value {
  font-size: 42px;
  font-weight: 800;
  line-height: 1;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.home-fact-label {
  color: var(--muted);
  font-size: 13px;
}
.home-card-bar { margin-bottom: 18px; }
.home-card-bar .pbar {
  width: 100%;
  height: 26px;
  border-radius: 6px;
}
.home-card-bar .pbar-fill { border-radius: 6px 0 0 6px; }
.home-card-bar .pbar-label { font-size: 13px; }
.home-card-stats {
  display: flex;
  gap: 28px;
  flex-wrap: wrap;
  align-items: center;
  font-size: 14px;
}
.home-stat {
  display: flex;
  align-items: center;
  gap: 8px;
}
.home-stat-label {
  color: var(--muted);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.04em;
}
.home-stat b {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.home-card-dates {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 28px;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.home-date {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.home-date-label {
  color: var(--muted);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.04em;
}
.home-date b {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.home-date-delay {
  flex-direction: row;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  flex-shrink: 0;
}
.home-date-delay .pill {
  white-space: nowrap;
}

/* Original card metrics + GDRS beside dates */
.home-card-bottom {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(220px, 0.85fr);
  gap: 16px 24px;
  align-items: start;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.home-card-bottom .home-card-dates {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
  gap: 14px 28px;
}

.home-gdrs {
  min-width: 0;
}
.home-gdrs-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  margin: 0;
  border: 1px solid var(--border);
  background: #f8fafc;
  border-radius: 8px;
  padding: 8px 10px;
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-secondary);
  cursor: pointer;
  text-align: left;
}
.home-gdrs-toggle:hover {
  background: #f1f5f9;
  color: var(--text);
}
.home-gdrs-toggle-icon {
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 4px 0 4px 6px;
  border-color: transparent transparent transparent currentColor;
  flex: none;
}
.home-gdrs.is-open .home-gdrs-toggle-icon {
  border-width: 6px 4px 0 4px;
  border-color: currentColor transparent transparent transparent;
}
.home-gdrs-body {
  margin-top: 8px;
}
.home-gdrs-caption {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 0 8px;
}
.home-gdrs-caption-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-secondary);
  text-align: center;
}
.home-gdrs-table thead th.home-gdrs-date-head {
  text-transform: none;
  letter-spacing: 0;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--muted);
}
.home-gdrs-table {
  width: max-content;
  max-width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: auto;
  font-size: 12px;
  line-height: 1.25;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}
.home-gdrs-table th,
.home-gdrs-table td {
  border-bottom: 1px solid var(--border);
  padding: 6px 8px;
  vertical-align: middle;
}
.home-gdrs-table tbody tr:last-child td {
  border-bottom: none;
}
.home-gdrs-table thead th {
  background: #eef2f7;
  color: var(--text-secondary);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.home-gdrs-name {
  text-align: left;
  white-space: nowrap;
  color: var(--text);
  font-weight: 500;
  padding-right: 10px;
}
.home-gdrs-num {
  text-align: center;
  width: 48px;
  min-width: 48px;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  font-weight: 600;
  padding-left: 4px;
  padding-right: 4px;
}
.home-gdrs-table tbody tr:nth-child(even):not(.home-gdrs-row-emph) td {
  background: var(--row-alt);
}
.home-gdrs-row-emph td {
  background: #e8f0fe !important;
  color: var(--text);
  font-weight: 700;
}
.home-gdrs-row-emph .home-gdrs-name {
  border-left: 3px solid var(--accent);
  padding-left: 5px;
}
.home-gdrs-row-emph .home-gdrs-num {
  color: var(--text);
}
.home-gdrs-delta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  border: 1px solid transparent;
  line-height: 1.3;
}
.home-gdrs-delta-pos {
  background: var(--pos-bg);
  color: var(--pos-text);
  border-color: var(--pos-border);
}
.home-gdrs-delta-neg {
  background: var(--neg-bg);
  color: var(--neg-text);
  border-color: var(--neg-border);
}
.home-gdrs-delta-zero {
  background: #f1f5f9;
  color: #64748b;
  border-color: #e2e8f0;
}
.home-gdrs-loading,
.home-gdrs-empty {
  font-size: 12px;
  color: var(--muted);
}

.report-status {
  padding: 20px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--muted);
  text-align: center;
  font-size: 14px;
}
.report-status.error {
  color: var(--neg-text);
  border-color: var(--neg-border);
  background: var(--neg-bg);
}
.report-status.hidden { display: none; }

.report-controls {
  margin-bottom: 12px;
  display: flex;
  gap: 10px;
}

.table-wrap {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: auto;
  max-width: 100%;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
/* Only reports with a frozen header get an internal scroll box */
.table-wrap.sticky-table {
  max-height: calc(100vh - 150px);
}

table.report-table {
  border-collapse: separate;
  border-spacing: 0;
  width: max-content;
  max-width: none;
  table-layout: auto;
  font-size: 12.5px;
}

table.report-table th,
table.report-table td {
  border-bottom: 1px solid var(--border);
  padding: 6px 8px;
  vertical-align: middle;
  text-align: left;
  white-space: nowrap;
  background-clip: padding-box;
}

table.report-table thead th {
  background: var(--surface-alt);
  font-weight: 600;
  font-size: 11px;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  z-index: 10;
  border-bottom: 1px solid var(--border-strong);
  white-space: normal;
  line-height: 1.25;
  min-width: 48px;
  text-align: center;
}
table.report-table thead tr.thead-groups th {
  z-index: 12;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--text);
  background: #eef2f7;
  border-bottom: 1px solid var(--border-strong);
  padding: 5px 8px 2px;
}
table.report-table thead tr.thead-cols th {
  z-index: 11;
  border-bottom: 2px solid var(--border-strong);
  padding: 2px 8px 5px;
}
/* Header freeze — only inside a sticky-table scroll box */
.sticky-table table.report-table thead th { position: sticky; }
.sticky-table table.report-table thead tr.thead-groups th { top: 0; }
.sticky-table table.report-table thead tr.thead-cols th { top: 22px; }
table.report-table thead tr.thead-cols th:empty {
  padding: 0;
}
table.report-table thead tr.thead-groups th:empty {
  background: var(--surface-alt);
  border-bottom-color: var(--border);
}

/* Repeated header rows inside tbody (after each section) — mirror the top thead */
table.report-table tr.repeat-header td {
  font-weight: 600;
  font-size: 11px;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.25;
  white-space: normal;
  text-align: center;
  padding: 6px 8px;
}
table.report-table tr.repeat-header:hover td {
  background: inherit !important;
}
table.report-table tr.repeat-header-groups td {
  background: #eef2f7 !important;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--text);
  border-bottom: 1px solid var(--border-strong);
}
table.report-table tr.repeat-header-cols td {
  background: var(--surface-alt) !important;
  border-bottom: 2px solid var(--border-strong);
}
table.report-table tr.repeat-header td:first-child {
  text-align: left;
}

table.report-table tbody td { background: var(--surface); }
table.report-table tbody tr:nth-child(even) td { background: var(--row-alt); }
table.report-table tbody tr:hover td { background: var(--hover); }

/* Narrow columns (e.g. "Δ дн") — keep tight, wrap the header */
table.report-table .col-narrow {
  min-width: 52px;
  max-width: 64px;
  white-space: normal;
  padding-left: 4px !important;
  padding-right: 4px !important;
}
table.report-table tbody td.col-narrow {
  text-align: center;
}

/* Sticky first column — scoped so it only applies to real column-0 cells
   (skips leaf header rows where a rowspan=2 cell shifts the DOM first-child) */
table.report-table:not(.tenders-table) > thead > tr.thead-groups > th:first-child,
table.report-table:not(.tenders-table) > thead > tr.thead-cols:first-child > th:first-child,
table.report-table:not(.tenders-table) > tbody > tr:not(.section-row):not(.repeat-header-cols):not(.total-cont) > td:first-child {
  position: sticky;
  left: 0;
  z-index: 5;
  min-width: 280px;
  max-width: none;
  width: max-content;
  white-space: nowrap;
  line-height: 1.3;
  font-weight: 500;
  color: var(--text);
  box-shadow: var(--sticky-shadow);
}
table.report-table:not(.tenders-table) > thead > tr.thead-groups > th:first-child,
table.report-table:not(.tenders-table) > thead > tr.thead-cols:first-child > th:first-child {
  z-index: 15;
}

/* Section header rows (also the overview bar, which lives in <thead> as a th) */
table.report-table tr.section-row td,
table.report-table tr.section-row th {
  background: var(--section-bg) !important;
  color: var(--section-text);
  font-weight: 700;
  padding: 6px 10px;
  font-size: 11.5px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  position: static !important;
  box-shadow: none !important;
  border-bottom: 1px solid var(--border);
  text-align: left;
  min-width: 0;
}
.section-cell {
  display: flex;
  align-items: center;
  gap: 10px;
}
.pdf-btn {
  flex: none;
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 6px;
  padding: 4px 11px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: none;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s;
}
.pdf-btn:hover {
  background: rgba(255, 255, 255, 0.26);
  border-color: rgba(255, 255, 255, 0.6);
}
.pdf-btn:active { transform: translateY(1px); }

/* Total / summary rows */
table.report-table tr.total-row td {
  background: var(--total-bg) !important;
  font-weight: 700;
  font-size: 12.5px;
  color: var(--total-text);
  border-top: 2px solid var(--total-border);
  border-bottom: 2px solid var(--total-border);
}

/* Work group rows inside ГАСТРОХОЛЛ */
table.report-table tr.group-row td {
  background: #eef2f7 !important;
  font-weight: 600;
  color: var(--text);
  border-top: 1px solid #dbeafe;
  border-bottom: 1px solid var(--border);
}
table.report-table tr.group-row > td:first-child {
  font-weight: 600;
  background: #eef2f7 !important;
  border-left: 3px solid var(--accent);
  box-shadow: var(--sticky-shadow);
}
table.report-table tr.group-row:hover td {
  background: #e8eef6 !important;
}
table.report-table tr.group-row:hover > td:first-child {
  background: #e8eef6 !important;
}

/* Nested tasks under a work group — indent only, no extra fill */
table.report-table tr.child-row > td:first-child {
  padding-left: 22px;
}
table.report-table tr.child-row.is-collapsed,
table.report-table tr.child-row[hidden] {
  display: none;
}

/* Collapsible work groups */
table.report-table tr.group-row-collapsible {
  cursor: pointer;
}
table.report-table .group-cell {
  display: flex;
  align-items: center;
  gap: 8px;
}
table.report-table .group-toggle {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 1px solid #cbd5e1;
  border-radius: 5px;
  background: #fff;
  color: var(--text-secondary);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
table.report-table .group-toggle:hover {
  background: var(--accent-light);
  border-color: var(--accent);
  color: var(--accent);
}
table.report-table .group-toggle-icon {
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 6px solid currentColor;
  transition: transform 0.15s ease;
}
table.report-table tr.group-row.is-collapsed .group-toggle-icon {
  transform: rotate(-90deg);
}
table.report-table .group-label {
  flex: 1;
  min-width: 0;
}

/* Compact the merged total block so it isn't so tall */
table.report-table tr.total-head td,
table.report-table tr.total-cont td {
  padding-top: 3px;
  padding-bottom: 3px;
}
/* Merged total pair: drop the border only between split (two-value) columns so
   the pair reads as one block; rowspan cells keep the outer bottom border. */
table.report-table tr.total-head td:not(.cell-vmid) { border-bottom-width: 0; }
table.report-table tr.total-cont td { border-top-width: 0; }
/* Cells spanning the whole merged block sit centred vertically */
table.report-table td.cell-vmid { vertical-align: middle; }

/* Numeric cells */
table.report-table td.cell-num {
  text-align: center;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
}
table.report-table td.cell-date {
  text-align: center;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
}
/* Cells merged across columns (e.g. spanned "% План") centre their value */
table.report-table td.cell-span-center { text-align: center; }
/* Custom center columns */
table.report-table th.text-center { text-align: center; }
table.report-table td.text-center { text-align: center; }
/* Center specific columns for report2 (Новый Зеленоград) - when start columns hidden */
table.report-table > tbody > tr > td:nth-child(5),
table.report-table > tbody > tr > td:nth-child(7) {
  text-align: center;
}
table.report-table > thead > tr > th:nth-child(5),
table.report-table > thead > tr > th:nth-child(7) {
  text-align: center;
}
/* Center specific columns for report2 (Новый Зеленоград) - when start columns shown */
table.report-table > tbody > tr > td:nth-child(7),
table.report-table > tbody > tr > td:nth-child(9) {
  text-align: center;
}
table.report-table > thead > tr > th:nth-child(7),
table.report-table > thead > tr > th:nth-child(9) {
  text-align: center;
}

/* Delta pill — uniform width across all reports */
.pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 2px 6px;
  min-width: 48px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  border: 1px solid;
  line-height: 1.1;
  white-space: nowrap;
}
.pill-neg { background: var(--neg-bg); color: var(--neg-text); border-color: var(--neg-border); }
.pill-pos { background: var(--pos-bg); color: var(--pos-text); border-color: var(--pos-border); }
.pill-zero { background: #f1f5f9; color: #64748b; border-color: #e2e8f0; }
.pill-arrow { font-size: 9px; line-height: 1; }

table.report-table td.cell-delta {
  text-align: center;
  padding-left: 5px;
  padding-right: 5px;
}

/* Progress bar cell */
table.report-table td.progress-cell {
  min-width: 110px;
  max-width: 124px;
  padding: 5px 7px;
  text-align: center;
}

.pbar {
  position: relative;
  width: 100px;
  height: 14px;
  background: #e5e7eb;
  border-radius: 3px;
  overflow: visible;
  display: inline-block;
  vertical-align: middle;
  box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.08);
}
.pbar-fill {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  background: linear-gradient(90deg, #22c55e, #16a34a);
  border-radius: 4px 0 0 4px;
  transition: width 0.2s ease;
}
.pbar-fill-behind {
  background: linear-gradient(90deg, #f59e0b, #d97706);
}
.pbar-marker {
  position: absolute;
  top: -4px;
  bottom: -4px;
  width: 2px;
  background: #0f172a;
  border-radius: 1px;
  z-index: 2;
  pointer-events: none;
}
.pbar-marker::before,
.pbar-marker::after {
  content: "";
  position: absolute;
  left: -3px;
  width: 8px;
  height: 3px;
  background: #0f172a;
  border-radius: 1px;
}
.pbar-marker::before { top: 0; }
.pbar-marker::after { bottom: 0; }
.pbar-label {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10.5px;
  font-weight: 700;
  color: #0f172a;
  text-shadow: 0 0 3px rgba(255, 255, 255, 0.95), 0 0 6px rgba(255, 255, 255, 0.7);
  z-index: 1;
  pointer-events: none;
  font-variant-numeric: tabular-nums;
}

.table-scroll-hint {
  display: none;
}

.mobile-report-bar {
  display: none;
}

@media (max-width: 768px) {
  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }

  .app-header {
    padding: 4px 8px;
    gap: 4px;
    flex-wrap: nowrap;
  }
  .brand {
    gap: 6px;
    min-width: 0;
    flex-shrink: 1;
  }
  .brand-logo { height: 14px; }
  .header-controls {
    width: auto;
    flex-wrap: nowrap;
    gap: 4px;
    justify-content: flex-end;
    flex-shrink: 0;
  }
  .header-controls .btn {
    padding: 4px 8px;
    font-size: 11px;
    border-radius: 4px;
    line-height: 1.2;
  }

  .tabs {
    padding: 0 6px;
    top: auto;
    gap: 0;
  }
  .tab {
    padding: 6px 8px;
    font-size: 11px;
    flex: 1 1 auto;
    text-align: center;
  }

  body.mobile-report-view .app-header {
    display: none;
  }

  .mobile-report-bar {
    display: none;
    position: fixed;
    right: 10px;
    bottom: 10px;
    z-index: 25;
  }
  body.mobile-report-view .mobile-report-bar:not([hidden]) {
    display: block;
  }
  .mobile-report-bar .btn {
    padding: 8px 14px;
    font-size: 12px;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.18);
  }

  body.mobile-report-view .content {
    padding-top: 6px;
  }
  body.mobile-report-view .table-wrap.sticky-table {
    max-height: calc(100dvh - 44px);
  }

  .content { padding: 10px 12px; }

  .prod-layout {
    grid-template-columns: 1fr;
    margin: -10px -12px;
    min-height: 0;
  }
  .prod-sidebar {
    width: auto;
    max-width: none;
    min-width: 0;
    border-right: 0;
    border-bottom: 1px solid var(--border);
    max-height: 220px;
  }
  .prod-main {
    padding: 14px 12px 20px;
  }
  .prod-program-title {
    font-size: 17px;
  }

  .home-title { font-size: 18px; margin-bottom: 14px; }
  .home-grid { grid-template-columns: 1fr; gap: 14px; }
  .home-card { padding: 16px; border-radius: 12px; }
  .home-card-head {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .home-card-head h3 { font-size: 17px; }
  .home-open { width: 100%; text-align: center; }
  .home-fact-value { font-size: 34px; }
  .home-card-stats { gap: 12px 20px; }
  .home-card-dates { gap: 12px 16px; }
  .home-card-bottom {
    grid-template-columns: 1fr;
    gap: 14px;
    align-items: stretch;
  }

  .report-controls .btn {
    width: 100%;
    padding: 10px 14px;
    font-size: 14px;
  }

  .table-wrap {
    border-radius: 8px;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    font-size: 15px;
  }
  .table-wrap:has(+ .table-scroll-hint) {
    border-radius: 8px 8px 0 0;
  }
  .table-wrap.sticky-table {
    max-height: calc(100dvh - 108px);
  }
  .table-scroll-hint {
    display: block;
    margin: 0;
    padding: 10px 12px;
    font-size: 12px;
    line-height: 1.4;
    color: var(--text-secondary);
    text-align: center;
    background: var(--surface-alt);
    border: 1px solid var(--border);
    border-top: none;
    border-radius: 0 0 8px 8px;
  }

  table.report-table {
    font-size: 13px;
    width: max-content;
  }

  table.report-table th,
  table.report-table td {
    padding: 7px 6px;
    line-height: 1.3;
    white-space: normal;
    word-break: break-word;
    hyphens: auto;
  }

  table.report-table thead th {
    font-size: 10.5px;
    line-height: 1.25;
    padding: 5px 4px;
    min-width: 46px;
    letter-spacing: 0.02em;
    text-transform: none;
  }
  table.report-table thead tr.thead-groups th {
    font-size: 11px;
    padding: 5px 4px 2px;
    font-weight: 700;
  }
  table.report-table thead tr.thead-cols th {
    padding: 2px 4px 5px;
    font-size: 10px;
    color: var(--text);
  }

  table.report-table tr.repeat-header td {
    font-size: 10.5px;
    padding: 6px 4px;
    text-transform: none;
    letter-spacing: 0.02em;
  }

  table.report-table:not(.tenders-table) > thead > tr.thead-groups > th:first-child,
  table.report-table:not(.tenders-table) > thead > tr.thead-cols:first-child > th:first-child,
  table.report-table:not(.tenders-table) > tbody > tr:not(.section-row):not(.repeat-header-cols):not(.total-cont) > td:first-child {
    position: sticky;
    left: 0;
    z-index: 4;
    min-width: 110px;
    max-width: 128px;
    width: 118px;
    white-space: normal;
    line-height: 1.3;
    font-size: 12.5px;
    font-weight: 600;
    box-shadow: 6px 0 10px -6px rgba(15, 23, 42, 0.22);
  }
  table.report-table:not(.tenders-table) > thead > tr.thead-groups > th:first-child,
  table.report-table:not(.tenders-table) > thead > tr.thead-cols:first-child > th:first-child {
    z-index: 14;
  }

  table.report-table td.cell-num,
  table.report-table td.cell-date,
  table.report-table td.cell-delta,
  table.report-table td.progress-cell {
    white-space: nowrap;
    font-size: 12.5px;
    font-variant-numeric: tabular-nums;
  }

  table.report-table .col-narrow {
    min-width: 48px;
    max-width: 58px;
    padding-left: 3px !important;
    padding-right: 3px !important;
  }

  table.report-table td.progress-cell {
    min-width: 88px;
    max-width: 100px;
    padding: 6px 5px;
  }

  .pbar {
    width: 84px;
    max-width: 100%;
    height: 16px;
  }
  .pbar-label { font-size: 10.5px; font-weight: 600; }

  .pill {
    min-width: 0;
    padding: 3px 6px;
    font-size: 11px;
    gap: 2px;
  }
  .pill-arrow { font-size: 9px; }

  table.report-table tr.section-row td,
  table.report-table tr.section-row th {
    font-size: 11px;
    padding: 7px 8px;
    line-height: 1.3;
    white-space: normal;
    letter-spacing: 0.03em;
  }

  table.report-table tr.total-row td {
    font-size: 12.5px;
    font-weight: 600;
  }
  table.report-table tr.total-head td,
  table.report-table tr.total-cont td {
    padding-top: 4px;
    padding-bottom: 4px;
  }
}

@media (max-width: 400px) {
  table.report-table { font-size: 12.5px; }
  table.report-table:not(.tenders-table) > thead > tr.thead-groups > th:first-child,
  table.report-table:not(.tenders-table) > thead > tr.thead-cols:first-child > th:first-child,
  table.report-table:not(.tenders-table) > tbody > tr:not(.section-row):not(.repeat-header-cols):not(.total-cont) > td:first-child {
    min-width: 100px;
    max-width: 112px;
    width: 104px;
    font-size: 12px;
  }
  table.report-table td.cell-num,
  table.report-table td.cell-date,
  table.report-table td.cell-delta,
  table.report-table td.progress-cell {
    font-size: 12px;
  }
  .pbar { width: 76px; height: 15px; }
  table.report-table td.progress-cell { min-width: 82px; }
}

.nz-view-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0 0 6px;
  width: fit-content;
  padding: 3px;
  background: #e8eef6;
  border: 0;
  border-radius: 10px;
  flex-shrink: 0;
}
.nz-view-tabs .prod-view-tab {
  margin: 0;
  border: 0;
  border-bottom: 0;
  border-radius: 8px;
  padding: 6px 12px;
}
.nz-view-tabs .prod-view-tab.is-active {
  background: #fff;
  color: var(--text);
  border-bottom-color: transparent;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}
.nz-view[hidden] { display: none !important; }
.handover-panel[hidden] { display: none !important; }

#report2.report.active:has([data-nz-panel="handover"]:not([hidden])) {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 118px);
  min-height: 0;
}
.content:has(#report2.active [data-nz-panel="handover"]:not([hidden])) {
  padding: 8px 16px 8px;
}
#report2 .nz-view[data-nz-panel="handover"] {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}
#report2 .handover-panel {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}

.handover-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 4px 10px;
  margin-bottom: 6px;
  flex-shrink: 0;
}
.handover-inner-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
  padding: 3px;
  background: #e8eef6;
  border-radius: 10px;
}
.handover-inner-tabs .prod-view-tab {
  margin: 0;
  border: 0;
  border-bottom: 0;
  border-radius: 8px;
  padding: 5px 11px;
  color: var(--muted);
}
.handover-inner-tabs .prod-view-tab:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.55);
}
.handover-inner-tabs .prod-view-tab.is-active {
  background: #fff;
  color: var(--text);
  border-bottom-color: transparent;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}
.handover-toolbar-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.handover-chrome {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
  flex-shrink: 0;
  min-width: 0;
}
.handover-legend {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px 8px;
  margin: 0;
  padding: 4px 8px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: none;
  flex: 1;
  min-width: 0;
  overflow-x: auto;
}
.ho-legend-row {
  display: flex;
  flex-wrap: nowrap;
  gap: 4px;
}
.ho-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--text-secondary);
  background: #f8fafc;
  border-radius: 999px;
  padding: 2px 7px 2px 3px;
  white-space: nowrap;
}
.ho-legend-item b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 16px;
  height: 16px;
  margin: 0;
  border-radius: 999px;
  background: #fff;
  color: #0f172a;
  font-size: 10px;
  box-shadow: 0 0 0 1px #e2e8f0;
}
.ho-legend-tones {
  display: flex;
  gap: 4px;
  margin-left: auto;
  flex-shrink: 0;
}
.ho-tone {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 999px;
  border: 0;
  white-space: nowrap;
}
.ho-tone.is-high {
  background: #d1fae5;
  color: #047857;
}
.ho-tone.is-mid {
  background: #fef3c7;
  color: #b45309;
}
.ho-apts-table td.is-high:not(.ho-work-cell),
.ho-apts-table .ho-num-row td.ho-apt-head.is-high,
.ho-apts-table .ho-date-row td.is-high {
  background: #d1fae5 !important;
  color: #065f46;
}
.ho-apts-table td.is-mid:not(.ho-work-cell),
.ho-apts-table .ho-num-row td.ho-apt-head.is-mid,
.ho-apts-table .ho-date-row td.is-mid {
  background: #fef3c7 !important;
  color: #92400e;
}
.ho-apts-table .ho-work-cell.is-high {
  background: #ecfdf5 !important;
}
.ho-apts-table .ho-work-cell.is-mid {
  background: #fffbeb !important;
}
.ho-legend-hint {
  display: none;
}

.handover-summary {
  display: flex;
  flex-wrap: nowrap;
  gap: 4px;
  margin: 0;
  flex-shrink: 0;
}
.ho-stat {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 3px 8px;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
}
.ho-stat b {
  color: var(--text);
  font-variant-numeric: tabular-nums;
  margin-right: 3px;
  font-size: 12px;
}

.handover-section-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 4px;
  flex-shrink: 0;
}
.ho-section-tab > button {
  border: 0;
  background: transparent;
  padding: 4px 10px;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  cursor: pointer;
}
.ho-section-tab {
  display: flex;
  align-items: center;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 999px;
  overflow: hidden;
}
.ho-section-tab.is-active {
  border-color: transparent;
  background: #2563eb;
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25);
}
.ho-section-tab.is-active > button {
  color: #fff;
}
.ho-section-del {
  border: 0;
  background: transparent;
  color: var(--muted);
  padding: 6px 8px;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
}
.ho-section-tab.is-active .ho-section-del { color: #dbeafe; }
.ho-section-del:hover { color: var(--neg-text); }

.handover-apts-shell {
  position: relative;
  flex: 1 1 auto;
  min-height: 220px;
}
.handover-apts-wrap {
  position: absolute;
  inset: 0;
  max-height: none;
  background: #e8eef4;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 3px;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
  overflow: auto;
  overscroll-behavior: contain;
  touch-action: pan-x pan-y;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: #64748b #dbe3ee;
  cursor: grab;
}
.table-wrap.sticky-table.handover-apts-wrap {
  max-height: none;
}
.handover-apts-wrap.is-panning {
  cursor: grabbing;
  user-select: none;
}
.handover-apts-wrap::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
.handover-apts-wrap::-webkit-scrollbar-track {
  background: #dbe3ee;
  border-radius: 8px;
}
.handover-apts-wrap::-webkit-scrollbar-thumb {
  background: #64748b;
  border-radius: 8px;
  border: 3px solid #dbe3ee;
}
.handover-apts-wrap::-webkit-scrollbar-thumb:hover {
  background: #475569;
}
.handover-apts-wrap::-webkit-scrollbar-corner {
  background: #dbe3ee;
}
.ho-scroll-edge {
  position: absolute;
  pointer-events: none;
  z-index: 6;
  opacity: 0;
  transition: opacity 0.15s ease;
}
.handover-apts-shell.has-left .ho-scroll-edge.is-left,
.handover-apts-shell.has-right .ho-scroll-edge.is-right,
.handover-apts-shell.has-top .ho-scroll-edge.is-top,
.handover-apts-shell.has-bottom .ho-scroll-edge.is-bottom {
  opacity: 1;
}
.ho-scroll-edge.is-left {
  top: 4px;
  bottom: 12px;
  left: 40px;
  width: 20px;
  background: linear-gradient(to right, rgba(15, 23, 42, 0.16), transparent);
}
.ho-scroll-edge.is-right {
  top: 4px;
  bottom: 12px;
  right: 12px;
  width: 24px;
  background: linear-gradient(to left, rgba(15, 23, 42, 0.18), transparent);
}
.ho-scroll-edge.is-top {
  top: 4px;
  left: 40px;
  right: 12px;
  height: 12px;
  background: linear-gradient(to bottom, rgba(15, 23, 42, 0.12), transparent);
}
.ho-scroll-edge.is-bottom {
  bottom: 12px;
  left: 40px;
  right: 12px;
  height: 14px;
  background: linear-gradient(to top, rgba(15, 23, 42, 0.16), transparent);
}
.ho-scroll-hint {
  display: none;
}
.ho-apts-table {
  border-collapse: separate;
  border-spacing: 1px 1px;
  width: max-content;
  font-size: 11px;
}
.ho-apts-table th,
.ho-apts-table td {
  border: 0;
  padding: 0;
  text-align: center;
  background: #f8fafc;
  line-height: 1.1;
  border-radius: 5px;
}
.ho-apts-table .ho-floor-cell,
.ho-apts-table .ho-floor-date {
  position: sticky;
  left: 0;
  z-index: 4;
  min-width: 40px;
  width: 40px;
  background: #0f172a;
  font-weight: 700;
  color: #f8fafc;
  box-shadow: 6px 0 12px -8px rgba(15, 23, 42, 0.35);
}
.ho-apts-table .ho-floor-cell {
  border-radius: 8px;
  font-size: 13px;
  vertical-align: middle;
}
.ho-apts-table .ho-floor-date {
  background: #334155;
  color: #e2e8f0;
  font-size: 9px;
  font-weight: 600;
  border-radius: 6px;
}
.ho-apts-table .ho-num-row td {
  font-weight: 800;
  font-size: 12px;
  padding: 2px 2px;
  height: 18px;
  letter-spacing: 0.01em;
  font-variant-numeric: tabular-nums;
  color: #0f172a;
  background: #eef2f7;
  border-radius: 6px 6px 3px 3px;
}
.ho-apts-table .ho-num-row td.ho-apt-head:nth-child(odd):not(.is-high):not(.is-mid) {
  background: #e2e8f0;
}
.ho-apt-gap {
  width: 4px;
  min-width: 4px;
  max-width: 4px;
  padding: 0;
  background: #94a3b8 !important;
  border-radius: 999px !important;
  pointer-events: none;
}
.ho-apts-table td.ho-apt-block,
.ho-apts-table td.ho-apt-start,
.ho-apts-table td.ho-apt-end {
  border: 0;
}
.ho-apts-table .ho-num-row td.ho-apt-block {
  border: 0;
}
.ho-apts-table .ho-date-row td.ho-apt-block {
  border: 0;
}
.ho-apts-table .ho-date-row th,
.ho-apts-table .ho-work-row th {
  font-size: 10px;
  font-weight: 600;
}
.ho-work-cell {
  position: relative;
  overflow: hidden;
  width: 22px;
  min-width: 22px;
  max-width: 22px;
  height: 28px;
  padding: 1px 0 2px;
  vertical-align: middle;
  background: #f1f5f9;
  box-shadow: none;
}
.ho-work-cell::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 0;
  background: #cbd5e1;
  pointer-events: none;
}
.ho-work-cell.is-mid::before,
.ho-work-cell.is-high::before {
  height: 100%;
}
.ho-work-cell.is-mid::before {
  background: #fbbf24;
}
.ho-work-cell.is-high::before {
  background: #34d399;
}
.ho-work-cell.is-edit {
  cursor: pointer;
}
.ho-work-cell.is-edit:hover {
  outline: 2px solid #2563eb;
  outline-offset: 0;
  z-index: 1;
}
.ho-work-letter {
  position: relative;
  z-index: 1;
  display: block;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.05;
  color: #0f172a;
}
.ho-work-cell:not(.is-high):not(.is-mid) .ho-work-letter {
  color: #475569;
}
.ho-work-pct {
  position: relative;
  z-index: 1;
  display: block;
  margin-top: 0;
  font-size: 10px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  color: #0f172a;
}
.ho-work-cell.is-high .ho-work-pct,
.ho-work-cell.is-high .ho-work-letter {
  color: #064e3b;
}
.ho-work-cell.is-mid .ho-work-pct,
.ho-work-cell.is-mid .ho-work-letter {
  color: #78350f;
}
.ho-date-cell {
  padding: 1px 2px;
  height: 18px;
  font-size: 10px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  background: #f8fafc;
  border-radius: 3px 3px 6px 6px;
}
.ho-apts-table .ho-date-row td.is-overdue,
.ho-apts-table .ho-date-row td.is-overdue.is-high,
.ho-apts-table .ho-date-row td.is-overdue.is-mid {
  background: #fecaca !important;
  color: #b91c1c;
}
.ho-date-cell.is-overdue .ho-date-input {
  color: #b91c1c;
  font-weight: 800;
}
.ho-date-input {
  width: 56px;
  border: 0;
  background: transparent;
  text-align: center;
  font: inherit;
  font-size: 10px;
  font-weight: 600;
  color: inherit;
  font-variant-numeric: tabular-nums;
  padding: 1px 0;
}
.ho-date-input:focus {
  outline: 2px solid #93c5fd;
  background: #fff;
  color: var(--text);
  border-radius: 6px;
}
.ho-empty { background: transparent; }

.ho-pct-card {
  width: min(400px, calc(100% - 32px));
  border-radius: 18px;
}
.ho-pct-meta {
  margin: -6px 0 12px;
  font-size: 13px;
  color: var(--muted);
}
.ho-pct-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
}
.ho-pct-presets button {
  border: 0;
  background: #f1f5f9;
  border-radius: 999px;
  padding: 8px 14px;
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  color: var(--text);
}
.ho-pct-presets button:hover {
  background: var(--accent-light);
  color: var(--accent);
}

.ho-sys-table {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
  max-width: 760px;
  font-size: 13px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.ho-sys-table th,
.ho-sys-table td {
  border-bottom: 1px solid #f1f5f9;
  padding: 12px 14px;
  background: #fff;
}
.ho-sys-table thead th {
  background: #f8fafc;
  font-size: 12px;
  text-align: center;
  color: var(--muted);
  font-weight: 700;
}
.ho-sys-table tbody th {
  text-align: left;
  font-weight: 600;
  min-width: 220px;
}
.ho-sys-table tbody tr:last-child th,
.ho-sys-table tbody tr:last-child td {
  border-bottom: 0;
}
.ho-sys-table tbody tr:hover td,
.ho-sys-table tbody tr:hover th {
  background: #f8fafc;
}
.ho-sys-cell,
.ho-sys-pct {
  text-align: center;
}
.ho-building-head {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.ho-sys-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1.5px solid #cbd5e1;
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  vertical-align: middle;
  transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
button.ho-sys-check { padding: 0; }
.ho-sys-check.is-on {
  background: #10b981;
  border-color: #059669;
  box-shadow: 0 0 0 3px #d1fae5;
}
.ho-sys-check.is-on::after {
  content: "";
  width: 11px;
  height: 7px;
  border-left: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(-45deg) translate(1px, -1px);
}
span.ho-sys-check { cursor: default; }
.ho-sys-na,
.ho-sys-na-text {
  border: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font: inherit;
}
.ho-sys-na-text { cursor: default; }
.ho-sys-pct {
  position: relative;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  font-weight: 700;
  min-width: 64px;
}
.ho-sys-pct::after {
  content: "";
  display: block;
  width: 48px;
  height: 4px;
  margin: 6px auto 0;
  border-radius: 999px;
  background: linear-gradient(#10b981, #10b981) 0 / calc(var(--ho-pct, 0) * 1%) 100% no-repeat,
    #e2e8f0;
}

.handover-modal-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 12px;
}
#handover-add-modal .prod-modal-card {
  width: min(520px, calc(100% - 32px));
}

body.prod-readonly-mode:not(.handover-only-mode) #handover-add-section-btn,
body.prod-readonly-mode:not(.handover-only-mode) #handover-add-building-btn,
body.prod-readonly-mode:not(.handover-only-mode) #handover-import-excel-btn,
body.prod-readonly-mode:not(.handover-only-mode) .ho-section-del,
body.prod-readonly-mode:not(.handover-only-mode) .ho-legend-hint {
  display: none !important;
}

body.handover-only-mode .tabs,
body.handover-only-mode .nz-view-tabs,
body.handover-only-mode #home,
body.handover-only-mode #report1,
body.handover-only-mode #report3,
body.handover-only-mode #tenders,
body.handover-only-mode #smr,
body.handover-only-mode #finance,
body.handover-only-mode #pto,
body.handover-only-mode [data-nz-panel="report"] {
  display: none !important;
}

@media (max-width: 768px) {
  #report2.report.active:has([data-nz-panel="handover"]:not([hidden])) {
    height: calc(100dvh - 96px);
  }
  .handover-chrome {
    flex-wrap: wrap;
  }
  .handover-apts-wrap {
    max-height: none;
  }
  .ho-stat {
    min-width: auto;
  }
  .handover-toolbar-actions .btn {
    padding: 6px 10px;
  }
}

/* Tenders schedule */
#tenders.tenders-view-schedule .tenders-layout {
  height: calc(100vh - 132px);
  min-height: 0;
  overflow: hidden;
}
#tenders.tenders-view-schedule .prod-main {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  padding-bottom: 12px;
}
#tenders.tenders-view-schedule .prod-program-head,
#tenders.tenders-view-schedule [data-role="tenders-status"] {
  flex: none;
}
#tenders.tenders-view-schedule .tenders-table-wrap {
  flex: 1 1 auto;
  min-height: 160px;
  max-height: none;
  overflow: auto;
  overscroll-behavior: contain;
}
.tenders-table-wrap {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: auto;
}
.tenders-table-wrap table.tenders-table thead th {
  position: sticky;
}
.tenders-table-wrap table.tenders-table thead tr.thead-groups th {
  top: 0;
  z-index: 12;
}
.tenders-table-wrap table.tenders-table thead tr.thead-cols th {
  top: 42px;
  z-index: 11;
}
.tenders-table-wrap table.tenders-table {
  min-width: 0;
  width: max-content;
  table-layout: auto;
}
.tenders-table col.tenders-col-date {
  width: 70px;
}
.tenders-table col.tenders-col-fact {
  width: 88px;
}
.tenders-table td.prod-date-cell,
.tenders-table th.tenders-plan-head,
.tenders-table th.tenders-fact-head {
  display: table-cell !important;
  visibility: visible !important;
  min-width: 70px !important;
  width: 70px !important;
  max-width: 70px !important;
  padding: 1px 2px !important;
  text-align: center !important;
  white-space: nowrap !important;
}
.tenders-table td.tenders-date-fact,
.tenders-table th.tenders-fact-head {
  min-width: 88px !important;
  width: 88px !important;
  max-width: 88px !important;
}
.tenders-table thead tr.thead-cols {
  display: table-row !important;
  visibility: visible !important;
  height: auto !important;
}
.tenders-table thead tr.thead-groups th.tenders-stage-head {
  min-width: 158px;
  padding: 6px 4px 4px;
  line-height: 1.2;
}
.tenders-table .tenders-stage-title {
  display: block;
  font-weight: 700;
}
.tenders-table .tenders-stage-sub {
  display: block;
  margin-top: 2px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #64748b;
  text-transform: none;
}
.tenders-table thead tr.thead-cols th.tenders-plan-head,
.tenders-table thead tr.thead-cols th.tenders-fact-head {
  font-size: 10px;
  font-weight: 700;
  min-height: 0;
  padding: 2px 3px !important;
  text-transform: uppercase;
}
.tenders-table thead tr.thead-cols th.tenders-fact-head {
  background: #f8fafc !important;
}
.tenders-table thead tr.thead-cols th.tenders-plan-head,
.tenders-table td.tenders-date-plan {
  background: #f8fafc !important;
}
.tenders-table td.tenders-date-plan.is-auto-plan .prod-date-text {
  color: var(--muted);
  cursor: default;
}
.tenders-table td.tenders-date-fact {
  background: #fff !important;
}
.tenders-table td.tenders-date-fact.is-facted-date {
  background: #dcfce7 !important;
}
.tenders-table td.tenders-date-fact.is-facted-date .prod-date-input,
.tenders-table td.tenders-date-fact.is-facted-date .prod-date-text {
  color: #15803d;
  font-weight: 700;
}
.tenders-fact-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 100%;
  margin: 0;
}
.tenders-table td.tenders-date-fact .prod-date-input,
.tenders-table td.tenders-date-plan .prod-date-input {
  display: inline-block;
  width: 62px;
  min-width: 62px;
  max-width: 62px;
  margin: 0;
  padding: 1px 2px;
  font-size: 12px;
  line-height: 1.2;
  text-align: center;
}
.tenders-table td.prod-date-cell .prod-date-text {
  display: inline-block;
  min-width: 62px;
  text-align: center;
}
.tenders-table .prod-fact-btn {
  width: 16px;
  height: 16px;
  flex: none;
}
#tenders.tenders-readonly .prod-fact-btn {
  pointer-events: none;
  cursor: default;
}
.tenders-table col.tenders-col-num {
  width: 32px;
}
.tenders-table thead th {
  text-align: center;
  white-space: normal;
  line-height: 1.25;
  font-size: 12px;
}
.tenders-table thead tr.thead-groups th:nth-child(2) {
  text-align: left;
}
table.report-table.tenders-table tbody td {
  vertical-align: middle;
  padding: 2px 4px;
  line-height: 1.2;
}
.tenders-table thead tr.thead-groups th:first-child,
.tenders-table td.tenders-num {
  position: sticky !important;
  left: 0 !important;
  z-index: 5;
  width: 32px !important;
  min-width: 32px !important;
  max-width: 32px !important;
  padding: 1px 0 !important;
  text-align: center !important;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  color: var(--muted) !important;
  white-space: nowrap !important;
  background: #fff;
}
.tenders-table thead tr.thead-groups th:first-child {
  z-index: 14;
  background: #eef2f7;
  box-shadow: none;
}
.tenders-table thead tr.thead-groups th:nth-child(2),
.tenders-table td.tenders-name {
  position: sticky;
  left: 32px;
  z-index: 4;
  background: #fff;
  box-shadow: 4px 0 8px -4px rgba(15, 23, 42, 0.16);
}
.tenders-table thead tr.thead-groups th:nth-child(2) {
  z-index: 13;
  background: #eef2f7;
}
.tenders-table tbody tr:nth-child(even) td.tenders-num,
.tenders-table tbody tr:nth-child(even) td.tenders-name {
  background: var(--row-alt);
}
.tenders-table tbody tr:hover td.tenders-num,
.tenders-table tbody tr:hover td.tenders-name {
  background: var(--hover);
}
.tenders-table .tenders-name {
  min-width: 220px;
}
.tenders-name-row {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.tenders-name-input {
  width: 100%;
  flex: 1;
  min-width: 0;
  border: 1px solid transparent;
  border-radius: 4px;
  padding: 1px 4px;
  font: inherit;
  font-size: 12.5px;
  line-height: 1.2;
  background: transparent;
  color: var(--text);
}
.tenders-name-input:hover,
.tenders-name-input:focus {
  border-color: var(--border);
  background: #fff;
  outline: none;
}
.tenders-row-del {
  display: none;
  flex: none;
  width: 18px;
  height: 18px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
}
.tenders-table tr:hover .tenders-row-del {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.tenders-row-del:hover {
  background: #fef2f2;
  color: #dc2626;
}
#tenders.tenders-readonly .tenders-row-del,
#tenders.tenders-readonly #tenders-add-row-btn,
#tenders.tenders-readonly #tenders-import-excel-btn {
  display: none !important;
}
.tenders-empty {
  margin: 0;
  padding: 24px;
  color: var(--muted);
}

@media (max-width: 768px) {
  .prod-program-actions {
    flex-wrap: wrap;
  }
}

/* Accounts admin panel */
body:not(.is-admin) [data-tab="accounts"],
body:not(.is-admin) #accounts {
  display: none !important;
}

.accounts-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 8px;
}
.accounts-head .home-title {
  margin-bottom: 6px;
}
.accounts-lead {
  margin: 0;
  max-width: 640px;
  color: var(--text-secondary);
  font-size: 13px;
}
.accounts-status {
  min-height: 20px;
  margin: 0 0 12px;
  font-size: 13px;
  color: var(--muted);
}
.accounts-status.is-error {
  color: var(--neg-text);
}
.accounts-table-wrap {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: auto;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.accounts-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 640px;
}
.accounts-table th,
.accounts-table td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}
.accounts-table th {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  background: var(--surface-alt);
}
.accounts-table tr:last-child td {
  border-bottom: none;
}
.accounts-login {
  font-size: 13px;
  background: var(--surface-alt);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 2px 7px;
}
.accounts-empty {
  color: var(--muted);
  text-align: center !important;
  padding: 28px 14px !important;
}
.accounts-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: #f1f5f9;
  color: #475569;
}
.accounts-badge.is-edit {
  background: var(--accent-light);
  color: var(--accent-hover);
}
.accounts-badge.is-admin {
  background: #ecfdf5;
  color: #047857;
}
.accounts-badge.is-mixed {
  background: #eff6ff;
  color: #1d4ed8;
}
.accounts-rights {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
.accounts-rights-detail {
  font-size: 12px;
  line-height: 1.4;
  color: var(--text-secondary);
}
.accounts-row-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  white-space: nowrap;
}
.accounts-row-btn {
  padding: 6px 10px;
  font-size: 12px;
}
.btn-danger {
  background: #fff;
  color: #b91c1c;
  border: 1px solid #fecaca;
}
.btn-danger:hover {
  background: #fef2f2;
}
.accounts-hint {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.accounts-checks {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 12px 12px;
  margin-bottom: 12px;
  gap: 8px;
}
.accounts-checks legend {
  padding: 0 4px;
  font-size: 13px;
  color: var(--text-secondary);
}
.accounts-checks label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-weight: 500;
  color: var(--text);
  cursor: pointer;
}
.accounts-checks input {
  width: 16px;
  height: 16px;
  accent-color: var(--accent);
}
.accounts-perms {
  gap: 10px;
}
.accounts-perm-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.accounts-perm-row span {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
}
.accounts-perm-row select {
  min-width: 170px;
  max-width: 52%;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  color: var(--text);
  font-size: 13px;
}
.accounts-modal-card {
  width: min(520px, 100%);
}
.accounts-log {
  margin-top: 32px;
}
.accounts-log-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 8px;
}
.accounts-log-title {
  margin: 0 0 6px;
  font-size: 18px;
  font-weight: 700;
  color: var(--text);
}
.accounts-log-table {
  min-width: 720px;
}
.accounts-log-time {
  white-space: nowrap;
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}

body.nz-report-hidden .nz-view-tabs,
body.nz-report-hidden [data-nz-panel="report"] {
  display: none !important;
}
body.nz-handover-hidden .nz-view-tabs,
body.nz-handover-hidden [data-nz-panel="handover"] {
  display: none !important;
}

@media (max-width: 768px) {
  .auth-user { display: none; }
  .accounts-head {
    flex-direction: column;
  }
  .accounts-head .btn {
    width: 100%;
  }
  .accounts-perm-row {
    flex-direction: column;
    align-items: stretch;
  }
  .accounts-perm-row select {
    max-width: none;
    min-width: 0;
    width: 100%;
  }
  .accounts-log-head {
    flex-direction: column;
  }
  .accounts-log-head .btn {
    width: 100%;
  }
}

.prod-pick-hint {
  display: none;
  margin: 56px auto 0;
  padding: 0 24px;
  text-align: center;
  color: var(--muted);
  font-size: 16px;
}
#tenders.tenders-awaiting-pick .prod-pick-hint,
#report3.prod-awaiting-pick .prod-pick-hint {
  display: block;
}
#tenders.tenders-awaiting-pick [data-role="tenders-analytics"],
#tenders.tenders-awaiting-pick .tenders-table-wrap,
#tenders.tenders-awaiting-pick .tenders-view-switch,
#tenders.tenders-awaiting-pick .tenders-schedule-only,
#tenders.tenders-awaiting-pick [data-role="tenders-status"] {
  display: none !important;
}
#report3.prod-awaiting-pick [data-role="prod-analytics"],
#report3.prod-awaiting-pick .prod-schedule-only,
#report3.prod-awaiting-pick .tenders-view-switch,
#report3.prod-awaiting-pick [data-role="status"] {
  display: none !important;
}

#tenders.tenders-view-analytics .tenders-schedule-only {
  display: none !important;
}
#tenders.tenders-view-schedule [data-role="tenders-analytics"] {
  display: none !important;
}

#report3 .prod-view-tabs {
  display: none !important;
}
#report3.prod-view-analytics .prod-schedule-panel,
#report3.prod-view-tep .prod-schedule-panel,
#report3.prod-view-analytics .prod-tep-panel,
#report3.prod-view-schedule .prod-tep-panel {
  display: none !important;
}
#report3.prod-view-schedule [data-role="prod-analytics"],
#report3.prod-view-tep [data-role="prod-analytics"] {
  display: none !important;
}
#report3.prod-view-analytics [data-role="status"],
#report3.prod-view-tep [data-role="status"],
#report3.prod-view-schedule [data-role="status"] {
  display: none !important;
}
#report3.prod-view-analytics .prod-leaf-chrome {
  display: none !important;
}
#report3.prod-view-schedule .prod-schedule-panel,
#report3.prod-view-tep .prod-tep-panel {
  display: block !important;
}
body.prod-folder-rollup .prod-leaf-chrome {
  display: none !important;
}
.tenders-view-switch {
  display: inline-flex;
  align-items: center;
  padding: 3px;
  background: #eef2f7;
  border-radius: 8px;
  gap: 2px;
}
.tenders-view-switch button {
  border: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 6px;
  cursor: pointer;
}
.tenders-view-switch button.is-active {
  background: #fff;
  color: var(--text);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
}
.tenders-dash {
  margin-top: 4px;
}
.tenders-dash-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 14px;
}
.tenders-dash-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 16px 16px 14px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
  min-width: 0;
  grid-column: span 2;
}
.tenders-dash-wide {
  grid-column: span 3;
}
.tenders-dash-card h3 {
  margin: 0 0 10px;
  font-size: 14px;
  font-weight: 700;
}
.tenders-dash-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}
.tenders-dash-card-head h3 {
  margin: 0;
}
.tenders-dash-lead {
  margin: -4px 0 12px;
  color: var(--muted);
  font-size: 12.5px;
}
.tenders-kpi-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.tenders-kpi {
  background: var(--surface-alt);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 10px 12px;
}
.tenders-kpi span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.tenders-kpi b {
  display: block;
  margin-top: 4px;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.tenders-kpi-highlight {
  margin-top: 12px;
  padding: 12px;
  border-radius: 10px;
  background: #f8fafc;
  border: 1px solid var(--border);
}
.tenders-kpi-highlight span {
  display: block;
  color: var(--muted);
  font-size: 12px;
}
.tenders-kpi-highlight b {
  display: block;
  margin-top: 4px;
  font-size: 22px;
  font-weight: 800;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.tenders-kpi-highlight.is-pos b { color: var(--pos-text); }
.tenders-kpi-highlight.is-neg b { color: var(--neg-text); }
.tenders-dash-stats {
  margin: 0;
  padding: 0;
  list-style: none;
}
.tenders-dash-stats li {
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
  color: var(--text-secondary);
  font-size: 13px;
}
.tenders-dash-stats li:last-child { border-bottom: 0; }
.tenders-dash-stats b {
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.tenders-seg {
  display: inline-flex;
  background: #eef2f7;
  border-radius: 7px;
  padding: 2px;
  flex-shrink: 0;
}
.tenders-seg button {
  border: 0;
  background: transparent;
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  padding: 4px 8px;
  border-radius: 5px;
  cursor: pointer;
}
.tenders-seg button.is-active {
  background: #fff;
  color: var(--text);
}
.tenders-hbars {
  display: grid;
  gap: 8px;
}
.tenders-hbar {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.4fr) auto;
  gap: 8px;
  align-items: center;
}
.tenders-hbar-name {
  font-size: 12px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tenders-hbar-track {
  height: 8px;
  background: #eef2f7;
  border-radius: 99px;
  overflow: hidden;
}
.tenders-hbar-track i {
  display: block;
  height: 100%;
  border-radius: 99px;
}
.tenders-hbar b {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  white-space: nowrap;
}
.tenders-donut-wrap {
  display: grid;
  grid-template-columns: 108px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
}
.tenders-donut-svg {
  width: 108px;
  height: 108px;
}
.tenders-donut-legend {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 12px;
  color: var(--text-secondary);
}
.tenders-donut-legend li {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 3px 0;
}
.tenders-donut-legend i {
  width: 8px;
  height: 8px;
  border-radius: 99px;
  flex: none;
}
.tenders-donut-legend b {
  margin-left: auto;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.tenders-dash-select {
  max-width: 180px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: #fff;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  padding: 4px 8px;
}
.tenders-funnel {
  display: grid;
  gap: 7px;
}
.tenders-funnel-row {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}
.tenders-funnel-label {
  font-size: 11.5px;
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tenders-funnel-bar {
  height: 10px;
  background: #eef2f7;
  border-radius: 99px;
  overflow: hidden;
}
.tenders-funnel-bar i {
  display: block;
  height: 100%;
  background: var(--accent);
  border-radius: 99px;
}
.tenders-funnel-row b {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  white-space: nowrap;
}
.tenders-funnel-row small {
  color: var(--muted);
  font-weight: 500;
}
.tenders-dash-note,
.tenders-dash-empty {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.tenders-legend {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
}
.tenders-legend i {
  width: 10px;
  height: 10px;
  border-radius: 2px;
  display: inline-block;
}
.tenders-legend i.is-plan { background: #cbd5e1; }
.tenders-legend i.is-fact { background: #2563eb; }
.tenders-bars-svg,
.tenders-line-svg {
  width: 100%;
  height: 150px;
  display: block;
}
.tenders-now {
  display: grid;
  gap: 10px;
}
.tenders-now-row {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) 40px;
  gap: 10px;
  align-items: center;
}
.tenders-now-text {
  min-width: 0;
}
.tenders-now-text b {
  display: block;
  font-size: 13px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tenders-now-text span {
  display: block;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tenders-now-bar {
  height: 8px;
  background: #eef2f7;
  border-radius: 99px;
  overflow: hidden;
}
.tenders-now-bar i {
  display: block;
  height: 100%;
  background: var(--accent);
  border-radius: 99px;
}
.tenders-now-row em {
  font-style: normal;
  font-size: 12px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  text-align: right;
}

@media (max-width: 1100px) {
  .tenders-dash-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .tenders-dash-card,
  .tenders-dash-wide {
    grid-column: span 1;
  }
}
@media (max-width: 768px) {
  .tenders-dash-grid {
    grid-template-columns: 1fr;
  }
  .tenders-dash-card,
  .tenders-dash-wide {
    grid-column: auto;
  }
  .tenders-donut-wrap,
  .tenders-funnel-row,
  .tenders-now-row,
  .tenders-hbar {
    grid-template-columns: 1fr;
  }
  .tenders-view-switch {
    width: 100%;
  }
  .tenders-view-switch button {
    flex: 1;
  }
  #tenders.tenders-view-schedule .tenders-layout {
    height: auto;
    overflow: visible;
  }
  #tenders.tenders-view-schedule .prod-main {
    display: block;
    overflow: visible;
  }
  #tenders.tenders-view-schedule .tenders-table-wrap {
    max-height: min(70dvh, 560px);
  }
}

.collab-conflict-card {
  width: min(480px, 100%);
}
.collab-conflict-text {
  margin: 0 0 16px;
  color: var(--text-secondary, #475569);
  line-height: 1.45;
  white-space: pre-wrap;
}

/* SMR Gantt */
#smr.report.active {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  --smr-check-w: 28px;
  --smr-num-w: 40px;
  --smr-name-w: 220px;
  --smr-table-base: 1134px;
  --smr-table-w: calc(var(--smr-table-base, 896px) + var(--smr-name-w, 220px));
  --smr-row-h: 24px;
  --smr-head-h: 40px;
}
#smr .smr-layout {
  flex: 1 1 auto;
  width: 100%;
  max-width: 100%;
  height: calc(100vh - 114px);
  min-height: 0;
  margin: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
}
#smr .smr-layout.is-sidebar-hidden {
  grid-template-columns: minmax(0, 1fr);
}
#smr .smr-layout.is-sidebar-hidden .prod-sidebar {
  display: none;
}
#smr .prod-sidebar {
  display: flex;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
#smr .smr-main {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding: 0;
  background: #f8fafc;
}
#smr [data-role="smr-status"] {
  flex: none;
  margin: 0;
  padding: 6px 16px;
}
#smr [data-role="smr-status"]:empty,
#smr [data-role="smr-status"][hidden] {
  display: none;
}
.smr-chrome {
  flex: none;
  background: #fff;
  border-bottom: 1px solid var(--border);
}
.smr-chrome-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 12px 4px;
  flex-wrap: wrap;
  min-width: 0;
}
#smr .prod-sidebar-heading {
  align-items: center;
}
#smr .prod-sidebar-heading-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: none;
}
.smr-sidebar-collapse {
  flex: none;
  width: 26px;
  height: 26px;
  margin-left: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #64748b;
  cursor: pointer;
}
.smr-sidebar-collapse:hover {
  background: #f1f5f9;
  color: var(--text);
}
.smr-sidebar-show {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 10px 0 8px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  color: var(--text);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.smr-sidebar-show:hover {
  background: #f8fafc;
  border-color: #cbd5e1;
}
.smr-sidebar-show[hidden],
.smr-sidebar-collapse[hidden] {
  display: none !important;
}
.smr-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  flex-wrap: wrap;
}
.smr-title {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.smr-project-pick {
  display: flex;
  flex: 1 1 220px;
  min-width: 0;
  max-width: min(520px, 100%);
}
#smr-edit-btn {
  flex: none;
  white-space: nowrap;
}
.smr-project-pick select {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  height: 40px;
  margin: 0;
  padding: 4px 12px;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  background: #fff;
  color: #0f172a;
  font: inherit;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.3;
  cursor: pointer;
}
.smr-project-pick select:focus {
  outline: none;
}
.smr-chrome-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: none;
}
.smr-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 12px 6px;
  flex-wrap: wrap;
  min-width: 0;
}
.smr-toolbar-left,
.smr-toolbar-right {
  display: flex;
  align-items: center;
  gap: 6px;
}
.smr-tool-btn {
  height: 30px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: #fff;
  color: var(--text);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.smr-tool-btn:hover {
  background: #f8fafc;
}
.smr-icon-btn {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: #64748b;
  cursor: pointer;
}
.smr-icon-btn:hover {
  background: #f1f5f9;
  color: var(--text);
}
.smr-switch {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 4px 0 8px;
  font-size: 13px;
  color: #475569;
  cursor: pointer;
  user-select: none;
}
.smr-switch input {
  accent-color: var(--accent);
}
.smr-filter-wrap {
  position: relative;
}
.smr-filter-menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 8;
  min-width: 180px;
  padding: 6px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.12);
}
.smr-filter-menu button {
  display: block;
  width: 100%;
  padding: 7px 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  text-align: left;
  font: inherit;
  font-size: 13px;
  cursor: pointer;
}
.smr-filter-menu button:hover,
.smr-filter-menu button.is-active {
  background: #eff6ff;
  color: var(--accent);
}
.smr-outline-menu [data-smr-outline="1"],
.smr-outline-menu [data-smr-outline="show"] {
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid #e2e8f0;
  border-radius: 0 0 6px 6px;
}
.smr-cols-menu {
  min-width: 230px;
  max-height: min(70vh, 440px);
  overflow: auto;
}
.smr-cols-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
  color: var(--text);
}
.smr-cols-item:hover {
  background: #f8fafc;
}
.smr-cols-item input {
  accent-color: var(--accent);
}
.smr-cols-reset {
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid #e2e8f0;
  font-weight: 600;
  color: var(--accent);
}
.smr-table thead tr.smr-thead-groups:only-child th {
  height: 40px;
}
.smr-zoom {
  display: flex;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
}
.smr-zoom-btn {
  height: 26px;
  padding: 0 8px;
  border: 0;
  background: transparent;
  color: #64748b;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.smr-zoom-btn + .smr-zoom-btn {
  border-left: 1px solid var(--border);
}
.smr-zoom-btn.smr-zoom-step {
  width: 30px;
  padding: 0;
  font-size: 16px;
  line-height: 1;
}
.smr-zoom-btn:disabled {
  opacity: 0.38;
  cursor: default;
}
.smr-zoom-btn.is-active {
  background: #2563eb;
  color: #fff;
}
.smr-board {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  width: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: #fff;
}
.smr-work {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  display: flex;
  overflow: hidden;
}
.smr-work .smr-board {
  width: auto;
}
.smr-fact-panel {
  flex: none;
  width: 300px;
  min-width: 260px;
  max-width: 360px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: #fff;
  border-left: 1px solid var(--border);
}
.smr-fact-panel[hidden] {
  display: none !important;
}
.smr-fact-panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  padding: 12px 12px 8px;
  border-bottom: 1px solid #eef2f6;
}
.smr-fact-panel-kicker {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #64748b;
}
.smr-fact-panel-head h3 {
  margin: 4px 0 0;
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
  line-height: 1.3;
}
.smr-fact-panel-total {
  padding: 10px 12px 0;
  font-size: 13px;
  color: #64748b;
}
.smr-fact-panel-total strong {
  color: #0f172a;
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  margin-left: 6px;
}
.smr-fact-panel-hint {
  margin: 6px 12px 8px;
  font-size: 12px;
  line-height: 1.4;
  color: #64748b;
}
.smr-fact-panel-list {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 0 8px 12px;
}
.smr-fact-week {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 56px 48px;
  gap: 6px;
  align-items: center;
  padding: 6px 8px;
  border-radius: 8px;
}
.smr-fact-week.is-current {
  background: #eff6ff;
}
.smr-fact-week-meta {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.smr-fact-week-meta strong {
  font-size: 12px;
  color: #0f172a;
}
.smr-fact-week-meta span {
  font-size: 11px;
  color: #64748b;
  font-variant-numeric: tabular-nums;
}
.smr-fact-week input {
  height: 26px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.smr-fact-week-sum {
  text-align: right;
  font-size: 12px;
  font-weight: 600;
  color: #334155;
  font-variant-numeric: tabular-nums;
}
#smr.smr-view-chess .smr-fact-panel,
#smr.smr-view-print .smr-fact-panel,
#smr.smr-view-report .smr-fact-panel {
  display: none !important;
}
.smr-empty {
  margin: auto;
  color: var(--muted);
  font-size: 14px;
}
.smr-split {
  display: flex;
  flex: 1 1 auto;
  width: 100%;
  max-width: 100%;
  height: 100%;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  overscroll-behavior: contain;
}
.smr-table-pane {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto;
  box-sizing: border-box;
  width: min(380px, 40%);
  min-width: 240px;
  max-width: calc(100% - 226px);
  height: 100%;
  min-height: 0;
  overflow: hidden;
  border-right: 1px solid var(--border);
  background: #fff;
  padding-bottom: var(--smr-gantt-hbar, 0px);
}
.smr-splitter {
  flex: none;
  width: 6px;
  cursor: col-resize;
  background: #f1f5f9;
}
.smr-splitter:hover {
  background: #bfdbfe;
}
.smr-gantt-pane {
  flex: 1 1 auto;
  min-width: 220px;
  max-width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: #fafbfc;
}
.smr-split:not(.is-gantt-hidden) .smr-table-head-inner,
.smr-split:not(.is-gantt-hidden) .smr-table-body-inner,
.smr-split:not(.is-gantt-hidden) .smr-table {
  width: var(--smr-table-w, 1116px);
  min-width: var(--smr-table-w, 1116px);
}
.smr-split.is-gantt-hidden .smr-table-pane {
  flex: 1 1 auto;
  width: 100% !important;
  max-width: 100%;
  min-width: 0;
  border-right: 0;
  padding-bottom: 0;
}
.smr-split.is-gantt-hidden .smr-table-head-inner,
.smr-split.is-gantt-hidden .smr-table-body-inner,
.smr-split.is-gantt-hidden .smr-table {
  width: max(100%, var(--smr-table-w, 1116px));
}
.smr-split.is-gantt-hidden .smr-gantt-pane {
  display: none;
}
.smr-split.is-gantt-hidden .smr-splitter {
  width: 10px;
  background: #e2e8f0;
}
.smr-split.is-gantt-hidden .smr-table-body {
  scrollbar-width: thin;
}
.smr-split.is-gantt-hidden .smr-table-body::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
#smr-gantt-toggle.is-active {
  background: #2563eb;
  border-color: #2563eb;
  color: #fff;
}
.smr-table-head,
.smr-gantt-head {
  flex: none;
  height: var(--smr-head-h, 40px);
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  border-bottom: 1px solid var(--border);
  background: #f8fafc;
  box-sizing: border-box;
}
.smr-table-head {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
.smr-table-head::-webkit-scrollbar {
  height: 0;
}
.smr-table-head-inner,
.smr-table-body-inner {
  box-sizing: border-box;
  width: var(--smr-table-w, 1116px);
  max-width: none;
}
.smr-table-body {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  overscroll-behavior: contain;
}
.smr-table-body::-webkit-scrollbar {
  width: 0;
  height: 8px;
}
.smr-split.is-gantt-hidden .smr-table-body {
  overflow: auto;
  scrollbar-width: thin;
}
.smr-split.is-gantt-hidden .smr-table-body::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
.smr-gantt-body {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  overflow: auto;
  overscroll-behavior: contain;
}
.smr-table {
  border-collapse: collapse;
  table-layout: fixed;
  width: calc(var(--smr-table-base, 896px) + var(--smr-name-w, 220px));
  min-width: calc(var(--smr-table-base, 896px) + var(--smr-name-w, 220px));
  max-width: none;
  font-size: 11px;
}
.smr-table th,
.smr-table td {
  border-bottom: 1px solid #eef2f6;
  border-right: 1px solid #f1f5f9;
  padding: 0 4px;
  height: var(--smr-row-h, 24px);
  white-space: nowrap;
  vertical-align: middle;
  background: #fff;
  overflow: hidden;
  text-overflow: ellipsis;
  box-sizing: border-box;
}
.smr-table thead th {
  background: #f8fafc;
  color: #64748b;
  font-size: 10px;
  font-weight: 700;
  text-align: center;
  height: 20px;
}
.smr-thead-groups th {
  height: 20px;
  border-bottom: 1px solid #e2e8f0;
}
.smr-table tbody tr.is-group td {
  background: #f8fafc;
  font-weight: 600;
}
.smr-table tbody tr.is-selected td,
.smr-table tbody tr.is-selected td .smr-cell-input,
.smr-table tbody tr.is-selected td .smr-name-input {
  background: #eff6ff;
}
.smr-table tbody tr:hover td {
  background: #f8fbff;
}
.smr-col-check { width: var(--smr-check-w, 28px); }
.smr-col-num { width: var(--smr-num-w, 40px); text-align: center; color: #94a3b8; }
.smr-col-name { width: var(--smr-name-w, 220px); min-width: 0; }
.smr-col-weight { width: 56px; text-align: right; }
.smr-col-cost { width: 96px; text-align: right; font-variant-numeric: tabular-nums; }
.smr-col-flag { width: 86px; text-align: center; }
.smr-col-flag input { margin: 0; vertical-align: middle; }
.smr-col-print { width: 64px; }
.smr-col-struct { width: 72px; text-align: center; }
.smr-col-pct { width: 64px; text-align: right; }
.smr-col-fact { width: 92px; }
td.smr-col-fact {
  white-space: nowrap;
}
.smr-fact-week-input {
  width: 40px;
  display: inline-block;
  vertical-align: middle;
  margin-right: 2px;
}
.smr-fact-open {
  display: inline-block;
  vertical-align: middle;
  border: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
}
.smr-fact-open:hover {
  color: #2563eb;
  text-decoration: underline;
}
.smr-col-pct.is-from-chess {
  color: #334155;
  font-variant-numeric: tabular-nums;
}
.smr-col-date { width: 78px; }
.smr-col-dur { width: 56px; text-align: right; }
.smr-col-var { width: 76px; text-align: right; font-variant-numeric: tabular-nums; }
.smr-var-late { color: #b91c1c; font-weight: 600; }
.smr-var-early { color: #15803d; font-weight: 600; }
.smr-var-zero { color: #64748b; }
.smr-col-link { width: 88px; }
.smr-col-user { width: 100px; }
.smr-table th.smr-col-check,
.smr-table td.smr-col-check {
  position: sticky;
  left: 0;
  z-index: 3;
}
.smr-table th.smr-col-num,
.smr-table td.smr-col-num {
  position: sticky;
  left: var(--smr-check-w, 28px);
  z-index: 3;
}
.smr-table th.smr-col-name,
.smr-table td.smr-col-name {
  position: sticky;
  left: calc(var(--smr-check-w, 28px) + var(--smr-num-w, 40px));
  z-index: 3;
  box-shadow: 4px 0 6px -3px rgba(15, 23, 42, 0.12);
}
.smr-table thead th.smr-col-name {
  overflow: visible;
}
.smr-col-resizer {
  position: absolute;
  top: 0;
  right: 0;
  width: 8px;
  height: 100%;
  cursor: col-resize;
  z-index: 6;
}
.smr-col-resizer::after {
  content: "";
  position: absolute;
  top: 6px;
  bottom: 6px;
  left: 3px;
  width: 2px;
  border-radius: 1px;
  background: #cbd5e1;
}
.smr-col-resizer:hover::after,
body.smr-col-resizing .smr-col-resizer::after {
  background: #2563eb;
}
body.smr-col-resizing,
body.smr-col-resizing * {
  cursor: col-resize !important;
  user-select: none !important;
}
.smr-table thead th.smr-col-check,
.smr-table thead th.smr-col-num,
.smr-table thead th.smr-col-name {
  z-index: 4;
  background: #f8fafc;
}
.smr-name {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.smr-drag-handle {
  flex: none;
  width: 12px;
  height: 16px;
  margin-right: 2px;
  cursor: grab;
  background: center / 8px 12px no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 12'%3E%3Ccircle cx='2' cy='2' r='1.1' fill='%2394a3b8'/%3E%3Ccircle cx='6' cy='2' r='1.1' fill='%2394a3b8'/%3E%3Ccircle cx='2' cy='6' r='1.1' fill='%2394a3b8'/%3E%3Ccircle cx='6' cy='6' r='1.1' fill='%2394a3b8'/%3E%3Ccircle cx='2' cy='10' r='1.1' fill='%2394a3b8'/%3E%3Ccircle cx='6' cy='10' r='1.1' fill='%2394a3b8'/%3E%3C/svg%3E");
}
.smr-drag-handle:hover {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 12'%3E%3Ccircle cx='2' cy='2' r='1.1' fill='%23475569'/%3E%3Ccircle cx='6' cy='2' r='1.1' fill='%23475569'/%3E%3Ccircle cx='2' cy='6' r='1.1' fill='%23475569'/%3E%3Ccircle cx='6' cy='6' r='1.1' fill='%23475569'/%3E%3Ccircle cx='2' cy='10' r='1.1' fill='%23475569'/%3E%3Ccircle cx='6' cy='10' r='1.1' fill='%23475569'/%3E%3C/svg%3E");
}
body.smr-row-dragging,
body.smr-row-dragging * {
  cursor: grabbing !important;
  user-select: none !important;
}
.smr-table tbody tr.is-dragging td,
.smr-gantt-row.is-dragging {
  opacity: 0.42;
}
.smr-table tbody tr.smr-drop-before td {
  box-shadow: inset 0 2px 0 #2563eb;
}
.smr-table tbody tr.smr-drop-after td {
  box-shadow: inset 0 -2px 0 #2563eb;
}
.smr-gantt-row.smr-drop-before {
  box-shadow: inset 0 2px 0 #2563eb;
}
.smr-gantt-row.smr-drop-after {
  box-shadow: inset 0 -2px 0 #2563eb;
}
.smr-name-text {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: default;
}
.smr-name-text.is-chess {
  cursor: pointer;
}
.smr-name-text.is-chess:hover {
  color: #2563eb;
}
.smr-name-input {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}
.smr-name-input,
.smr-cell-input {
  width: 100%;
  border: 1px solid transparent;
  background: #fff;
  font: inherit;
  color: inherit;
  padding: 0 3px;
  border-radius: 3px;
  pointer-events: auto;
  position: relative;
  z-index: 2;
}
.smr-name-input:focus,
.smr-cell-input:focus {
  outline: none;
  border-color: #93c5fd;
  background: #fff;
}
.smr-cell-input.is-invalid {
  border-color: #f87171;
  background: #fef2f2;
}
.smr-twist,
.smr-twist-spacer {
  width: 14px;
  height: 14px;
  flex: none;
}
.smr-twist {
  border: 0;
  padding: 0;
  background: center / 10px no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5 5 7.5 8 3.5' fill='none' stroke='%2364748b' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  cursor: pointer;
}
.smr-twist.is-closed {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M3.5 2 7.5 5 3.5 8' fill='none' stroke='%2364748b' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.smr-struct-icon {
  display: inline-block;
  width: 14px;
  height: 14px;
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='3' y='8' width='10' height='5' rx='1' fill='%2394a3b8'/%3E%3Crect x='5.5' y='3' width='5' height='4' rx='1' fill='%23cbd5e1'/%3E%3C/svg%3E");
}
.smr-struct-icon.is-group {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2.5 6.5h11v6.2a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V6.5Z' fill='%233b82f6'/%3E%3Cpath d='M7.2 3.2h5.3L14 6.5H2.5l1.4-3.3h3.3Z' fill='%2360a5fa'/%3E%3C/svg%3E");
}
.smr-gantt-head-inner {
  min-height: var(--smr-head-h, 40px);
  box-sizing: border-box;
}
.smr-gantt-canvas {
  max-width: none;
}
.smr-gantt-years,
.smr-gantt-minor {
  display: flex;
  height: 20px;
  font-size: 10px;
  color: #64748b;
}
.smr-gantt-years {
  font-weight: 700;
  color: #334155;
  border-bottom: 1px solid #e2e8f0;
}
.smr-tick-year,
.smr-tick-minor {
  flex: none;
  display: flex;
  align-items: center;
  padding-left: 4px;
  border-right: 1px solid #eef2f6;
  box-sizing: border-box;
  overflow: hidden;
  white-space: nowrap;
}
.smr-gantt-canvas {
  position: relative;
}
.smr-grid-line {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 1px;
  background: #eef2f6;
  pointer-events: none;
}
.smr-today {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 2px;
  background: #2563eb;
  z-index: 2;
  pointer-events: none;
}
.smr-links {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  overflow: visible;
}
.smr-links path {
  fill: none;
  stroke: #64748b;
  stroke-width: 1;
}
.smr-links path.is-critical {
  stroke: #dc2626;
  stroke-width: 1.6;
}
.smr-bar.is-critical {
  background: #ef4444;
  box-shadow: inset 0 0 0 1px rgba(127, 29, 29, 0.35);
}
.smr-bar.is-critical.is-done {
  background: #f87171;
}
.smr-bar.is-critical.is-group {
  background: #b91c1c;
}
.smr-task-search {
  width: 160px;
  min-width: 120px;
  font: inherit;
  font-size: 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 5px 8px;
}
.smr-const-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.smr-const-cell select,
.smr-const-cell input {
  width: 100%;
  min-width: 0;
}
.smr-delay-box {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 14px 12px;
  margin: 0 0 12px;
}
.smr-delay-box h3 {
  margin: 0 0 8px;
  font-size: 14px;
}
.smr-delay-box ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.smr-delay-box li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 4px 0;
  border-bottom: 1px solid #eef2f6;
  font-size: 13px;
}
.smr-delay-box li:last-child {
  border-bottom: 0;
}
#smr-save-btn[hidden] {
  display: none !important;
}
.smr-gantt-row {
  position: absolute;
  left: 0;
  right: 0;
  border-bottom: 1px solid #f1f5f9;
}
.smr-gantt-row.is-selected {
  background: rgba(37, 99, 235, 0.06);
}
.smr-bar-base {
  position: absolute;
  top: 16px;
  height: 6px;
  border-radius: 2px;
  background: repeating-linear-gradient(
    90deg,
    #334155,
    #334155 3px,
    #64748b 3px,
    #64748b 7px
  );
  box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.35);
  z-index: 1;
}
.smr-bar {
  position: absolute;
  top: 3px;
  height: 12px;
  border-radius: 3px;
  background: #60a5fa;
  overflow: hidden;
  cursor: default;
  box-shadow: inset 0 0 0 1px rgba(29, 78, 216, 0.18);
  z-index: 2;
}
.smr-bar.is-group {
  background: #1d4ed8;
  overflow: visible;
}
.smr-bar.is-progress .smr-bar-fill {
  background: repeating-linear-gradient(
    -55deg,
    #22c55e,
    #22c55e 4px,
    #4ade80 4px,
    #4ade80 8px
  );
}
.smr-bar.is-done {
  background: #86efac;
}
.smr-bar-fill {
  display: block;
  height: 100%;
  background: #22c55e;
}
.smr-bar-handle {
  position: absolute;
  top: 0;
  right: 0;
  width: 8px;
  height: 100%;
  cursor: ew-resize;
  background: transparent;
}
.smr-bar-pct {
  position: absolute;
  top: 3px;
  font-size: 10px;
  font-weight: 700;
  color: #334155;
  white-space: nowrap;
  pointer-events: none;
}
.smr-empty-row {
  text-align: center;
  color: var(--muted);
}
body.smr-readonly #smr-edit-btn,
#smr.smr-readonly #smr-edit-btn {
  display: none;
}

#smr.smr-view-chess .smr-gantt-only,
#smr.smr-view-print .smr-gantt-only,
#smr.smr-view-report .smr-gantt-only {
  display: none !important;
}
#smr:not(.smr-view-chess) .smr-chess-only {
  display: none !important;
}
#smr:not(.smr-view-print) .smr-print-only {
  display: none !important;
}
#smr:not(.smr-view-report) .smr-report-only {
  display: none !important;
}
.smr-report {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  height: 100%;
  background: #fff;
}
.smr-report-wrap {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  max-height: none;
  overflow: auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.smr-report-table {
  min-width: 980px;
}
.smr-report-only .smr-toolbar-right {
  display: flex;
  align-items: center;
  gap: 8px;
}
#smr.smr-view-report .smr-board {
  background: #fff;
}
.smr-report-table tr.section-row .group-toggle {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.35);
  color: #f8fafc;
}
.smr-report-table tr.section-row .group-toggle:hover {
  background: rgba(255, 255, 255, 0.28);
  border-color: rgba(255, 255, 255, 0.55);
  color: #fff;
}
.smr-report-table tr.section-row.is-collapsed .group-toggle-icon {
  transform: rotate(-90deg);
}
.smr-report-table tr.section-row .section-cell {
  gap: 8px;
}
.smr-view-switch {
  flex: none;
}
.smr-chess-floor {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0 4px 0 0;
  font-size: 13px;
  color: #475569;
}
.smr-chess-floor input {
  width: 44px;
  height: 28px;
  padding: 0 4px;
  border: 1px solid var(--border);
  border-radius: 6px;
  text-align: center;
  font: inherit;
}
.smr-chess-floor input:disabled {
  background: #f8fafc;
  color: #94a3b8;
}
.smr-chess-hint {
  margin-left: 8px;
  font-size: 12px;
  color: #94a3b8;
}
.smr-chess-legend {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 8px;
  font-size: 12px;
  color: #64748b;
}
.smr-chess-legend i {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  border: 1px solid #e2e8f0;
}
.smr-chess-legend i.is-empty { background: #fff; }
.smr-chess-legend i.is-low { background: #fde68a; border-color: #f59e0b; }
.smr-chess-legend i.is-done { background: #86efac; border-color: #16a34a; }
.smr-chess {
  display: flex;
  flex-direction: row;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  height: 100%;
}
.smr-chess-nav {
  flex: none;
  width: 280px;
  min-width: 220px;
  max-width: 360px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  border-right: 1px solid var(--border);
  background: #f8fafc;
}
.smr-chess-nav-head {
  flex: none;
  padding: 8px;
  border-bottom: 1px solid var(--border);
}
.smr-chess-nav-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
}
.smr-chess-nav-search:focus-within {
  border-color: #bfdbfe;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.smr-chess-nav-search input {
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  font: inherit;
  font-size: 13px;
  color: var(--text);
}
.smr-chess-nav-search input::placeholder {
  color: #94a3b8;
}
.smr-chess-nav-list {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 6px;
}
.smr-chess-nav-group {
  position: sticky;
  top: 0;
  z-index: 1;
  margin: 6px 0 2px;
  padding: 6px 8px 4px;
  padding-left: calc(8px + var(--d, 0) * 12px);
  background: #f8fafc;
  font-size: 11px;
  font-weight: 700;
  color: #64748b;
  letter-spacing: 0.01em;
}
.smr-chess-nav-item {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1px;
  width: 100%;
  margin: 0 0 2px;
  padding: 6px 8px;
  padding-left: calc(8px + var(--d, 0) * 12px);
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #0f172a;
  font: inherit;
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}
.smr-chess-nav-item:hover {
  background: #eef2f7;
}
.smr-chess-nav-item.is-active {
  background: #dbeafe;
  color: #1e40af;
}
.smr-chess-nav-item.is-template {
  color: #1d4ed8;
  font-weight: 600;
  margin-bottom: 6px;
  background: #eff6ff;
}
.smr-chess-nav-item.is-template.is-active {
  background: #dbeafe;
}
.smr-chess-nav-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}
.smr-chess-nav-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.smr-chess-nav-pct {
  flex: none;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  color: #64748b;
}
.smr-chess-nav-item.is-active .smr-chess-nav-pct {
  color: #1d4ed8;
  font-weight: 700;
}
.smr-chess-nav-path {
  font-size: 11px;
  color: #94a3b8;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.smr-chess-nav-empty {
  padding: 12px 8px;
  font-size: 12px;
  color: #94a3b8;
}
.smr-chess-main {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.smr-chess-workbar {
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--border);
  background: #fff;
}
.smr-chess-workbar strong {
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
}
.smr-chess-workbar-path {
  font-size: 11px;
  color: #64748b;
}
.smr-chess.is-template .smr-chess-cell.is-empty {
  background: #f8fafc;
}
.smr-chess-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 8px;
  background: #fff;
}
.smr-chess-table {
  border-collapse: separate;
  border-spacing: 0;
  width: max-content;
  max-width: none;
  table-layout: auto;
  font-size: 11px;
}
.smr-chess-table th,
.smr-chess-table td {
  border: 1px solid #e2e8f0;
  text-align: center;
  white-space: nowrap;
}
.smr-chess-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  width: 40px;
  min-width: 40px;
  padding: 3px 4px;
  background: #1e293b;
  color: #f8fafc;
  font-weight: 600;
  font-size: 11px;
}
.smr-chess-table thead tr:nth-child(2) th {
  top: 22px;
  z-index: 3;
}
.smr-chess-table thead .smr-chess-sec-label {
  letter-spacing: 0.04em;
  text-transform: none;
  font-weight: 700;
}
.smr-chess-table tbody th,
.smr-chess-table tfoot th {
  position: sticky;
  left: 0;
  z-index: 2;
  width: 36px;
  min-width: 36px;
  max-width: 36px;
  padding: 1px 2px;
  background: #f1f5f9;
  color: #334155;
  font-weight: 700;
  font-size: 11px;
}
.smr-chess-table thead .smr-chess-corner {
  left: 0;
  top: 0;
  z-index: 5;
  width: 36px;
  min-width: 36px;
  max-width: 36px;
  padding: 2px;
  background: #1e293b;
  color: #f8fafc;
  vertical-align: middle;
  line-height: 1.1;
  white-space: normal;
}
.smr-chess-table thead .smr-chess-corner [data-smr-chess-avg-val] {
  display: block;
  font-size: 12px;
  font-weight: 800;
  color: #f8fafc;
}
.smr-chess-table tbody th {
  background: #f8fafc;
}
.smr-chess-table tfoot th,
.smr-chess-table tfoot td {
  font-weight: 700;
  background: #f8fafc;
}
.smr-chess-sec-del {
  margin-left: 2px;
  width: 18px;
  height: 18px;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  vertical-align: middle;
}
.smr-chess-sec-del:hover {
  background: #334155;
  color: #fecaca;
}
.smr-chess-cell {
  width: 40px;
  min-width: 40px;
  max-width: 40px;
  height: 22px;
  padding: 0;
  cursor: default;
}
.smr-chess-legend i.is-skip {
  background: repeating-linear-gradient(-45deg, #f8fafc, #f8fafc 3px, #cbd5e1 3px, #cbd5e1 6px);
}
.smr-chess-cell.is-empty { background: #fff; color: #cbd5e1; }
.smr-chess-cell.is-skip {
  background: repeating-linear-gradient(-45deg, #f8fafc, #f8fafc 5px, #e2e8f0 5px, #e2e8f0 10px);
  color: #94a3b8;
  font-size: 10px;
  cursor: pointer;
}
.smr-chess.is-template .smr-chess-cell {
  cursor: pointer;
}
.smr-chess-cell.is-low { background: #fef3c7; color: #92400e; }
.smr-chess-cell.is-mid { background: #dbeafe; color: #1d4ed8; }
.smr-chess-cell.is-done { background: #dcfce7; color: #166534; font-weight: 700; }
.smr-chess-table.is-selecting {
  user-select: none;
}
.smr-chess-cell.is-range {
  outline: 2px solid #2563eb;
  outline-offset: -2px;
  z-index: 1;
}
.smr-chess-cell.is-active {
  outline: 2px solid #1d4ed8;
  outline-offset: -2px;
  z-index: 2;
}
.smr-chess-pct {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: inherit;
  text-align: center;
}
.smr-chess-pct:focus {
  outline: 2px solid #1d4ed8;
  outline-offset: -2px;
  background: #fff;
  color: #0f172a;
}

.smr-print-hint {
  font-size: 12px;
  color: #64748b;
  line-height: 1.35;
  max-width: 640px;
}
.smr-print-legend-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-right: 10px;
  font-size: 12px;
  color: #475569;
  white-space: nowrap;
}
.smr-print-legend-inline i,
.smr-print-legend i {
  display: inline-block;
  width: 16px;
  height: 12px;
  border: 1px solid #111;
  vertical-align: middle;
  flex: none;
}
.smr-print-legend-inline i.is-done,
.smr-print-legend i.is-done,
.smr-print-cell.is-done {
  background: #00b050;
}
.smr-print-legend-inline i.is-part,
.smr-print-legend i.is-part,
.smr-print-cell.is-part {
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 10 10'%3E%3Cline x1='0' y1='10' x2='10' y2='0' stroke='%2300b050' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  background-size: 100% 100%;
  background-repeat: no-repeat;
}
.smr-print-legend-inline i.is-week-work,
.smr-print-legend i.is-week-work,
.smr-print-cell.is-week-work {
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 10 10'%3E%3Cline x1='0' y1='10' x2='10' y2='0' stroke='%235b9bd5' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  background-size: 100% 100%;
  background-repeat: no-repeat;
}
.smr-print-legend-inline i.is-week-done,
.smr-print-legend i.is-week-done,
.smr-print-cell.is-week-done {
  background: #7eb6ea;
}
.smr-print-legend-inline i.is-plan,
.smr-print-legend i.is-plan {
  background: #fff;
  outline: 2px solid #e10600;
  outline-offset: -2px;
}
.smr-print-form {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 12px 16px 24px;
  background: #e8edf3;
}
#smr.smr-view-print .smr-board {
  background: #e8edf3;
}
.smr-print-sheet {
  position: relative;
  background: #fff;
  border: 1px solid #cbd5e1;
  padding: 8px 10px 12px;
  margin: 0 auto 16px;
  max-width: 1580px;
  min-height: 1100px;
}
.smr-print-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin: 0 0 6px;
  font-size: 10px;
  color: #0f172a;
}
.smr-print-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.smr-print-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 5px 6px;
  align-items: start;
}
@media (min-width: 1200px) {
  .smr-print-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
.smr-print-card {
  min-width: 0;
  break-inside: avoid;
  page-break-inside: avoid;
}
.smr-print-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 6px;
  line-height: 1;
  color: #111;
}
.smr-print-table th,
.smr-print-table td {
  border: 1px solid #111;
  padding: 0;
  height: 7px;
  text-align: center;
  vertical-align: middle;
  font-weight: 600;
}
.smr-print-table thead .smr-print-title {
  height: 14px;
  background: #1e293b;
  color: #f8fafc;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: 0;
  white-space: nowrap;
  overflow: hidden;
  padding: 0 3px;
}
.smr-print-title-name,
.smr-print-title-pct {
  display: inline-block;
  vertical-align: middle;
  line-height: 14px;
}
.smr-print-title-name {
  max-width: calc(100% - 28px);
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
}
.smr-print-title-pct {
  float: right;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.smr-print-table tbody th,
.smr-print-table tfoot th {
  width: 12px;
  background: #fff;
  font-variant-numeric: tabular-nums;
  font-size: 6px;
}
.smr-print-table tfoot td {
  height: 9px;
  background: #fff;
  font-size: 6px;
}
.smr-print-cell {
  background: #fff;
}
.smr-print-cell.is-skip {
  background: #a6a6a6;
}
.smr-print-cell.is-empty {
  background: #fff;
}
.smr-print-cell.is-plan {
  position: relative;
  z-index: 2;
  --pt: 2px;
  --pr: 2px;
  --pb: 2px;
  --pl: 2px;
}
.smr-print-cell.is-plan::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-sizing: border-box;
  border-style: solid;
  border-color: #e10600;
  border-width: var(--pt) var(--pr) var(--pb) var(--pl);
}
.smr-print-cell[data-smr-print-plan-task] {
  cursor: pointer;
}
#smr.smr-editing .smr-print-cell[data-smr-print-plan-task]:hover {
  outline: 1px dashed #e10600;
  outline-offset: -1px;
}

@media print {
  @page {
    size: A3 landscape;
    margin: 6mm;
  }
  body:has(#smr.smr-view-print) .app-header,
  body:has(#smr.smr-view-print) .tabs,
  body:has(#smr.smr-view-print) .mobile-report-bar,
  body:has(#smr.smr-view-print) .report:not(#smr),
  body:has(#smr.smr-view-print) #smr .prod-sidebar,
  body:has(#smr.smr-view-print) #smr .smr-chrome,
  body:has(#smr.smr-view-print) #smr .smr-fact-panel,
  body:has(#smr.smr-view-print) #smr .report-status {
    display: none !important;
  }
  body:has(#smr.smr-view-print) #app-shell,
  body:has(#smr.smr-view-print) .content,
  body:has(#smr.smr-view-print) #smr,
  body:has(#smr.smr-view-print) #smr .smr-layout,
  body:has(#smr.smr-view-print) #smr .prod-main,
  body:has(#smr.smr-view-print) #smr .smr-work,
  body:has(#smr.smr-view-print) #smr .smr-board {
    display: block !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    position: static !important;
    background: #fff !important;
    box-shadow: none !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    width: 100% !important;
  }
  body:has(#smr.smr-view-print) .smr-print-form {
    background: #fff;
    padding: 0;
    overflow: visible;
  }
  body:has(#smr.smr-view-print) .smr-print-sheet {
    border: 0;
    max-width: none;
    min-height: 0;
    margin: 0;
    padding: 0;
    break-after: page;
    page-break-after: always;
  }
  body:has(#smr.smr-view-print) .smr-print-sheet:last-child {
    break-after: auto;
    page-break-after: auto;
  }
  body:has(#smr.smr-view-print) .smr-print-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 3px 4px;
  }
  body:has(#smr.smr-view-print) .smr-print-table th,
  body:has(#smr.smr-view-print) .smr-print-table td {
    height: 6.5px;
  }
  body:has(#smr.smr-view-print) .smr-print-table thead .smr-print-title {
    height: 13px;
    font-size: 7.5px;
    background: #1e293b;
    color: #f8fafc;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  body:has(#smr.smr-view-print) .smr-print-title-name,
  body:has(#smr.smr-view-print) .smr-print-title-pct {
    line-height: 13px;
  }
  body:has(#smr.smr-view-print) .smr-print-cell.is-part {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 100 100'%3E%3Cline x1='0' y1='100' x2='100' y2='0' stroke='%2300b050' stroke-width='3'/%3E%3C/svg%3E");
  }
  body:has(#smr.smr-view-print) .smr-print-cell.is-week-work {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 100 100'%3E%3Cline x1='0' y1='100' x2='100' y2='0' stroke='%235b9bd5' stroke-width='3'/%3E%3C/svg%3E");
  }
}

@media (max-width: 900px) {
  #smr .smr-layout {
    height: auto;
    min-height: calc(100dvh - 120px);
    grid-template-columns: 1fr;
  }
  #smr .prod-sidebar {
    display: flex;
    width: auto;
    max-width: none;
    min-width: 0;
    height: auto;
    max-height: 220px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
  .smr-chrome-top,
  .smr-toolbar {
    padding-left: 12px;
    padding-right: 12px;
  }
  .smr-split {
    flex-direction: column;
    min-height: 70dvh;
    max-width: 100%;
  }
  .smr-table-pane {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 1 1 auto;
    height: 42vh;
  }
  .smr-gantt-pane {
    height: 42vh;
    min-width: 0;
  }
  .smr-split.is-gantt-hidden .smr-table-pane {
    height: auto;
    min-height: 50vh;
  }
  .smr-chess {
    flex-direction: column;
  }
  .smr-chess-nav {
    width: auto;
    max-width: none;
    min-width: 0;
    max-height: 220px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
  .smr-work {
    position: relative;
  }
  .smr-fact-panel {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    z-index: 6;
    box-shadow: -8px 0 24px rgba(15, 23, 42, 0.12);
  }
}

#finance.report.active {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 0;
  overflow: hidden;
}
#finance .finance-layout {
  flex: 1 1 auto;
  height: calc(100vh - 114px);
  min-height: 0;
  margin: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
}
#finance .prod-sidebar {
  display: flex;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
#finance .finance-main {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding: 16px 20px 20px;
  background: #f8fafc;
}
.finance-chrome {
  flex: none;
}
.finance-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.finance-title-row .smr-title {
  margin: 0;
  flex: 1 1 auto;
}
.finance-year-switch {
  display: inline-flex;
  align-items: center;
  padding: 3px;
  background: #eef2f7;
  border-radius: 8px;
  gap: 2px;
}
.finance-year-switch button {
  border: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 6px;
  cursor: pointer;
}
.finance-year-switch button.is-active {
  background: #fff;
  color: var(--text);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
}
.finance-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-top: 10px;
}
.finance-seg {
  display: inline-flex;
  background: #eef2f7;
  border-radius: 8px;
  padding: 3px;
  gap: 2px;
}
.finance-seg button {
  border: 0;
  background: transparent;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  padding: 5px 9px;
  border-radius: 6px;
  cursor: pointer;
}
.finance-seg button.is-active {
  background: #fff;
  color: var(--text);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
}
.finance-check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  color: var(--muted);
  font-weight: 600;
}
.finance-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0 12px;
}
.finance-kpi {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px 14px;
}
.finance-kpi span {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 4px;
}
.finance-kpi b {
  font-size: 18px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.finance-kpi.is-ahead b { color: #16a34a; }
.finance-kpi.is-behind b { color: #dc2626; }
.finance-hint {
  margin: 0 0 10px;
  font-size: 13px;
  color: var(--muted);
}
.finance-table-wrap {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}
.finance-scroll {
  height: 100%;
  overflow: auto;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
}
.finance-table {
  border-collapse: separate;
  border-spacing: 0;
  width: max-content;
  min-width: 100%;
  font-size: 12.5px;
}
.finance-table th,
.finance-table td {
  border-bottom: 1px solid #e2e8f0;
  padding: 7px 10px;
  white-space: nowrap;
}
.finance-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #f8fafc;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #64748b;
}
.finance-table thead tr.finance-subhead th {
  top: 28px;
  font-size: 11px;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
}
.finance-table .finance-name {
  position: sticky;
  left: 0;
  z-index: 1;
  background: #fff;
  min-width: 240px;
  max-width: 360px;
  white-space: normal;
}
.finance-table thead .finance-name {
  z-index: 3;
  background: #f8fafc;
}
.finance-table tbody tr.is-group td {
  background: #f8fafc;
  font-weight: 600;
}
.finance-table tbody tr.is-group .finance-name {
  background: #f8fafc;
}
.finance-table tfoot td {
  font-weight: 700;
  background: #f1f5f9;
  position: sticky;
  bottom: 0;
}
.finance-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.finance-object-link {
  border: 0;
  background: transparent;
  color: #2563eb;
  font: inherit;
  cursor: pointer;
  padding: 0;
  text-align: left;
}
.finance-object-link:hover {
  text-decoration: underline;
}
.finance-empty,
.finance-empty-row {
  padding: 28px 16px;
  color: var(--muted);
  text-align: center;
}
.finance-cell-plan,
.finance-cell-prev {
  font-size: 11px;
  color: #64748b;
  font-weight: 500;
}
.finance-cell-prev {
  color: #94a3b8;
}
.finance-month {
  cursor: pointer;
  vertical-align: top;
}
.finance-month.is-hole { background: #fee2e2; }
.finance-month.is-behind { background: #fff7ed; }
.finance-month.is-ahead { background: #ecfdf5; }
.finance-month.is-ok { background: #f8fafc; }
.finance-month.is-locked b::after {
  content: "";
}
.finance-table tbody tr.is-over td:first-child {
  box-shadow: inset 3px 0 0 #dc2626;
}
.finance-table tbody tr.is-unallocated td {
  background: #fffbeb;
}
.finance-side-badge {
  margin-left: 6px;
  font-size: 10px;
  font-weight: 700;
  border-radius: 999px;
  padding: 1px 6px;
}
.finance-side-badge.is-behind { background: #fee2e2; color: #b91c1c; }
.finance-side-badge.is-ahead { background: #dcfce7; color: #15803d; }
.finance-curve {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 8px 12px 6px;
  margin-bottom: 10px;
}
.finance-curve-svg {
  display: block;
  width: 100%;
  height: 88px;
}
.finance-curve-legend {
  display: flex;
  gap: 14px;
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}
.finance-curve-legend .is-plan::before,
.finance-curve-legend .is-fact::before {
  content: "";
  display: inline-block;
  width: 10px;
  height: 2px;
  margin-right: 6px;
  vertical-align: middle;
  background: #94a3b8;
}
.finance-curve-legend .is-fact::before { background: #2563eb; }
.finance-meeting {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.finance-meet-col {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 12px;
  min-height: 72px;
}
.finance-meet-col h3 {
  margin: 0 0 6px;
  font-size: 12px;
  color: var(--muted);
  font-weight: 700;
}
.finance-meet-col p {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}
.finance-meet-item {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  border: 0;
  background: transparent;
  padding: 3px 0;
  font: inherit;
  font-size: 12.5px;
  color: #1e293b;
  cursor: pointer;
  text-align: left;
}
.finance-meet-item:hover { color: #2563eb; }
.finance-meet-item span { color: #b91c1c; font-weight: 700; font-variant-numeric: tabular-nums; }
#finance [data-role="finance-status"].is-error { color: #dc2626; }
.pto-row-hi td { background: #eff6ff; }
@media (max-width: 900px) {
  .finance-kpis,
  .finance-meeting {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

#pto.report.active {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 0;
  overflow: hidden;
}
#pto .pto-layout {
  flex: 1 1 auto;
  height: calc(100vh - 114px);
  min-height: 0;
  margin: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
}
#pto .prod-sidebar {
  display: flex;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
#pto .finance-main {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding: 16px 20px 20px;
  background: #f8fafc;
}
#pto .finance-table-wrap {
  min-width: 0;
}
#pto .finance-title-row {
  min-width: 0;
}
.pto-upload {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 12px;
}
.pto-upload-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}
.pto-upload-grid label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
  font-weight: 600;
}
.pto-upload-grid input,
.pto-upload-grid select {
  font: inherit;
  font-weight: 500;
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 8px;
  background: #fff;
}
.pto-file-field {
  grid-column: span 2;
}
.pto-count-badge {
  margin-left: 6px;
  font-size: 11px;
  color: #64748b;
  background: #eef2f7;
  border-radius: 999px;
  padding: 0 6px;
}
#pto [data-role="pto-status"].is-error {
  color: #dc2626;
}
.pto-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
  min-height: 0;
  flex: 1 1 auto;
}
.pto-split:has(#pto-preview:not([hidden])) {
  grid-template-columns: minmax(0, 1fr) minmax(280px, 42%);
}
.pto-preview {
  display: flex;
  flex-direction: column;
  min-width: 0;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
}
.pto-preview[hidden] {
  display: none;
}
.pto-preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.pto-preview-frame,
.pto-preview-img {
  flex: 1 1 auto;
  width: 100%;
  min-height: 360px;
  border: 0;
  background: #eef2f7;
}
.pto-drop {
  border: 1px dashed #cbd5e1;
  border-radius: 10px;
  padding: 14px;
  margin-bottom: 10px;
  background: #f8fafc;
  color: var(--muted);
  font-size: 13px;
  cursor: pointer;
}
.pto-drop.is-over {
  border-color: #2563eb;
  background: #eff6ff;
}
.pto-drop input[type="file"] {
  display: block;
  margin-top: 8px;
}
.pto-drop-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}
.pto-file-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #eef2f7;
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 12px;
}
.pto-file-chip button {
  border: 0;
  background: transparent;
  cursor: pointer;
}
.pto-dup-warn,
.pto-warn {
  color: #b45309;
  font-size: 12px;
  font-weight: 600;
  margin: 6px 0;
}
.pto-cell-plan {
  font-size: 11px;
  color: #64748b;
  font-weight: 500;
}
.pto-cell-hole {
  background: #fee2e2;
}
.pto-cell-dup {
  background: #fef3c7;
}
.pto-cell-ok {
  background: #ecfdf5;
}
.pto-over-limit td:first-child {
  box-shadow: inset 3px 0 0 #dc2626;
}
.pto-row-dup {
  background: #fffbeb;
}
.pto-row-rej {
  opacity: 0.72;
}
.pto-row-sla {
  background: #fef2f2;
}
.pto-edit-form {
  padding: 4px 0 8px;
}
.pto-limit-hint {
  font-size: 12px;
  color: #1e3a5f;
  margin: 8px 0 0;
}
.pto-replace {
  display: inline-block;
  font-size: 11px;
  color: #64748b;
  cursor: pointer;
}
.pto-replace input {
  display: block;
  width: 140px;
  margin-top: 2px;
}
.pto-actions-cell .btn {
  width: 100%;
  margin: 0 0 8px;
}
.finance-table.pto-table td.pto-status-cell,
.finance-table.pto-table td.pto-actions-cell,
.finance-table.pto-table td.pto-files,
.finance-table.pto-table td.pto-who {
  white-space: normal;
}
.finance-table.pto-docs-table {
  width: 100%;
  max-width: 100%;
  table-layout: fixed;
}
.pto-docs-table th,
.pto-docs-table td {
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: top;
  padding: 6px 8px;
}
.pto-docs-table td.pto-status-cell,
.pto-docs-table td.pto-actions-cell,
.pto-docs-table td.pto-files,
.pto-docs-table td.pto-col-type {
  white-space: normal;
  overflow: hidden;
  text-overflow: unset;
}
.pto-docs-table .finance-object-link {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  display: inline-block;
  vertical-align: bottom;
}
.pto-docs-table .pto-col-obj { width: 11%; }
.pto-docs-table .pto-col-type { width: 8%; }
.pto-docs-table .pto-col-period { width: 7%; }
.pto-docs-table .pto-col-no { width: 5%; }
.pto-docs-table .pto-col-sum { width: 7%; }
.pto-docs-table .pto-col-con { width: 9%; }
.pto-docs-table .pto-col-smr { width: 7%; }
.pto-docs-table .pto-files { width: 8%; }
.pto-docs-table .pto-col-who { width: 7%; }
.pto-docs-table .pto-col-when { width: 6%; }
.pto-docs-table .pto-status-cell { width: 14%; }
.pto-docs-table .pto-actions-cell { width: 11%; }
.pto-files-btn {
  width: 100%;
  max-width: 100%;
  padding: 5px 8px;
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pto-actions-stack {
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: stretch;
  min-width: 0;
}
.pto-docs-table .pto-actions-cell .btn,
.pto-docs-table .pto-del-btn,
.pto-docs-table .pto-zip-btn {
  width: 100%;
  display: block;
  box-sizing: border-box;
  margin: 0;
  padding: 5px 8px;
  font-size: 11px;
}
.pto-docs-table .pto-status-row {
  width: 100%;
  min-width: 0;
}
.pto-docs-table .pto-st {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pto-status-cell {
  min-width: 0;
  max-width: none;
}
.pto-files-card {
  width: min(960px, 96vw);
  padding: 0;
  max-height: min(88vh, 800px);
  height: min(88vh, 800px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.pto-files-card-body {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(0, 1.15fr);
  min-height: 0;
  flex: 1 1 auto;
}
.pto-files-modal-body {
  padding: 12px 16px 16px;
  overflow: auto;
  border-right: 1px solid var(--border);
}
.pto-files-preview {
  min-width: 0;
  min-height: 0;
  background: #eef2f7;
  display: flex;
  flex-direction: column;
  padding: 10px;
}
.pto-files-preview .pto-preview-frame,
.pto-files-preview .pto-preview-img {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  background: #fff;
  border-radius: 8px;
}
@media (max-width: 760px) {
  .pto-files-card-body {
    grid-template-columns: 1fr;
  }
  .pto-files-modal-body {
    border-right: 0;
    border-bottom: 1px solid var(--border);
    max-height: 42%;
  }
}
.pto-file-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid #e2e8f0;
}
.pto-file-meta {
  min-width: 0;
  flex: 1 1 auto;
}
.pto-file-kind {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  color: #1e3a5f;
  background: #eef2f7;
  border-radius: 999px;
  padding: 2px 8px;
  margin-bottom: 4px;
}
.pto-file-name {
  font-size: 13px;
  word-break: break-word;
}
.pto-file-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  flex: none;
}
.pto-file-replace {
  position: relative;
  overflow: hidden;
  margin: 0;
  cursor: pointer;
}
.pto-file-replace input {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  width: 100%;
  height: 100%;
}
.pto-files-modal-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 14px;
}
@media (max-width: 1400px) {
  .pto-docs-table .pto-col-smr {
    display: none;
  }
}
@media (max-width: 1180px) {
  .pto-docs-table .pto-col-who,
  .pto-docs-table .pto-col-when {
    display: none;
  }
}
.pto-status-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
}
.pto-st {
  font: inherit;
  font-size: 11px;
  border: 1px solid var(--border);
  background: #fff;
  border-radius: 999px;
  padding: 4px 6px;
  cursor: pointer;
  white-space: nowrap;
  text-align: center;
}
.pto-st.is-on {
  background: #1e3a5f;
  color: #fff;
  border-color: #1e3a5f;
}
.pto-actions-cell {
  min-width: 108px;
  vertical-align: top;
}
.pto-zip-btn {
  width: 100%;
  margin: 0 0 8px;
}
.pto-del-btn {
  display: block;
  width: 100%;
  border: 1px solid #fecaca;
  background: #fef2f2;
  color: #b91c1c;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  border-radius: 8px;
  padding: 6px 8px;
  cursor: pointer;
}
.pto-del-btn:hover {
  background: #fee2e2;
}
.pto-hist {
  margin-top: 8px;
  font-size: 11px;
  color: #64748b;
  white-space: normal;
}
.pto-legend {
  font-size: 12px;
  color: var(--muted);
  margin: 0 0 8px;
}
.pto-con-box {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 14px 12px;
  margin-bottom: 12px;
}
.pto-con-box summary {
  cursor: pointer;
  font-weight: 700;
  font-size: 14px;
}
.pto-con-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 8px;
  font-size: 13px;
}
.pto-con-table th,
.pto-con-table td {
  border-bottom: 1px solid #e2e8f0;
  padding: 6px 8px;
  text-align: left;
  vertical-align: middle;
}
.pto-con-name,
.pto-con-limit {
  width: 100%;
  font: inherit;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 6px 8px;
}
.pto-con-btns {
  display: flex;
  gap: 6px;
  white-space: nowrap;
}
.pto-con-btns .pto-del-btn {
  width: auto;
  margin: 0;
}
.pto-con-form-title {
  margin: 0 0 10px;
  font-size: 15px;
}
.pto-con-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.pto-con-notes {
  grid-column: 1 / -1;
}
.pto-con-notes textarea {
  font: inherit;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 8px;
  resize: vertical;
  min-height: 52px;
}
.pto-con-form-actions {
  display: flex;
  gap: 8px;
  margin-top: 4px;
}
.pto-con-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin: 0 0 10px;
}
.pto-con-search {
  flex: 1 1 240px;
  font: inherit;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 10px;
}
.finance-table.pto-table tr.is-active td {
  background: #eff6ff;
}
@media (max-width: 1100px) {
  .pto-con-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.pto-dl {
  border: 0;
  background: transparent;
  cursor: pointer;
  color: #2563eb;
}
.pto-files {
  font-size: 12px;
  line-height: 1.45;
}
@media (max-width: 1100px) {
  .pto-upload-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pto-file-field {
    grid-column: span 2;
  }
  .pto-split:has(#pto-preview:not([hidden])) {
    grid-template-columns: 1fr;
  }
}


