: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(0, 1fr) minmax(0, 1fr); padding: .8rem 0; } .tasks h3, .tasks p { margin: .2rem 0; } .task-form { align-items: end; display: grid; gap: .75rem; grid-template-columns: minmax(0, 1fr) auto; min-width: 0; } .task-options { display: grid; gap: .75rem; justify-items: start; min-width: 0; } .task-input { margin: 0; } .task-input label, .task-input fieldset { display: block; max-width: 100%; width: fit-content; } .task-input fieldset label { display: block; } .task-input input, .task-input select { box-sizing: border-box; font: inherit; max-width: 100%; } .task-input input[type="date"], .task-input input[type="datetime-local"], .task-input input[type="number"], .task-input select { field-sizing: content; } .task-input input[type="text"], .task-input input[type="password"] { width: min(15rem, 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 { justify-self: end; } .split-button { display: inline-flex; position: relative; } .split-button button, .task-action > button { margin: 0; white-space: nowrap; } .split-primary { border-bottom-right-radius: 0; border-top-right-radius: 0; } .split-menu summary { align-items: center; border: 1px solid currentColor; border-bottom-left-radius: 0; border-top-left-radius: 0; box-sizing: border-box; cursor: pointer; display: flex; height: 100%; justify-content: center; list-style: none; min-width: 2.25rem; } .split-menu summary::-webkit-details-marker { display: none; } .split-menu-options { background: Canvas; border: 1px solid currentColor; display: grid; gap: .2rem; min-width: max-content; padding: .25rem; position: absolute; right: 0; top: calc(100% + .25rem); z-index: 1; } .split-menu:not([open]) .split-menu-options { display: none; } .split-menu-options button { text-align: left; width: 100%; } .is-waiting .split-menu { opacity: .6; pointer-events: none; } .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: 1fr; } .task-action { justify-self: start; } } 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; }