:root { color-scheme: light dark; font-family: system-ui, sans-serif; } body { margin: 0; } header, main { max-width: 72rem; margin: auto; padding: 1rem; } header { border-bottom: 1px solid color-mix(in srgb, currentColor 20%, transparent); font-size: 1.2rem; font-weight: 700; } a { color: inherit; } .group { border: 1px solid color-mix(in srgb, currentColor 20%, transparent); border-radius: .5rem; margin: 1rem 0; padding: 1rem; } .group-heading { align-items: center; display: flex; gap: 1rem; justify-content: space-between; } .tasks, .history { list-style: none; padding: 0; } .tasks li { border-top: 1px solid color-mix(in srgb, currentColor 15%, transparent); display: grid; gap: 1rem; grid-template-columns: minmax(14rem, 1fr) minmax(0, 3fr); padding: .8rem 0; } .tasks h3, .tasks p { margin: .2rem 0; } .task-form { align-items: end; display: grid; gap: .75rem; grid-template-columns: repeat(5, minmax(0, 1fr)) auto; min-width: 0; } .task-input { margin: 0; min-width: 0; } .task-input label, .task-input fieldset label { display: block; } .task-input input, .task-input select { box-sizing: border-box; font: inherit; max-width: 100%; } .task-input input:not([type="checkbox"]), .task-input select { width: 100%; } .task-input fieldset { border: 0; margin: 0; padding: 0; } .input-error { color: #b00020; margin: .2rem 0; } .run-summary { font-size: .9rem; opacity: .75; } button { cursor: pointer; font: inherit; padding: .4rem .7rem; } .task-action { align-items: stretch; border-left: 1px solid color-mix(in srgb, currentColor 15%, transparent); display: flex; gap: .4rem; grid-column: -1; grid-row: 1; margin-left: .25rem; padding-left: .75rem; } .task-action select, .task-action button { margin: 0; white-space: nowrap; } .visually-hidden { height: 1px; margin: -1px; overflow: hidden; position: absolute; width: 1px; } button:disabled { cursor: wait; } .spinner { border: .15em solid currentColor; border-right-color: transparent; border-radius: 50%; display: none; height: .75em; margin-left: .35em; vertical-align: -.05em; width: .75em; } .is-waiting .spinner { animation: spin .7s linear infinite; display: inline-block; } .task-result { grid-column: 1 / -1; margin: .5rem 0 0; } .task-result.succeeded { color: #167c3a; } .task-result.failed { color: #b00020; } @keyframes spin { to { transform: rotate(360deg); } } @media (max-width: 58rem) { .tasks li { grid-template-columns: 1fr; } } @media (max-width: 42rem) { .task-form { grid-template-columns: minmax(0, 1fr) auto; } .task-action { grid-column: 2; } } dt { font-weight: 700; } dd { margin: 0 0 .5rem; } pre { background: color-mix(in srgb, currentColor 8%, transparent); max-height: 60vh; overflow: auto; padding: 1rem; white-space: pre-wrap; }