@layer modules {
  /* Screen list */
  .screen-list-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .8rem 1.6rem; margin: 0 0 1.2rem; }
  .screen-list .adders { margin: 0; }
  .screen-filters { display: flex; flex-wrap: wrap; gap: .4rem; }
  .screen-filter { display: inline-flex; align-items: center; gap: .5rem; height: 3rem; padding: 0 .5rem 0 1rem; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); color: var(--ink-2); font: inherit; font-size: 1.3rem; font-weight: 550; cursor: pointer; }
  .screen-filter .kind-icon { width: 1.4rem; height: 1.4rem; margin-left: -.2rem; }
  .screen-filter .count { min-width: 1.8rem; height: 1.8rem; font-size: 1.1rem; }
  .screen-filter:hover:not(:disabled, [aria-pressed="true"]) { border-color: var(--line-strong); color: var(--ink); }
  .screen-filter[aria-pressed="true"] { border-color: var(--inverse); background: var(--inverse); color: var(--on-inverse); }
  .screen-filter[aria-pressed="true"] .count { border-color: transparent; background: color-mix(in srgb, var(--on-inverse) 18%, transparent); color: inherit; }
  .screen-filter:disabled { opacity: .45; cursor: default; }
  /* The pane holds the chosen kind, so a redrawn list stays filtered. */
  [data-screen-filter="menu"] .screen:not([data-kind="menu"]), [data-screen-filter="input"] .screen:not([data-kind="input"]), [data-screen-filter="router"] .screen:not([data-kind="router"]), [data-screen-filter="end"] .screen:not([data-kind="end"]), [data-screen-filter="unknown"] .screen:not([data-kind="unknown"]) { display: none; }
  .screens { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; grid-template-columns: repeat(auto-fill, minmax(32rem, 1fr)); align-items: start; }
  .screen { position: relative; padding: 1.1rem 1.4rem 1.2rem 1.7rem; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--surface); overflow: hidden; }
  .screen::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--line-strong); }
  .screen.is-menu::before { background: var(--menu); }
  .screen.is-input::before { background: var(--input); }
  .screen.is-router::before { background: var(--router); }
  .screen.is-end::before { background: var(--end); }
  .screen.has-warning { border-color: var(--warning-line); }
  .screen.has-error { border-color: var(--error-line); background: var(--error-surface); }
  .screen:target { box-shadow: 0 0 0 2px var(--focus); }
  .screen-head { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
  .screen-name { display: inline-flex; align-items: center; gap: .6rem; text-decoration: none; }
  .screen-name strong { font-family: var(--mono); font-size: 1.4rem; font-weight: 600; }
  .screen-tools { margin-left: auto; display: flex; gap: .2rem; }
  .screen-text { margin: .5rem 0 0; font-family: var(--mono); font-size: 1.25rem; color: var(--ink-2); white-space: pre-line; }
  .screen .hint { margin: .4rem 0 0; }
  .edges { list-style: none; margin: .8rem 0 0; padding: 0; display: grid; gap: .2rem; font-size: 1.3rem; }
  .edges li { display: flex; gap: .6rem; align-items: baseline; }
  .edges li::before { content: "→"; color: var(--ink-3); }
  .edge-label { color: var(--ink-2); }
  .edges a, .edge-missing { font-family: var(--mono); font-size: 1.25rem; }
  .edge-missing { color: var(--error); }
}
