:root{--eis-color-bg:#0f1115;--eis-color-surface:#171a21;--eis-color-surface-raised:#1f2430;--eis-color-border:#2b313d;--eis-color-border-strong:#3a4150;--eis-color-text:#e6e9ef;--eis-color-text-muted:#9aa3b2;--eis-color-text-faint:#6b7280;--eis-color-primary:#4f7cff;--eis-color-primary-hover:#6a90ff;--eis-color-primary-text:#ffffff;--eis-color-danger:#e5484d;--eis-color-danger-hover:#f0666a;--eis-color-success-bg:#10311f;--eis-color-success-text:#4ade80;--eis-color-warning-bg:#3a2f12;--eis-color-warning-text:#facc15;--eis-color-neutral-bg:#262b36;--eis-color-neutral-text:#b6bdca;--eis-color-danger-bg:#3a1618;--eis-color-danger-banner-text:#ff9ea1;--eis-radius-sm:4px;--eis-radius-md:8px;--eis-radius-lg:12px;--eis-space-1:4px;--eis-space-2:8px;--eis-space-3:12px;--eis-space-4:16px;--eis-space-5:24px;--eis-space-6:32px;--eis-space-8:48px;--eis-font-sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--eis-font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--eis-text-xs:12px;--eis-text-sm:13px;--eis-text-md:14px;--eis-text-lg:16px;--eis-text-xl:20px;--eis-text-2xl:28px;--eis-shadow-md:0 4px 16px rgba(0,0,0,0.35)}body,html{margin:0;padding:0}body{background:var(--eis-color-bg);color:var(--eis-color-text);font-family:var(--eis-font-sans);font-size:var(--eis-text-md);line-height:1.5;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}.app-shell{height:100vh;overflow:hidden;display:flex;flex-direction:column}.app-topbar{display:flex;align-items:center;gap:var(--eis-space-3);padding:var(--eis-space-3) var(--eis-space-6);border-bottom:1px solid var(--eis-color-border);background:var(--eis-color-surface)}.app-brand{font-weight:700;font-size:var(--eis-text-lg);color:var(--eis-color-text);text-decoration:none}.app-brand span{color:var(--eis-color-text-faint);font-weight:500}.app-main{flex:1 1;width:100%;display:flex;min-height:0}.app-main-centered{max-width:1080px;margin:0 auto;padding:var(--eis-space-6);width:100%;overflow-y:auto}a{color:var(--eis-color-primary)}.stack{display:flex;flex-direction:column;gap:var(--eis-space-4)}.row{gap:var(--eis-space-3);flex-wrap:wrap}.row,.row-end{display:flex;align-items:center}.row-end{gap:var(--eis-space-2);justify-content:flex-end}.muted{color:var(--eis-color-text-muted)}.mono{font-family:var(--eis-font-mono),monospace;font-size:var(--eis-text-sm)}.detail-grid{display:grid;grid-template-columns:160px 1fr;grid-gap:var(--eis-space-3) var(--eis-space-4);gap:var(--eis-space-3) var(--eis-space-4)}.detail-grid dt{color:var(--eis-color-text-muted);font-size:var(--eis-text-sm)}.detail-grid dd{margin:0}.play-icon{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid}.status-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 var(--eis-space-2);border-radius:var(--eis-radius-sm);background:var(--eis-color-surface-raised);border:1px solid var(--eis-color-border);color:var(--eis-color-text);font-size:var(--eis-text-sm);font-weight:600}.rules-shell{display:flex;flex:1 1;min-height:0;width:100%}.rules-sidebar{display:flex;flex-direction:column;width:320px;flex-shrink:0;border-right:1px solid var(--eis-color-border);background:var(--eis-color-surface);min-height:0}.rules-sidebar-header{display:flex;flex-direction:column;gap:var(--eis-space-3);padding:var(--eis-space-4);border-bottom:1px solid var(--eis-color-border)}.rules-sidebar-title{display:flex;align-items:center;justify-content:space-between;gap:var(--eis-space-2)}.rules-sidebar-title h2{margin:0;font-size:var(--eis-text-lg)}.rules-sidebar-list{flex:1 1;overflow-y:auto;padding:var(--eis-space-3);display:flex;flex-direction:column;gap:var(--eis-space-2)}.rule-card{display:block;width:100%;text-align:left;padding:var(--eis-space-3);border:1px solid var(--eis-color-border);border-radius:var(--eis-radius-md);background:var(--eis-color-surface-raised);color:var(--eis-color-text);text-decoration:none;cursor:pointer;transition:border-color .12s ease,background .12s ease}.rule-card:hover{border-color:var(--eis-color-border-strong)}.rule-card.is-active{border-color:var(--eis-color-primary);background:color-mix(in srgb,var(--eis-color-primary) 14%,var(--eis-color-surface-raised))}.rule-card-name{display:flex;align-items:center;gap:var(--eis-space-2);font-weight:600;font-size:var(--eis-text-md)}.rule-card-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rule-card-sub{margin-top:var(--eis-space-2);display:flex;align-items:center;gap:var(--eis-space-2);color:var(--eis-color-text-muted);font-size:var(--eis-text-xs)}.rules-content{flex:1 1;min-width:0;min-height:0;overflow-y:auto;overflow-x:clip;padding:var(--eis-space-6)}.detail-split{display:flex;gap:var(--eis-space-5);align-items:stretch;height:100%}.detail-split-main{flex:1 1;min-width:0;min-height:0;overflow-y:auto}.detail-split-panel{position:relative;flex:0 0 auto;width:var(--panel-w,50%);min-width:0;height:calc(100% + var(--eis-space-6) + var(--eis-space-6));margin:calc(0px - var(--eis-space-6)) calc(0px - var(--eis-space-6)) calc(0px - var(--eis-space-6)) 0;background:var(--eis-color-surface-raised);border-left:1px solid var(--eis-color-border);animation:eis-panel-slide-in .24s ease-out}.detail-split-panel-scroll{height:100%;overflow-y:auto;padding:var(--eis-space-5)}.detail-split-resizer{position:absolute;top:0;bottom:0;left:0;width:14px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;cursor:col-resize;touch-action:none;z-index:1}.detail-split-resizer:before{content:"";width:3px;height:48px;border-radius:999px;background:var(--eis-color-border-strong);transition:background .12s ease,height .12s ease}.detail-split-resizer:hover:before{background:var(--eis-color-primary);height:72px}@keyframes eis-panel-slide-in{0%{transform:translateX(24px);opacity:0}to{transform:translateX(0);opacity:1}}@media (prefers-reduced-motion:reduce){.detail-split-panel{animation:none}}@media (max-width:1100px){.detail-split{flex-direction:column;height:auto}.detail-split-main,.detail-split-panel{flex:0 1 auto;width:100%;min-height:0;overflow-y:visible}.detail-split-panel{height:auto;margin:0;border-left:none;border-top:1px solid var(--eis-color-border)}.detail-split-panel-scroll{height:auto;overflow-y:visible}.detail-split-resizer{display:none}}.run-row{cursor:pointer}.run-row.is-active{background:color-mix(in srgb,var(--eis-color-primary) 16%,transparent)}.panel-dismiss{background:none;border:none;color:var(--eis-color-text-muted);cursor:pointer;font-size:var(--eis-text-lg);line-height:1;padding:var(--eis-space-1)}.panel-dismiss:hover{color:var(--eis-color-text)}.detail-close{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--eis-radius-md);border:1px solid var(--eis-color-border);background:var(--eis-color-surface-raised);color:var(--eis-color-text-muted);text-decoration:none;font-size:var(--eis-text-lg);line-height:1;transition:border-color .12s ease,color .12s ease,background .12s ease}.detail-close:hover{border-color:var(--eis-color-border-strong);color:var(--eis-color-text);background:var(--eis-color-surface)}.dashboard{display:flex;flex-direction:column;gap:var(--eis-space-5);max-width:1100px}.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:var(--eis-space-4);padding:var(--eis-space-5) var(--eis-space-6);border-radius:var(--eis-radius-lg);border:1px solid var(--eis-color-border);background:linear-gradient(135deg,color-mix(in srgb,var(--eis-color-primary) 22%,var(--eis-color-surface)),var(--eis-color-surface))}.dashboard-hero h1{margin:0 0 var(--eis-space-1);font-size:var(--eis-text-2xl)}.dashboard-hero p{margin:0}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--eis-space-4);gap:var(--eis-space-4)}@media (max-width:900px){.stat-grid{grid-template-columns:repeat(2,1fr)}}.stat-card{display:flex;flex-direction:column;gap:var(--eis-space-1);padding:var(--eis-space-4);border-radius:var(--eis-radius-lg);background:var(--eis-color-surface);border:1px solid var(--eis-color-border);border-top:3px solid var(--eis-color-border-strong)}.stat-card.tone-primary{border-top-color:var(--eis-color-primary)}.stat-card.tone-success{border-top-color:var(--eis-color-success-text)}.stat-card.tone-danger{border-top-color:var(--eis-color-danger)}.stat-card-label{color:var(--eis-color-text-muted);font-size:var(--eis-text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.stat-card-value{font-size:var(--eis-text-2xl);font-weight:700;line-height:1.1}.stat-card-sub{color:var(--eis-color-text-muted);font-size:var(--eis-text-xs)}.timeline-card{padding:var(--eis-space-5);border-radius:var(--eis-radius-lg);border:1px solid var(--eis-color-border);background:var(--eis-color-surface)}.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:var(--eis-space-3);flex-wrap:wrap;margin-bottom:var(--eis-space-5)}.timeline-head h2{margin:0;font-size:var(--eis-text-lg)}.timeline-legend{display:flex;gap:var(--eis-space-4)}.legend-item{display:inline-flex;align-items:center;gap:var(--eis-space-2);color:var(--eis-color-text-muted);font-size:var(--eis-text-xs)}.legend-swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.legend-swatch.is-succeeded,.timeline-seg.is-succeeded{background:var(--eis-color-success-text)}.legend-swatch.is-failed,.timeline-seg.is-failed{background:var(--eis-color-danger)}.legend-swatch.is-other,.timeline-seg.is-other{background:var(--eis-color-neutral-text)}.timeline-chart{display:flex;align-items:flex-end;gap:var(--eis-space-2);height:180px}.timeline-col{flex:1 1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:var(--eis-space-1);height:100%}.timeline-bar-track{flex:1 1;width:100%;display:flex;align-items:flex-end;justify-content:center}.timeline-bar{width:60%;max-width:28px;display:flex;flex-direction:column;justify-content:flex-end;border-radius:var(--eis-radius-sm);overflow:hidden;transition:height .2s ease}.timeline-seg{width:100%;min-height:2px}.timeline-count{font-size:var(--eis-text-xs);font-weight:600;color:var(--eis-color-text-muted);min-height:14px}.timeline-label{font-size:10px;color:var(--eis-color-text-faint);white-space:nowrap}