/* ---------- state dock ---------- */
.dock{margin-top:26px;border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
.dockhead{padding:14px 16px 12px;border-bottom:1px solid var(--line)}
.dockhead h2{margin:0 0 5px;font-size:1.125rem;font-weight:600}
.dockhead p{margin:0;font-size:0.9375rem;color:var(--muted);max-width:70ch}
/* min(…,100%) lets a track shrink below its minimum when the container is narrower
   (320px reflow / 400% zoom); at 390px and up it changes nothing. */
.states{list-style:none;margin:0;padding:12px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(min(268px,100%),1fr))}
.statebtn{
  width:100%;text-align:left;appearance:none;font:inherit;cursor:pointer;
  border:1px solid var(--line);border-radius:5px;background:var(--surface);color:var(--ink);
  padding:10px 12px;display:flex;flex-direction:column;gap:4px;
}
@media (hover:hover){.statebtn:hover{border-color:var(--line-2);background:var(--surface-2)}}
.statebtn[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.statebtn .idx{font-family:"IBM Plex Mono",monospace;font-size:0.875rem;color:var(--muted);letter-spacing:.1em}
.statebtn .nm{font-size:0.9375rem;font-weight:600}
.statebtn .ds{font-size:0.875rem;color:var(--muted);line-height:1.45}

/* ---------- a11y console ---------- */
.console{margin-top:26px;border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
.conhead{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;justify-content:space-between}
.conhead h2{margin:0 0 5px;font-size:1.125rem;font-weight:600}
.conhead p{margin:0;font-size:0.9375rem;color:var(--muted);max-width:64ch}
.log{list-style:none;margin:0;padding:12px 16px;display:flex;flex-direction:column;gap:6px;max-height:250px;overflow-y:auto}
.log li{display:grid;grid-template-columns:70px 92px minmax(0,1fr);gap:12px;font-family:"IBM Plex Mono",monospace;font-size:0.875rem;align-items:baseline;padding-bottom:6px;border-bottom:1px solid var(--line)}
.log li:last-child{border-bottom:0}
.log .t{color:var(--muted)}
.log .k{letter-spacing:.06em;text-transform:uppercase;font-size:0.875rem}
.log .k.live{color:var(--ok)}
.log .k.focus{color:var(--accent)}
.log .k.state{color:var(--warn)}
.log .m{color:var(--ink-2);word-break:break-word}
.emptylog{padding:16px;font-size:0.9375rem;color:var(--muted)}

/* ---------- colophon ---------- */
.decisions{margin-top:26px}
.decisions h2{margin:0;font-size:1.125rem;font-weight:600}
.notes{margin-top:14px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(288px,100%),1fr))}
.note{border-top:2px solid var(--ink);padding-top:12px}
.note h3{margin:0 0 6px;font-size:0.9375rem;font-weight:600}
.note p{margin:0;font-size:0.9375rem;color:var(--ink-2);line-height:1.55}
/* The long testing note sits outside the grid, so it would otherwise run the full frame (~180ch).
   font-size matches its paragraph so the ch unit measures that text (children are sized in rem). */
.note-wide{margin-top:26px;font-size:0.9375rem;max-width:75ch}
.foot{margin-top:30px;padding-top:16px;border-top:1px solid var(--line);font-size:0.875rem;color:var(--muted);max-width:78ch}
