.customer-pass-flow-panel {
  flex: 0 0 auto;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 14px;
  padding: 14px 18px 16px;
  border: 1px solid #dbe5f1;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(30, 64, 175, .07);
  overflow-x: auto;
}

/* Current-node dialog theme. Kept in the small flow stylesheet so local
   releases do not depend on rebuilding the large customer base stylesheet. */
.customer-railway-step-form>header{
  border-bottom-color:color-mix(in srgb,var(--step-color,#2563eb) 28%,#e4e9f1);
  background:color-mix(in srgb,var(--step-color,#2563eb) 8%,white);
}
.customer-railway-step-fields input:focus,
.customer-railway-step-file input:focus,
.customer-railway-step-note textarea:focus{
  border-color:var(--step-color,#2563eb);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--step-color,#2563eb) 16%,transparent);
  outline:0;
}
.customer-railway-step-form #customerRailwayStepSubmit{
  background:var(--step-color,#2563eb);
  border-color:var(--step-color,#2563eb);
}
.customer-railway-step-actions{display:flex;justify-content:flex-end;gap:10px}
.customer-railway-step-actions button{min-height:42px}
.pass-history-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.pass-history-head strong{color:#26364e}.pass-history-head span{color:#8a97a9;font-size:11px}
.customer-railway-step-history ol{margin:0;padding:0;list-style:none}.customer-railway-step-history li{position:relative;display:grid;grid-template-columns:25px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:39px;padding:5px 0}.customer-railway-step-history li:not(:last-child)::after{position:absolute;top:31px;bottom:-8px;left:12px;width:2px;background:#dce4ef;content:""}.customer-railway-step-history li>i{position:relative;z-index:1;display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:var(--history-color,#2563eb);color:#fff;font-size:10px;font-style:normal;font-weight:800}.customer-railway-step-history li>div{display:grid;min-width:0}.customer-railway-step-history li>div strong{color:#34445b;font-size:12px}.customer-railway-step-history li>div span{overflow:hidden;color:#8794a7;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.customer-railway-step-history li>div small{margin-top:2px;color:#66758a;font-size:11px}.customer-railway-step-history li>button{min-height:27px;padding:3px 9px;border:1px solid color-mix(in srgb,var(--step-color,#2563eb) 32%,#dce4ef);border-radius:7px;background:#fff;color:var(--step-color,#2563eb);font-size:11px;font-weight:700;text-decoration:none;cursor:pointer}
.customer-pass-flow-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.customer-pass-flow-heading > div { display: flex; align-items: baseline; gap: 12px; min-width: 0; }
.customer-pass-flow-heading strong { color: #172b4d; font-size: 15px; white-space: nowrap; }
.customer-pass-flow-heading span { color: #64748b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.customer-pass-flow-heading em { flex: none; padding: 5px 10px; border-radius: 999px; font-style: normal; font-weight: 700; }
.customer-pass-flow-heading em.is-submitter { color: #2563eb; background: #eaf2ff; }
.customer-pass-flow-heading em.is-shop { color: #b96900; background: #fff0d9; }
.shared-pass-progress-track {
  display: grid;
  grid-template-columns: repeat(var(--pass-node-count, 10), minmax(86px, 1fr));
  min-width: calc(var(--pass-node-count, 10) * 94px);
  align-items: start;
}
.shared-pass-progress-node { position: relative; text-align: center; color: #94a3b8; }
.shared-pass-progress-node::before {
  content: ""; position: absolute; z-index: 0; top: 15px; left: -50%; width: 100%; height: 3px; background: #dbe3ec;
}
.shared-pass-progress-node:first-child::before { display: none; }
.shared-pass-progress-node.is-done::before,
.shared-pass-progress-node.is-completed::before,
.shared-pass-progress-node.is-current::before { background: var(--pass-node-color, var(--node-color, #2563eb)); }
.shared-pass-progress-dot {
  position: relative; z-index: 1; display: grid; place-items: center; width: 31px; height: 31px; margin: 0 auto 6px;
  border: 3px solid #d5dee8; border-radius: 50%; background: #fff; color: #8492a6; font-weight: 800;
}
.shared-pass-progress-node.is-done .shared-pass-progress-dot,
.shared-pass-progress-node.is-completed .shared-pass-progress-dot,
.shared-pass-progress-node.is-current .shared-pass-progress-dot {
  z-index: 8;
  border-color: var(--pass-node-color, var(--node-color, #2563eb));
  background: var(--pass-node-color, var(--node-color, #2563eb));
  color: #fff;
}
.shared-pass-progress-node.is-current .shared-pass-progress-dot { box-shadow: 0 0 0 5px color-mix(in srgb, var(--pass-node-color, var(--node-color, #2563eb)) 13%, transparent); }
.shared-pass-progress-node strong, .shared-pass-progress-node small { display: block; line-height: 1.3; }
.shared-pass-progress-node strong { color: #526277; font-size: 13px; }
.shared-pass-progress-node.is-current strong { color: var(--pass-node-color, var(--node-color, #2563eb)); }
.shared-pass-progress-node small { width: fit-content; margin: 4px auto 0; padding: 2px 7px; border: 1px solid #e1e7ef; border-radius: 999px; font-size: 11px; white-space: nowrap; }
.shared-pass-responsibility { display: flex; align-items: center; gap: 9px; margin: 0 0 13px; padding: 9px 11px; border: 1px solid #dce5f1; border-radius: 10px; background: #f8fafc; color: #526277; font-size: 12px; }
.shared-pass-responsibility strong { flex: none; padding: 3px 8px; border-radius: 999px; background: #e9eef5; color: #415168; }
.shared-pass-responsibility.is-mine { border-color: #9dd9c7; background: #ecfdf7; color: #08755d; }
.shared-pass-responsibility.is-mine strong { background: #0f9f82; color: #fff; }
.shared-pass-progress-node.is-clickable { cursor: pointer; border-radius: 9px; outline: none; }
.shared-pass-progress-node.is-clickable:hover, .shared-pass-progress-node.is-clickable:focus-visible { background: color-mix(in srgb, var(--pass-node-color) 8%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--pass-node-color) 18%, transparent); }
.shared-pass-node-action { position: absolute; z-index: 7; bottom: 62px; left: 50%; display: block; transform: translateX(-50%); }
.shared-pass-pending-button { position: relative; border: 0; border-radius: 999px; padding: 7px 15px; background: var(--pass-node-color, var(--node-color, #0f9f82)); box-shadow: 0 7px 18px color-mix(in srgb, var(--pass-node-color, var(--node-color, #0f9f82)) 34%, transparent); color: #fff; font-size: 12px; font-weight: 800; white-space: nowrap; cursor: pointer; animation: customer-pass-pending-float 1.6s ease-in-out infinite; }
.shared-pass-pending-button::after { position: absolute; bottom: -6px; left: 50%; width: 0; height: 0; border-top: 7px solid var(--pass-node-color, var(--node-color, #0f9f82)); border-right: 6px solid transparent; border-left: 6px solid transparent; content: ""; transform: translateX(-50%); }
.shared-pass-node-tip { position: absolute; bottom: 43px; left: 50%; display: none; width: 220px; padding: 9px 11px; border: 2px solid var(--pass-node-color, var(--node-color, #0f9f82)); border-radius: 10px; background: #fff; box-shadow: 0 12px 28px rgba(15,35,65,.2); color: #34445b; font-size: 11px; line-height: 1.5; text-align: left; transform: translateX(-50%); }
.shared-pass-node-action:hover .shared-pass-pending-button, .shared-pass-node-action:focus-within .shared-pass-pending-button { animation-play-state: paused; }
.shared-pass-node-action:hover .shared-pass-node-tip, .shared-pass-node-action:focus-within .shared-pass-node-tip { display: block; }
.shared-pass-preflight-action { display: flex; align-items: center; gap: 12px; margin: 0 0 15px; padding: 10px 12px; border: 1px solid #9dd9c7; border-radius: 11px; background: #ecfdf7; color: #526277; font-size: 12px; }
.shared-pass-preflight-action .shared-pass-pending-button { animation-name: customer-pass-pending-float-inline; }
.shared-pass-preflight-action .shared-pass-pending-button::after { display: none; }
@keyframes customer-pass-pending-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes customer-pass-pending-float-inline { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@media (prefers-reduced-motion: reduce) { .shared-pass-pending-button { animation: none; } }
.customer-railway-report-card.is-flow-selected { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: -2px; }
.customer-railway-report-card.is-shop-role.is-flow-selected { outline-color: rgba(234, 142, 21, .28); }
.customer-railway-management-table tbody tr.is-completed td{position:relative;background:#f1f3f5!important;color:#7d8795}.customer-railway-management-table tbody tr.is-completed strong,.customer-railway-management-table tbody tr.is-completed .customer-railway-report-money{color:#687382}.shared-pass-completed-stamp{display:inline-flex;margin-left:7px;padding:2px 7px;transform:rotate(-6deg);border:2px solid #d92d20;border-radius:4px;color:#d92d20;background:rgba(255,255,255,.76);font-size:10px;font-weight:900;letter-spacing:1px;line-height:1.15;white-space:nowrap}.customer-railway-report-card.is-completed{position:relative;filter:grayscale(.82);background:#f1f3f5}.customer-railway-report-card.is-completed::after{position:absolute;z-index:3;top:22px;right:22px;padding:6px 12px;transform:rotate(-9deg);border:3px double #d92d20;border-radius:5px;color:#d92d20;background:rgba(255,255,255,.78);content:"已完成";font-size:15px;font-weight:900;letter-spacing:2px}
#customerRailwayReportList tr.is-flow-selected td { background: #f3f7ff; }
.customer-pass-flow-empty { padding: 12px; text-align: center; color: #8290a5; }
@media (max-width: 720px) {
  .customer-pass-flow-panel { margin-bottom: 10px; padding: 12px; border-radius: 12px; }
  .customer-pass-flow-heading { align-items: flex-start; margin-bottom: 10px; }
  .customer-pass-flow-heading > div { display: block; }
  .customer-pass-flow-heading span { display: block; margin-top: 3px; font-size: 12px; }
  .shared-pass-progress-track { grid-template-columns: repeat(var(--pass-node-count, 10), 76px); min-width: calc(var(--pass-node-count, 10) * 76px); }
  .shared-pass-progress-node strong { font-size: 12px; }
  .shared-pass-responsibility { align-items: flex-start; font-size: 11px; }
}
.shared-pass-selection-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 10px;padding:0 2px;color:#24344d}
.shared-pass-selection-title>div{display:flex;align-items:baseline;min-width:0;gap:10px}
.shared-pass-selection-title strong{flex:none;font-size:14px;line-height:1.3}
.shared-pass-selection-title span{overflow:hidden;color:#66758b;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.shared-pass-selection-title em{flex:none;padding:4px 9px;border:1px solid #d7e0ed;border-radius:999px;color:#6f7d91;background:#f7f9fc;font-size:10px;font-style:normal;font-weight:700}
.shared-pass-progress-head{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:8px 11px;border-radius:8px;color:#41526b;background:#f5f8fc}
.shared-pass-progress-head strong{padding:3px 8px;border-radius:999px;color:#fff;background:linear-gradient(135deg,#2563eb,#0f9f9a);font-size:11px}
.shared-pass-progress-head span{font-size:11px;font-weight:700}
.shared-pass-progress-head small{margin-left:auto;color:#8995a7;font-size:10px}
#customerRailwayReportList tr[data-customer-pass-select]{cursor:pointer}
#customerRailwayReportList tr[data-customer-pass-select]:hover td{background:#f5f9ff}
@media(max-width:680px){.shared-pass-selection-title{align-items:flex-start}.shared-pass-selection-title>div{display:grid;gap:2px}.shared-pass-selection-title em{display:none}}
.customer-railway-report-card[data-customer-pass-select]{cursor:pointer}
.customer-railway-report-card[data-customer-pass-select]:hover,.customer-railway-report-card[data-customer-pass-select].is-flow-selected{box-shadow:0 0 0 2px rgba(37,99,235,.22),0 12px 28px rgba(30,64,175,.12)}
.customer-railway-report-card.is-completed::after{pointer-events:none}

/* Keep the actionable-node badge above the node dot instead of covering it. */
.shared-pass-progress-track:has(.shared-pass-node-action) {
  padding-top: 42px;
}

.shared-pass-node-action {
  top: -38px;
  bottom: auto;
}

/* Compact step dialog: nearby flow nodes plus history/evidence workspace. */
.customer-railway-step-dialog{width:min(920px,calc(100vw - 32px));max-height:88vh}.customer-railway-step-body{gap:12px;padding:16px 20px;max-height:calc(88vh - 76px)}
.customer-railway-step-workspace{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(360px,1.15fr);gap:12px}.customer-railway-step-history,.customer-railway-step-evidence{min-height:180px;padding:13px 14px;border:1px solid #e0e6ef;border-radius:11px;background:#fafbfd}.customer-railway-step-history ol{display:grid;gap:8px;margin:10px 0 0;padding:0;list-style:none}.customer-railway-step-history li{display:grid;grid-template-columns:26px 1fr;gap:9px}.customer-railway-step-history li i{display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:var(--history-color,#2563eb);color:#fff;font-size:11px;font-style:normal;font-weight:800}.customer-railway-step-history li div{display:grid;gap:2px}.customer-railway-step-history li strong{font-size:12px}.customer-railway-step-history li span,.customer-railway-step-history li small{color:#8794a8;font-size:10px}.customer-railway-step-evidence-head{display:flex;justify-content:space-between}.customer-railway-step-evidence-head span{color:#8794a8;font-size:11px}.customer-railway-step-evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.customer-railway-evidence-card{display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;gap:1px 8px;align-items:center;min-width:0;padding:8px;border:1px solid #dbe5f1;border-radius:9px;background:#fff;text-align:left;cursor:pointer}.customer-railway-evidence-card>span{grid-row:1/3;display:grid;width:34px;height:34px;place-items:center;border-radius:7px;background:#eef5ff;color:var(--step-color,#2563eb);font-size:9px;font-weight:900}.customer-railway-evidence-card strong,.customer-railway-evidence-card small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-railway-evidence-card strong{font-size:11px}.customer-railway-evidence-card small{color:#8794a8;font-size:9px}.customer-railway-evidence-card em{display:none}.customer-railway-evidence-empty{grid-column:1/-1;padding:15px;color:#9aa6b7;font-size:11px;text-align:center}.customer-railway-step-upload{display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;gap:1px 8px;align-items:center;margin-top:8px;padding:8px;border:1px dashed #9db5d8;border-radius:9px;background:#fff;cursor:pointer}.customer-railway-step-upload input{position:absolute;width:1px;height:1px;opacity:0}.customer-railway-step-upload b{grid-row:1/3;display:grid;width:34px;height:34px;place-items:center;border-radius:7px;background:var(--step-color,#2563eb);color:#fff}.customer-railway-step-upload strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.customer-railway-step-upload small{color:#8794a8;font-size:9px}.shared-pass-compact-meta{display:flex;justify-content:space-between;margin:5px 2px 0;color:#8794a8;font-size:10px}.shared-pass-progress-track.is-compact{max-width:650px;min-width:0;margin-right:auto;margin-left:auto;padding-top:35px}.customer-railway-step-dialog .shared-pass-progress-track.is-compact .shared-pass-node-action{top:-34px}
@media(max-width:720px){.customer-railway-step-workspace{grid-template-columns:1fr}.customer-railway-step-dialog{width:calc(100vw - 18px)}.customer-railway-step-evidence-grid{grid-template-columns:1fr}}
body.customer-portal #customer > #customerRailwayStepDialog.customer-railway-step-dialog{inline-size:50vw!important;width:50vw!important;min-width:0!important;max-width:50vw!important;max-height:88vh!important;overflow:hidden!important}
body.customer-portal #customer > #customerRailwayStepDialog.customer-railway-step-dialog>.customer-railway-step-form{height:100%!important;max-height:88vh!important;overflow:hidden!important}
body.customer-portal #customer > #customerRailwayStepDialog.customer-railway-step-dialog>.customer-railway-step-form>.customer-railway-step-body{min-height:0!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain!important}
.customer-railway-step-dialog .customer-railway-step-workspace{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){.customer-railway-step-dialog .customer-railway-step-workspace{grid-template-columns:1fr}}
@media(max-width:480px){body.customer-portal #customer > #customerRailwayStepDialog.customer-railway-step-dialog{inline-size:calc(100vw - 18px)!important;width:calc(100vw - 18px)!important;min-width:0!important;max-width:calc(100vw - 18px)!important}}
.customer-railway-evidence-card>span img{width:100%;height:100%;border-radius:inherit;object-fit:cover}
