:root { color-scheme: light dark; --bg: var(--nugu-content-backdrop,#ededed); --panel: var(--nugu-ui-backdrop,#dbdbdb); --raised: var(--nugu-ui-backdrop,#dbdbdb); --line: var(--nugu-ui-unfocus,#6f6f6f); --text: var(--nugu-content-normal,#121212); --muted: var(--nugu-content-minor,#3b3b3b); --ok: var(--nugu-content-focus,#184e5b); --bad: var(--nugu-error,#bd172e); --run: var(--nugu-warning,#6e6c10); --accent: var(--nugu-ui-accent,#922792); --cyan: var(--nugu-info,#116477); --log-muted: #000; --sans: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif; --mono: ui-monospace,"Cascadia Code","JetBrains Mono",Menlo,Consolas,monospace; font-family: var(--sans); font-size: 14px; line-height: 1.55 } * { box-sizing: border-box } body { margin: 0; background: var(--bg); color: var(--text) } a { color: inherit } button,input,summary { font: inherit } button { color: inherit; background: transparent; border: 0; cursor: pointer } h1,h2,p,pre { margin: 0 } h1 { text-wrap: balance; font-size: clamp(30px,5vw,46px); letter-spacing: -.05em; line-height: 1.08; overflow-wrap: anywhere } h2 { font-size: 14px; letter-spacing: .1em; text-transform: uppercase } p { text-wrap: pretty } .shell { min-height: 100svh } .top { display: flex; align-items: center; gap: 1.6rem; max-width: 74rem; margin: auto; padding: 0 1.6rem; height: 68px; border-bottom: 1px solid var(--line); font-size: 12px } .top strong { letter-spacing: .14em; color: var(--accent) } .top a { min-height: 44px; display: flex; align-items: center; text-decoration: none; color: var(--muted) } .top a:hover,.repo-link:hover { color: var(--accent) } .top span { margin-left: auto; color: var(--muted); font-size: 10px; letter-spacing: .08em } .main { width: min(74rem,100%); margin: auto; padding: 1.6rem 1.6rem 3rem } .dashboard-intro { margin: .5rem 0 1.5rem } .dashboard-intro p,.repo-head p,.docs>p { margin-top: .7rem; color: var(--muted) } .failed,.skipped { color: var(--bad) } .success { color: var(--ok) } .running,.preparing,.queued { color: var(--run) } .muted,small { color: var(--muted) } .eyebrow { color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase } .metrics { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 12px; margin: 1.4rem 0 2rem } .metrics.clear { grid-template-columns: 1fr 1fr 2fr } .metrics.clear .metric.ok { grid-column: 3 } .metric { border: 1px solid var(--line); padding: 16px; background: color-mix(in srgb,var(--panel) 85%,transparent) } .metric strong { display: block; margin-top: 5px; font: clamp(28px,5vw,46px)/1 var(--mono) } .metric.bad { border-color: var(--bad); box-shadow: 5px 5px 0 var(--bad) } .metric.bad strong { color: var(--bad) } .metric.run strong { color: var(--run) } .metric.ok strong { color: var(--ok) } .filters { display: flex; gap: 8px; margin: 1rem 0 .5rem } .filters input { min-width: 0; flex: 1; background: var(--panel); color: var(--text); border: 1px solid var(--line); padding: .65rem .8rem; min-height: 44px } .control { border: 1px solid var(--line); padding: .65rem .8rem; min-height: 44px; display: flex; align-items: center; text-decoration: none; font-size: 12px; color: var(--muted) } section>h2 { margin: 2rem 0 .5rem } .run-row { display: grid; grid-template-columns: 78px minmax(130px,1fr) minmax(70px,max-content) minmax(56px,max-content) 120px; gap: 12px; align-items: start; padding: 13px 2px; border-top: 1px solid var(--line) } .run-row:last-child { border-bottom: 1px solid var(--line) } .state { font-weight: 800; font-size: 12px } .name { min-width: 0; text-decoration: none } .name b,.name small { display: block; overflow-wrap: anywhere } .name b { font-size: 15px } .name .subject { margin-top: 2px } .rowid,.sha { font: 12px var(--mono); color: var(--muted); white-space: nowrap } .sha { color: var(--accent) } .timing { font-variant-numeric: tabular-nums; color: var(--muted); text-align: right; font-size: 12px; white-space: nowrap } .warning,.callout { margin: 1rem 0; padding: .8rem 1rem; border-left: 3px solid var(--run); background: var(--panel); overflow-wrap: anywhere } .warning b { font-size: 11px; text-transform: uppercase; letter-spacing: .1em } .callout { border-color: var(--bad) } .callout b { display: block; color: var(--bad); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; margin-bottom: .2rem } .crumb { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; color: var(--muted); font-size: 12px; margin: 0 0 1rem } .crumb a { min-height: 36px; display: inline-flex; align-items: center } .repo-head { margin-bottom: 1.5rem } .run-head { padding: clamp(1.2rem,4vw,2.2rem) 0 1.5rem; border-bottom: 1px solid var(--line) } .run-head .eyebrow { margin-bottom: .5rem } .outcomes { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .6rem; font: 16px var(--mono) } .run-title { font-size: 18px; margin-top: .6rem } .run-title span { color: var(--muted) } .subject { margin-top: .6rem; color: var(--muted) } .run-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: .75rem; color: var(--muted); font: 12px var(--mono) } .run-layout { display: grid; grid-template-columns: minmax(0,1fr) 220px; gap: 46px; padding-top: 1.5rem } .run-primary { min-width: 0 } .failure { border-left: 3px solid var(--bad); padding-left: 18px } .execution { margin-bottom: 1.2rem } .execution-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px } .execution h2 { margin: .2rem 0; text-transform: none; letter-spacing: -.02em; font-size: 20px } .variant { font: 12px var(--mono); color: var(--cyan); margin: .25rem 0 } .evidence { margin-top: .8rem; background: var(--panel); border-radius: 4px; padding: 13px } .evidence .eyebrow { margin-bottom: .5rem; color: var(--bad) } pre { font: 12px/1.6 var(--mono); background: var(--bg); border: 1px solid var(--line); padding: 13px; white-space: pre-wrap; overflow-wrap: anywhere; max-width: 100% } .evidence pre { border: 0; padding: 0 } .log-mark { color: var(--accent) } .log-fail { color: var(--bad); font-weight: 600 } .log-dim { opacity: .58; color: var(--log-muted) } .output { border-left: 3px solid var(--ok); padding: 0 0 0 18px; margin-bottom: 1.5rem } .output .eyebrow { color: var(--ok); margin-bottom: .5rem } .execution-list { border-top: 1px solid var(--line); padding-top: 12px; margin-top: 1.5rem } .execution-list.passed { border-color: var(--line) } details { min-width: 0 } summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; gap: 9px; list-style: none } summary::-webkit-details-marker { display: none } summary::before { content: '›'; font-size: 20px; color: var(--muted) } details[open]>summary::before { content: '⌄' } details.execution { border-bottom: 1px solid var(--line); margin: 0 } .execution.compact summary { justify-content: flex-start } .execution.compact .timing { margin-left: auto } .compact-body { padding: 0 0 1rem 28px } .steps,.log,.kdl,.cli,.execution-config { border: 1px solid var(--line); margin: .8rem 0 } .steps[open]>summary,.log[open]>summary,.kdl[open]>summary,.cli[open]>summary,.execution-config[open]>summary { border-bottom: 1px solid var(--line) } .steps table { width: 100%; border-collapse: collapse } .steps th,.steps td { text-align: left; padding: .35rem .6rem; border-top: 1px solid var(--line); overflow-wrap: anywhere } .steps th { color: var(--muted); font-size: 10px; text-transform: uppercase } .steps .seconds { text-align: right; white-space: nowrap; color: var(--cyan) } .steps tr.failed td { color: var(--bad) } .undone { color: var(--run) } details.log pre { max-height: 60vh; overflow-y: auto } .config-panel,.command-panel { padding: 12px; background: var(--panel) } .config-panel p { margin: .35rem 0; overflow-wrap: anywhere } .config-panel b { display: block; color: var(--muted); font-size: 10px; letter-spacing: .1em; text-transform: uppercase } .config-panel code { font: 12px var(--mono); color: var(--cyan) } .config-panel pre { margin: .35rem 0 } .command-panel p { font-size: 11px; margin: .3rem 0 } .command-panel pre { margin: .6rem 0 } .command-panel button,.code-head button { min-height: 36px; color: var(--accent); font-size: 12px } .command-name { color: var(--accent) } .command-arg { color: var(--text) } .command-flag { color: var(--cyan) } .kdl { margin-top: 1.5rem } .codebox { margin: 0; border-top: 1px solid var(--line) } .code-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 12px; background: var(--panel); color: var(--muted); font: 11px var(--mono) } .codebox pre { margin: 0; border: 0; background: var(--panel) } .kdl-keyword { color: var(--accent) } .kdl-string { color: var(--cyan) } .kdl-comment { color: var(--muted) } aside { font-size: 12px } aside h2 { margin: 0 0 1rem } .facts>div { margin-bottom: 14px } .facts b { display: block; color: var(--muted); font-size: 10px; letter-spacing: .1em; text-transform: uppercase } .facts span { min-width: 0; overflow-wrap: anywhere } .facts .scalar { margin-top: 2px } .hint { font-size: 11px; color: var(--muted); margin-top: 1rem } .repo-link { display: inline-block; color: var(--accent); margin-top: 1rem } .scalar { position: relative; min-height: 24px; text-align: left; text-decoration: underline dotted var(--muted); text-underline-offset: 4px; touch-action: manipulation } .raw-tooltip { visibility: hidden; opacity: 0; position: absolute; z-index: 20; top: calc(100% + 7px); left: 0; min-width: 180px; max-width: min(310px,85vw); width: max-content; padding: 9px 11px; border: 1px solid var(--line); border-radius: 4px; background: var(--raised); color: var(--text); box-shadow: 0 6px 20px #0008; font: 11px/1.5 var(--mono); overflow-wrap: anywhere; text-decoration: none } .raw-tooltip small { display: block; margin-top: 4px; font: 10px/1.4 var(--sans) } .scalar:hover .raw-tooltip,.scalar:focus .raw-tooltip { visibility: visible; opacity: 1 } .scalar.tooltip-dismissed .raw-tooltip { visibility: hidden; opacity: 0 } .copy-fallback { position: sticky; bottom: 10px; z-index: 30; width: min(40rem,calc(100% - 2rem)); margin: auto; padding: 12px; background: var(--raised); border: 1px solid var(--line) } .copy-fallback input { display: block; width: 100%; margin-top: 6px; padding: 9px; background: var(--bg); color: var(--text); border: 1px solid var(--line); font: 12px var(--mono) } .copy-status:not(:empty) { position: fixed; bottom: 14px; left: 50%; transform: translateX(-50%); z-index: 31; max-width: min(38rem,calc(100% - 2rem)); padding: 9px 12px; background: var(--raised); border: 1px solid var(--line); border-radius: 4px; font-size: 12px; overflow-wrap: anywhere } footer { width: min(74rem,100%); margin: auto; padding: 1rem 1.6rem; border-top: 1px solid var(--line); font-size: 10px; color: var(--muted) } .docs { max-width: 48rem } .docs h1 { margin-bottom: 1rem } .docs-card { margin: 1.5rem 0; padding: 1rem; background: var(--panel); border: 1px solid var(--line) } .docs-card h2 { margin-bottom: .7rem } .docs-card p { margin-top: .8rem } @media (prefers-reduced-motion:no-preference) { .state.running { animation: pulse 1.6s ease-in-out infinite } } @keyframes pulse { 50% { opacity: .45 } } @media (max-width:700px) { .top { padding: 0 .9rem } .top span { display: none } .main { padding: 1.1rem .9rem 2.5rem } .metrics,.metrics.clear { grid-template-columns: 1fr 1fr } .metric.bad,.metrics.clear .metric.ok { grid-column: 1/-1 } .run-row { grid-template-columns: 68px minmax(0,1fr) auto; gap: 8px } .run-row .rowid { grid-column: 2 } .run-row .sha { grid-column: 3; grid-row: 2 } .run-row .timing { grid-column: 3; grid-row: 1 } .run-layout { grid-template-columns: 1fr; gap: 26px } .run-layout aside { border-top: 1px solid var(--line); padding-top: 18px } .facts { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px } .failure { padding-left: 12px } .code-head { flex-wrap: wrap } .raw-tooltip { position: fixed; top: 76px; left: 8px; right: 8px; bottom: auto; width: auto; max-width: none } footer { padding: 1rem .9rem } } @media (max-width:420px) { .facts { grid-template-columns: 1fr } .run-row { grid-template-columns: 62px minmax(0,1fr) auto } .run-row .sha { display: none } } [hidden] { display: none!important } @media (prefers-color-scheme:dark) { :root { --bg: var(--nugu-content-backdrop,#121212); --panel: var(--nugu-ui-backdrop,#242424); --raised: var(--nugu-ui-backdrop,#242424); --line: var(--nugu-ui-unfocus,#6f6f6f); --text: var(--nugu-content-normal,#ededed); --muted: var(--nugu-content-minor,#8b8b8b); --ok: var(--nugu-content-focus,#7ba1aa); --bad: var(--nugu-error,#ec6376); --run: var(--nugu-warning,#f0ee69); --accent: var(--nugu-ui-accent,#d86dd8); --cyan: var(--nugu-info,#3ec5e3); --log-muted: #fff } } button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,.run-row:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px }