:root{--bg: #f6f7f9;--panel: #ffffff;--fg: #16181d;--muted: #6b7280;--line: #e5e7eb;--accent: #2563eb;--accent-fg: #ffffff;--ok: #15803d;--ok-bg: #dcfce7;--warn: #b45309;--warn-bg: #fef3c7;--bad: #b91c1c;--bad-bg: #fee2e2;--neutral-bg: #f1f5f9;--radius: 10px;--shadow: 0 1px 2px rgb(0 0 0 / .05), 0 1px 1px rgb(0 0 0 / .03);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0f1115;--panel: #171a21;--fg: #e5e7eb;--muted: #9ca3af;--line: #2a2f3a;--accent: #60a5fa;--accent-fg: #0b1220;--ok: #4ade80;--ok-bg: #14532d55;--warn: #fbbf24;--warn-bg: #78350f55;--bad: #f87171;--bad-bg: #7f1d1d55;--neutral-bg: #1f2430}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}h1,h2,h3,h4{margin:0;font-weight:600}.muted{color:var(--muted)}.small{font-size:12px}.mono{font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all;white-space:pre-wrap;margin:0}.spacer{flex:1}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,.tip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}button.danger{color:var(--bad)}button.plain{border:0;background:none;padding:0}button[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}input,select{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 10px}input[type=number]{width:70px}.app{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--panel);border-right:1px solid var(--line);padding:16px 10px;position:sticky;top:0;height:100vh;overflow:visible;z-index:30}.brand{font-weight:700;padding:0 8px 14px}.brand span{display:block;font-weight:400;font-size:12px;color:var(--muted)}.sidebar nav{display:grid;gap:2px}.sidebar nav a{display:block;padding:7px 10px;border-radius:8px;color:var(--fg);text-decoration:none}.sidebar nav a:hover{background:var(--neutral-bg)}.sidebar nav a.on{background:var(--accent);color:var(--accent-fg)}.main{min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;padding:12px 24px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:5}.page{padding:20px 24px 80px;display:grid;grid-template-columns:minmax(0,1fr);gap:20px}.panel{overflow-x:auto}.page-head p{margin:4px 0 0;color:var(--muted)}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.login input,.login select{min-width:0;flex:1}.sidebar{position:static;height:auto;padding:12px 16px 8px}.brand{padding:0 0 8px}.sidebar nav{grid-auto-flow:column;overflow-x:auto}.sidebar nav a{white-space:nowrap}.topbar{flex-wrap:wrap;position:static}.topbar .page-head{flex-basis:100%}.login,.session{margin-left:0;flex:1}.topbar,.page,.log{padding-left:16px;padding-right:16px}.grid{grid-template-columns:1fr}.segmented{flex-wrap:wrap}.popover{right:auto;left:0}}.tip{position:relative;display:block}.tip:after{content:attr(data-tip);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);width:max-content;max-width:260px;padding:6px 9px;border-radius:6px;font-size:12px;line-height:1.4;background:var(--fg);color:var(--bg);opacity:0;pointer-events:none;transition:opacity .12s;z-index:100}.tip:hover:after,.tip:focus-visible:after,.tip:focus-within:after{opacity:1}@media(max-width:760px){.tip:after{display:none}}.banner{background:var(--warn-bg);border:1px solid var(--warn);color:var(--fg);border-radius:var(--radius);padding:10px 14px}.login{position:relative;flex-wrap:wrap}.login-error{flex-basis:100%;margin:0;color:var(--bad);font-size:12px;max-width:420px}.login{display:flex;gap:8px;margin-left:auto}.session{position:relative;margin-left:auto}.pill{display:flex;align-items:center;gap:8px;border-radius:999px;padding:6px 14px;position:relative;overflow:hidden}.pill .dot{width:8px;height:8px;border-radius:50%;background:var(--ok)}.pill.warn .dot{background:var(--warn)}.pill.bad .dot{background:var(--bad)}.pill .bar{position:absolute;left:0;right:0;bottom:0;height:2px}.pill .bar span{display:block;height:100%;background:var(--ok);transition:width .25s linear}.pill.warn .bar span{background:var(--warn)}.pill.bad .bar span{background:var(--bad)}.popover{position:absolute;right:0;top:calc(100% + 8px);width:min(420px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 10px 30px #00000026;padding:14px;display:grid;gap:10px}.popover dl{display:grid;grid-template-columns:110px 1fr;gap:6px 10px;margin:0;align-items:center}.popover dt{color:var(--muted)}.popover dd{margin:0}.actions{display:flex;flex-wrap:wrap;gap:6px}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.segmented button{border:0;border-radius:0;padding:5px 10px}.segmented button.on{background:var(--accent);color:var(--accent-fg)}.section-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.scenarios{display:grid;gap:12px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;display:grid;gap:8px;align-content:start;border-left:3px solid var(--line)}.card.pass{border-left-color:var(--ok)}.card.fail{border-left-color:var(--bad)}.card.running{border-left-color:var(--accent)}.card header{display:flex;align-items:start;gap:8px}.card h4{font-size:14px;flex:1}.card p{margin:0}.expected span,.howto span{display:block;color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.howto{font-size:13px}.needs{font-size:12px;color:var(--warn);background:var(--warn-bg);border-radius:6px;padding:4px 8px}.actual{background:var(--neutral-bg);border-radius:6px;padding:6px 8px}.card footer{display:flex;gap:6px;flex-wrap:wrap}.badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--neutral-bg);color:var(--muted);white-space:nowrap}.badge.pass{background:var(--ok-bg);color:var(--ok)}.badge.fail{background:var(--bad-bg);color:var(--bad)}.badge.running{background:var(--warn-bg);color:var(--warn)}.preview{display:flex;flex-wrap:wrap;gap:8px}.tile{margin:0;width:120px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--neutral-bg)}.tile.bad{border-color:var(--bad)}.tile.wide,.tile.full,.command.full{width:100%}.tile img{display:block;width:100%;height:84px;object-fit:cover}.tile .empty{height:84px;display:grid;place-items:center;font:600 22px ui-monospace,monospace;color:var(--bad);background:var(--bad-bg)}.tile video{display:block;width:100%;max-height:200px;background:#000}.tile audio{display:block;width:100%}.tile iframe{display:block;width:100%;height:200px;border:0;background:#fff}.tile pre{max-height:140px;overflow:auto;padding:6px}.tile figcaption{font-size:11px;line-height:1.35;padding:4px 6px;background:var(--panel)}.command{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--neutral-bg);border:1px dashed var(--line);border-radius:8px;padding:6px 8px}.command code{flex:1;font:12px ui-monospace,monospace;word-break:break-all}.filelink{display:inline-block;padding:6px 10px;border:1px dashed var(--line);border-radius:6px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:grid;gap:12px;box-shadow:var(--shadow)}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}th{font-size:12px;color:var(--muted);font-weight:600}td.actual{background:none;font:12px ui-monospace,monospace;word-break:break-all}.pass{color:var(--ok)}.fail{color:var(--bad)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.gallery figure{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.gallery figure.bad{border-color:var(--bad)}.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--neutral-bg)}.gallery figcaption{font:11px/1.4 ui-monospace,monospace;padding:4px 6px;display:flex;gap:6px;flex-wrap:wrap}.stats{display:flex;gap:14px}.stats b{font-size:18px;display:block}.videos{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.videos video{width:100%;border-radius:8px;background:#000}.segments{max-height:160px;overflow:auto;font-size:11px}.thread{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.msg{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;display:grid;gap:6px}.msg img,.msg video{width:100%;border-radius:6px}.log{position:sticky;bottom:0;margin-top:auto;background:var(--panel);border-top:1px solid var(--line);padding:8px 24px}.log .section-head .muted{margin-left:8px;font-family:ui-monospace,monospace}.log pre{max-height:240px;overflow:auto;margin-top:8px}
