.journey-window.swimlane-window {
  width:calc(100vw - 40px);
  height:calc(100vh - 40px);
  max-width:none;
  max-height:none;
  margin:20px;
  padding:0;
  border:1px solid #59728d;
  border-radius:14px;
  overflow:hidden;
  color:#e6eef8;
  background:#101a27;
  font-size:12px;
  line-height:1.4;
  box-shadow:0 22px 90px #02070dcc;
}
.journey-window.swimlane-window[open] { display:flex; flex-direction:column; }
.journey-window::backdrop { background:#020710b8; backdrop-filter:blur(3px); }
.journey-window * { box-sizing:border-box; }
.journey-window button { font:inherit; cursor:pointer; }
.journey-window-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:12px 18px;
  flex-shrink:0;
  background:#19293c;
  border-bottom:1px solid #34475c;
}
.journey-window-header small { font-size:9px; letter-spacing:1.3px; color:#9fb7ce; }
.journey-window h2 { margin:2px 0 1px; font-size:18px; font-weight:600; }
.journey-project-name { color:#b7c9dc; font-size:11px; }
.journey-close { width:32px; height:32px; border-radius:8px; background:#263b51; color:#d6e7f4; padding:0; font-size:22px!important; }
.swim-toolbar { display:flex; gap:20px; align-items:center; flex-wrap:wrap; padding:10px 18px; border-bottom:1px solid #35475b; flex-shrink:0; }
.swim-toolbar label { display:grid; gap:5px; grid-template-columns:1fr auto; min-width:120px; color:#b3c6d9; font-size:10px; }
.swim-toolbar select { grid-column:1 / -1; padding:6px 8px; font-size:11px; }
.swim-toolbar input { width:150px; grid-column:1 / -1; padding:0; height:14px; margin:0; accent-color:#b3ccf2; }
.swim-toolbar output { font-variant-numeric:tabular-nums; color:#d0e1f4; }
.journey-catalog { margin-left:auto; background:none; border:0; color:#a7c9ee; padding:5px; }
.swim-viewport { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; scrollbar-color:#4c6680 #0e1927; background:#0c1420; }
.swim-board { position:relative; width:max-content; min-width:100%; isolation:isolate; --swim-column-width:500px; --swim-lane-height:340px; }
.swim-row { display:grid; grid-template-columns:220px repeat(var(--swim-columns),var(--swim-column-width)); }
.swim-column-headings { position:sticky; top:0; height:66px; z-index:8; }
.swim-sticky { position:sticky; left:0; z-index:6; background:#162538; border-right:1px solid #506981; }
.swim-corner { padding:16px 20px; line-height:1.7; color:#adc2d8; background:#203348; font-size:11px; }
.swim-phase-heading { display:grid; grid-template-columns:32px 1fr; grid-template-rows:1fr 1fr; gap:0 10px; text-align:left; padding:10px 18px; border:0; border-top:3px solid var(--swim-phase-color,#83aabe); border-right:1px solid #384d63; border-bottom:1px solid #42566a; border-radius:0; background:var(--swim-phase-fill,#23333d); }
.swim-phase-heading > span { display:grid; align-items:center; grid-row:1 / 3; color:var(--swim-phase-color,#83aabe); font-size:18px; font-weight:600; }
.swim-phase-heading strong { align-self:end; font-size:12px; color:#e4edf7; }
.swim-phase-heading small { color:#bacadc; font-size:10px; }
.swim-phase-heading:disabled { opacity:1; cursor:default; }
.swim-lane { height:var(--swim-lane-height); }
.swim-lane-label { display:flex; flex-direction:column; gap:14px; padding:18px 16px; box-shadow:8px 0 15px #02071250; }
.swim-lane-label label { display:grid; gap:8px; }
.swim-lane-label label small { color:#88a6c6; letter-spacing:1.2px; font-size:10px; }
.swim-lane-label select { width:100%; padding:8px; font-size:12px; }
.swim-lane-label p { margin:0; color:#aabfd4; font-size:11px; }
.swim-lane-label > small { line-height:1.6; color:#88a1bb; max-width:170px; font-size:10px; }
.swim-lane-swatch { display:block; width:32px; height:3px; border-radius:3px; }
.swim-cell { position:relative; min-width:0; padding:12px 38px 12px 14px; display:flex; flex-direction:column; border-right:1px solid #344459; border-bottom:1px solid #33455b; background:color-mix(in srgb,var(--swim-phase-fill,#20333d) 35%,#101a27); }
.swim-entity-anchor { display:flex; gap:10px; align-items:center; flex-shrink:0; min-height:50px; padding:9px 12px; background:#21354b; border:1px solid var(--swim-phase-color,#83aabe); border-radius:8px; color:#e3effb; }
.swim-entity-anchor small { display:block; margin-top:2px; color:#96b2cd; font-size:9px; }
.swim-entity-anchor.is-unused { border-color:#45576a; background:#172638; opacity:.8; }
.swim-entity-symbol { color:var(--swim-phase-color,#83aabe); font-size:23px; }
.swim-cell-body { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; padding:8px 6px 8px 0; scrollbar-width:thin; scrollbar-color:#4b6580 transparent; }
.swim-action { border:1px solid #3b526c; border-radius:7px; margin:7px 0 10px; background:#162639; overflow:hidden; }
.swim-action > button { display:flex; width:100%; gap:8px; text-align:left; padding:9px 10px 4px; border:0; background:transparent; align-items:baseline; }
.swim-action > button small { font-size:9px; color:#8eacca; }
.swim-action > button strong { font-size:11px; flex:1; font-weight:500; line-height:1.5; }
.swim-action > button > span { color:#a9c8ec; }
.swim-action > p { margin:0; padding:2px 10px 8px 30px; color:#93aec9; font-size:9px; }
.swim-steps { margin:0; padding:7px 10px; border-top:1px solid #31475d; list-style:none; font-size:10px; background:#101e2d; }
.swim-steps li { display:flex; gap:8px; padding:5px 0; color:#b9ccde; }
.swim-steps li > span:first-child { flex-shrink:0; color:#7290b0; width:12px; }
.swim-steps li.is-done { color:#8dcbb8; }
.swim-reference { margin:9px 0; padding:8px 10px; border:1px dashed #7f8fa1; border-radius:6px; background:#172433; color:#c4d3e3; font-size:10px; }
.swim-reference small { display:block; font-size:8px; letter-spacing:.6px; color:#8da5bc; margin-bottom:3px; }
.swim-signals h4 { margin:12px 0 6px; color:#90aaca; font-size:9px; letter-spacing:.7px; font-weight:500; text-transform:uppercase; }
.swim-signal { display:flex; gap:8px; width:100%; align-items:center; margin:5px 0; padding:7px 8px; text-align:left; background:#122131; border:1px solid #344d65; border-radius:6px; font-size:10px!important; }
.swim-signal small { display:block; color:#92aac0; font-size:8px; margin-top:3px; }
.swim-signal-number { display:grid; place-items:center; flex-shrink:0; width:23px; height:23px; border:1px solid #6686a5; border-radius:50%; color:#c1d8ee; font-size:9px; }
.swim-signal[aria-pressed=true] { background:#294965; border-color:#b7d5f6; }
.swim-muted { margin:12px 5px; color:#879fb8; font-size:11px; line-height:1.6; }
.swim-link-corridor { height:96px; background:repeating-linear-gradient(0deg,#0a1320 0,#0a1320 13px,#142032 14px); border-bottom:1px solid #2b4159; }
.swim-links { position:absolute; inset:0; display:block; overflow:visible; z-index:3; pointer-events:none; }
.swim-route { opacity:.46; }
.swim-route.is-selected { opacity:1; }
.swim-route-line { fill:none; stroke:var(--route-color); stroke-width:1.2px; stroke-linecap:round; stroke-linejoin:round; }
.swim-route.is-selected .swim-route-line { stroke-width:2.5px; filter:drop-shadow(0 0 3px #8bb3ff65); }
.swim-route-hit { fill:none; stroke:transparent; stroke-width:9px; pointer-events:stroke; cursor:pointer; }
.swim-route-number { pointer-events:all; cursor:pointer; }
.swim-route-number circle { fill:#102438; stroke:var(--route-color); stroke-width:1px; }
.swim-route-number text { fill:#dfedfa; font:9px 'Segoe UI',sans-serif; }
.swim-footer { flex-shrink:0; background:#19293c; border-top:1px solid #3a536b; padding:11px 18px 8px; }
.swim-footer > p { color:#8ea7c1; font-size:9px; margin:7px 0 0; }
.swim-selection-empty { display:flex; flex-wrap:wrap; gap:6px 14px; color:#a9bfd5; font-size:11px; }
.swim-selection-empty strong { color:#d8e7f6; font-weight:500; }
.swim-selected-signal { display:grid; grid-template-columns:minmax(220px,1fr) minmax(200px,1fr) auto; gap:20px; align-items:center; font-size:11px; }
.swim-selected-signal small { display:block; font-size:8px; color:#8eabc7; letter-spacing:.6px; }
.swim-selected-signal strong { display:block; margin:3px 0; color:#e3edf7; font-size:12px; font-weight:600; }
.swim-selected-signal p { margin:2px 0 0; font-size:10px; color:#c0d3e7; }
.swim-selected-signal b { color:#e3c18a; }
.swim-selected-signal > div:nth-child(2) { display:grid; grid-template-columns:60px 1fr; gap:4px; }
.swim-selected-signal button { background:#263f58; padding:8px 11px; border:1px solid #55758f; border-radius:7px; color:#d2e8fc; }
.swim-empty { width:min(700px,80vw); padding:80px 40px; color:#a7bed6; font-size:14px; line-height:1.8; }
@media(max-width:800px) {
  .journey-window.swimlane-window { width:calc(100vw - 16px); height:calc(100vh - 16px); margin:8px; }
  .swim-toolbar { gap:10px 14px; padding:8px 12px; }
  .swim-toolbar input { width:120px; }
  .journey-window-header { padding:10px 12px; }
  .journey-window h2 { font-size:15px; }
  .swim-selected-signal { grid-template-columns:1fr auto; gap:12px; }
  .swim-selected-signal > div:nth-child(2) { display:none; }
  .swim-footer { padding:9px 12px; }
}
.swim-clipped-port rect { fill:#1c344c; stroke:#afc9e5; stroke-width:1px; }
.swim-clipped-port text { fill:#d4e6f7; font:9px "Segoe UI",sans-serif; }
.swim-cell { min-height:0; height:100%; overflow:hidden; }
.swim-lane-label { min-height:0; height:100%; overflow:auto; }
