
  .tl { display: flex; flex-direction: column; gap: var(--cds-gap-xl); font-family: var(--font-anthropic-sans); max-width: 78rem; margin-inline: auto; }
  .tl-head { display: flex; flex-direction: column; gap: var(--cds-gap-sm); }
  .tl-title { font-family: var(--font-anthropic-serif); font-weight: 400; font-size: var(--cds-font-size-title); margin: 0; text-wrap: balance; }
  .tl-lede { margin: 0; max-width: 62ch; color: var(--color-fg); font-size: var(--cds-font-size-body); line-height: 1.55; }
  .tl .tl-lede b, .tl .tl-text b, .tl .tl-note b, .tl .tl-tile-sub b { font-weight: 600; font-variant-numeric: tabular-nums; }
  .tl .tl-tile-value b { font-weight: 400; }
  .tl-muted { color: var(--color-fg-muted); }
  .tl-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10.5rem), 1fr)); gap: var(--cds-gap-md); }
  .tl-tile { background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-md) var(--cds-pad-lg); display: flex; flex-direction: column; gap: var(--cds-gap-xs); min-width: 0; }
  .tl-tile-label { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); letter-spacing: .02em; }
  .tl-tile-value { font-family: var(--font-anthropic-serif); font-weight: 400; font-size: var(--cds-font-size-title); font-variant-numeric: tabular-nums; line-height: 1.1; }
  .tl-tile .tl-tile-sub { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
  .tl-section { display: flex; flex-direction: column; gap: var(--cds-gap-md); }
  .tl-h2 { font-size: var(--cds-font-size-heading); font-weight: var(--cds-font-weight-medium); margin: 0; }
  .tl-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); gap: var(--cds-gap-md); }
  .tl-card { background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-lg); display: flex; flex-direction: column; gap: var(--cds-gap-sm); min-width: 0; }
  .tl-card-title { font-size: var(--cds-font-size-heading); font-weight: var(--cds-font-weight-medium); margin: 0; }
  .tl-note { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); margin: 0; line-height: 1.5; max-width: 75ch; }
  .tl-text { margin: 0; max-width: 68ch; line-height: 1.55; }
  .tl-chart { position: relative; width: 100%; min-width: 0; }
  .tl-map { min-height: 260px; }
  .tl-gantt { min-height: 250px; }
  .tl-bars { min-height: 200px; }
  .tl-legend { display: flex; flex-wrap: wrap; gap: var(--cds-gap-xs) var(--cds-gap-md); font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); list-style: none; margin: 0; padding: 0; }
  .tl-legend li { display: inline-flex; align-items: center; gap: .4rem; }
  .tl-sw { display: inline-block; width: .7rem; height: .7rem; border-radius: 2px; background: var(--cds-chart-muted); }
  .tl-sw-dot { border-radius: 50%; }
  .tl-tip { position: absolute; pointer-events: none; background: var(--cds-surface-popover); border: 1px solid var(--cds-border); border-radius: var(--cds-radius); box-shadow: var(--cds-shadow-popover); padding: var(--cds-pad-xs) var(--cds-pad-sm); font-size: var(--cds-font-size-caption); max-width: 18rem; line-height: 1.45; z-index: 2; }
  .tl-tip-k { color: var(--cds-text-secondary); }
  .tl-table-wrap { overflow: auto; max-height: 34rem; border-top: 1px solid var(--color-border-line); }
  .tl-table { border-collapse: collapse; width: 100%; font-size: var(--cds-font-size-caption); font-variant-numeric: tabular-nums; }
  .tl-table th { position: sticky; top: 0; background: var(--color-panel); text-align: left; font-weight: var(--cds-font-weight-medium); color: var(--color-fg-muted); padding: var(--cds-pad-xs) var(--cds-pad-sm); border-bottom: 1px solid var(--color-border-line); white-space: nowrap; z-index: 1; }
  .tl-table td { padding: var(--cds-pad-xs) var(--cds-pad-sm); border-bottom: 1px solid var(--color-border-line); vertical-align: top; }
  .tl-table .num { text-align: right; white-space: nowrap; }
  .tl-table .wide { min-width: 16rem; }
  .tl-table .mid { min-width: 9rem; }
  .tl-pill { display: inline-block; padding: 0 .45rem; border-radius: 999px; border: 1px solid var(--color-border-line); white-space: nowrap; }
  .tl-pill.good { color: var(--color-ok); }
  .tl-pill.warn { color: var(--color-warn); }
  .tl-pill.bad { color: var(--color-bad); }
  .tl-chart svg text { fill: var(--color-fg-muted); font-family: var(--font-anthropic-sans); }
  .tl-chart svg text:not([font-size]) { font-size: 11px; }
  .tl-chart svg .lbl-strong { fill: var(--color-fg); }
  [data-dash-source-state=empty] { color: transparent; }
  [data-dash-source-state=refreshing] { opacity: .5; transition: opacity var(--cds-dur-slow); }
  .tl-fail { display: flex; align-items: center; justify-content: center; gap: .4rem; min-height: inherit; color: var(--color-fg-muted); font-size: var(--cds-font-size-caption); }
  .tl-fail::before { content: ""; width: .375rem; height: .375rem; border-radius: 50%; background: var(--color-bad); }

  .tl-tab:focus-visible { outline: 2px solid var(--color-fg); outline-offset: 2px; border-radius: var(--cds-radius); }
  .tl-page { display: flex; flex-direction: column; gap: var(--cds-gap-xl); }
  .tl-train-fig { margin: 0; display: flex; flex-direction: column; gap: var(--cds-gap-xs); }
  .tl-train { display: block; max-width: 100%; height: auto; }
  .tl-speedchart { min-height: 210px; }
  .tl-strip { min-height: 150px; }
  @media (prefers-reduced-motion: no-preference) {
    .tl-train-car { animation: tl-glide 1.4s var(--cds-ease-out) both; }
    .tl-speed line { animation: tl-streak 1.4s var(--cds-ease-out) both; }
    @keyframes tl-glide { from { transform: translateX(70px); } to { transform: translateX(0); } }
    @keyframes tl-streak { from { transform: translateX(-60px); opacity: .2; } to { transform: translateX(0); opacity: 1; } }
  }

  .tl-tabhint { margin: 0; font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); letter-spacing: .02em; }
  .tl-tabs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11.5rem), 1fr)); gap: var(--cds-gap-sm); position: sticky; top: env(safe-area-inset-top, 0px); z-index: 6; background: var(--color-bg); padding-block: var(--cds-pad-sm); border-bottom: 0; }
  .tl-tab { display: flex; align-items: center; gap: .75rem; text-align: left; font: inherit; color: var(--color-fg); background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: var(--cds-pad-md) var(--cds-pad-lg); cursor: pointer; margin: 0; box-shadow: 0 1px 0 var(--color-border-line); transition: border-color var(--cds-dur-slow), transform var(--cds-dur-slow); }
  .tl-tab:hover:not([aria-selected="true"]) { border-color: var(--color-fg-muted); transform: translateY(-1px); }
  .tl-tab[aria-selected="true"] { background: var(--color-fg); color: var(--color-bg); border-color: var(--color-fg); font-weight: inherit; }
  .tl-tab-ico { width: 30px; height: 30px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
  .tl-tab-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .tl-tab-name { font-size: var(--cds-font-size-heading); font-weight: var(--cds-font-weight-medium); }
  .tl-tab-sub { font-size: var(--cds-font-size-caption); opacity: .78; }
  .tl .tl-tab-sub b { font-weight: 600; }
  .tl-next { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--cds-gap-sm); border-top: 1px solid var(--color-border-line); padding-block: var(--cds-pad-md); }
  .tl-nextbtn { font: inherit; font-size: var(--cds-font-size-heading); color: var(--color-bg); background: var(--color-fg); border: 0; border-radius: var(--cds-radius); padding: var(--cds-pad-sm) var(--cds-pad-lg); cursor: pointer; }
  .tl-btn { font: inherit; font-size: var(--cds-font-size-caption); color: var(--color-fg); background: var(--color-panel); border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); padding: 3px 10px; cursor: pointer; min-width: 2rem; }
  .tl-btn:hover { border-color: var(--color-fg-muted); }
  .tl-btn:focus-visible, .tl-nextbtn:focus-visible, .tl-thumb:focus-visible { outline: 2px solid var(--color-fg); outline-offset: 2px; }
  .tl-mapctl { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cds-gap-xs) var(--cds-gap-sm); }
  .tl-check { display: inline-flex; align-items: center; gap: .3rem; font-size: var(--cds-font-size-caption); }
  .tl-hint { font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); }
  .tl-mapgrid { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr); gap: var(--cds-gap-md); align-items: start; }
  .tl-mapgrid-even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  @media (max-width: 52rem) { .tl-mapgrid, .tl-mapgrid-even { grid-template-columns: minmax(0, 1fr); } }
  .tl-map { border: 1px solid var(--color-border-line); border-radius: var(--cds-radius); overflow: hidden; }
  .tl-mapsvg { display: block; cursor: grab; touch-action: pan-y; }
  .tl-mapsvg:active { cursor: grabbing; }
  .tl-viewer-wrap { display: flex; flex-direction: column; gap: var(--cds-gap-xs); min-width: 0; }
  .tl-viewer { min-height: 240px; }
  .tl-view { margin: 0; display: flex; flex-direction: column; gap: var(--cds-gap-xs); }
  .tl-view img { width: 100%; max-height: 26rem; object-fit: contain; border-radius: var(--cds-radius); background: var(--color-bg); }
  .tl-view figcaption { font-size: var(--cds-font-size-caption); display: flex; flex-direction: column; gap: 2px; line-height: 1.45; }
  .tl-view-k { color: var(--color-fg-muted); }
    .tl-viewer-nav { display: flex; justify-content: space-between; gap: var(--cds-gap-xs); }
  .tl-photostrip { display: flex; gap: var(--cds-gap-xs); overflow-x: auto; padding-block: var(--cds-pad-xs); min-height: 96px; scroll-snap-type: x proximity; }
  .tl-photostrip-wrap { flex-wrap: wrap; overflow-x: visible; align-content: flex-start; }
  .tl-thumb { flex: 0 0 auto; width: 92px; padding: 0; margin: 0; border: 2px solid transparent; border-radius: var(--cds-radius); background: none; cursor: pointer; display: flex; flex-direction: column; gap: 2px; font: inherit; font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); scroll-snap-align: start; }
  .tl-thumb img { width: 100%; height: 66px; object-fit: cover; border-radius: calc(var(--cds-radius) - 2px); display: block; }
  .tl-thumb:hover { border-color: var(--color-border-line); }
  .tl-thumb.on { border-color: var(--color-fg); color: var(--color-fg); }
  .tl-strip-day { flex: 0 0 auto; align-self: stretch; display: flex; align-items: center; padding-inline: var(--cds-pad-xs); font-size: var(--cds-font-size-caption); color: var(--color-fg-muted); border-left: 1px solid var(--color-border-line); writing-mode: vertical-rl; transform: rotate(180deg); }
  .tl-tip-img { display: block; width: 200px; max-width: 100%; height: auto; border-radius: 4px; margin-bottom: 4px; }
  .tl-photo-pin.tl-pin-on rect { fill: var(--color-bad); }
  .tl-hide-photos .tl-photo-layer { display: none; }
  .tl-chart svg .tl-pin-count { fill: var(--color-fg); font-weight: 600; paint-order: stroke; stroke: var(--color-panel); stroke-width: 3px; }
  .tl-chart svg .tl-halo { paint-order: stroke; stroke: var(--color-panel); stroke-width: 3px; stroke-linejoin: round; }
  .tl-linked { cursor: default; }
  .tl-linked:hover td { background: color-mix(in srgb, var(--color-fg) 7%, transparent); }
  .tl-sw-park { background: color-mix(in srgb, #3f9b5a 35%, transparent); }
  .tl-sw-water { background: color-mix(in srgb, #3d8bd9 45%, transparent); }
  .tl-sw-rail { background: none; border-top: 2px solid color-mix(in srgb, var(--color-fg-muted) 45%, transparent); height: 0; border-radius: 0; }
  .tl-sw-cam { background: var(--color-fg); }
