@font-face{font-family:Azo Sans;src:url(/assets/AzoSans-Regular-DaSPc-_M.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Azo Sans;src:url(/assets/AzoSans-Medium-RjdL7tyS.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Azo Sans;src:url(/assets/AzoSans-Bold-DRdOVlB3.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--font-sans: "Azo Sans", Arial, Helvetica, sans-serif;--bg: #f8f8f8;--surface: #ffffff;--surface-sunken: #fdfdfd;--border: #e6e6e6;--border-strong: #d5d5d5;--text: #1f2122;--text-weak: #414346;--text-soft: #6d6d6d;--accent: #336aff;--accent-hover: #2e5fe4;--accent-active: #2852c6;--accent-dark: #06005a;--accent-soft: #ebf0ff;--link-hover: #0054b6;--good: #008460;--good-bg: #e4f6ee;--warn: #b14c00;--warn-bg: #ffeccc;--bad: #d31510;--bad-bg: #ffebe7;--info: #1a89c9;--radius-sm: 8px;--radius-md: 12px;--radius-pill: 999px;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-base: 16px;--space-lg: 20px;--space-xl: 24px;font-family:var(--font-sans)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{display:flex;flex-direction:column;height:100vh}.app-header{flex:none;background:var(--surface);border-bottom:1px solid var(--border)}.app-header-inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-xl);padding:var(--space-md) var(--space-xl)}.app-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-base) var(--space-xl) var(--space-lg)}.brand{display:flex;align-items:center;gap:var(--space-base)}.brand-logo{height:28px;width:auto}.app-header h1{font-size:16px;font-weight:700;margin:0;padding-left:var(--space-base);border-left:1px solid var(--border);color:var(--accent-dark)}.app-header-right{display:flex;justify-content:flex-end}.tabs{display:flex;gap:var(--space-xs);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);padding:3px}.tabs button{border:none;background:transparent;padding:6px 16px;border-radius:var(--radius-pill);font-size:13px;font-weight:500;color:var(--text-weak);cursor:pointer}.tabs button.active{background:var(--accent);color:#fff;font-weight:700}.tab-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-left:6px}.tab-dot.running{background:var(--warn)}.main{display:flex;gap:var(--space-base);flex:1;min-height:0}.stack-main,.results-main{flex-direction:column;overflow:auto}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-xl)}.panel-head{display:flex;align-items:center;gap:var(--space-md)}h2,h3{margin:0 0 var(--space-md);color:var(--accent-dark)}.lede,.hint{color:var(--text-weak);font-size:13px}.hint{margin:var(--space-sm) 0}.run-form{display:flex;flex-direction:column;gap:var(--space-lg)}.upload-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-base)}.drop-card{display:flex;flex-direction:column;gap:6px;border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:var(--space-xl);cursor:pointer;background:var(--surface-sunken)}.drop-label{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-soft)}.drop-file{font-size:14px}.drop-card input{margin-top:8px}.field-row{display:flex;gap:var(--space-base);flex-wrap:wrap}.field-row label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:var(--text-soft)}.grow{flex:1;min-width:220px}input,select{border:1px solid var(--border);border-radius:var(--radius-pill);padding:8px 12px;font-size:13px;background:var(--surface)}.run-btn,.ghost-btn,.login-btn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);padding:10px 20px;font-size:14px;font-weight:700;cursor:pointer}.run-btn,.login-btn{border:none;background:var(--accent);color:#fff}.run-btn:disabled{background:var(--border-strong);color:var(--text-soft);cursor:not-allowed}.ghost-btn{border:1px solid var(--accent);background:var(--surface);color:var(--accent)}.btn-row{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.btn-row.tight{margin:0}.chips{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:var(--space-md) 0}.chip,.pill{border-radius:var(--radius-pill);padding:4px 10px;font-size:12px;font-weight:700}.chip{background:var(--accent-soft);color:var(--accent-dark)}.pill{text-transform:capitalize}.pill.good{background:var(--good-bg);color:var(--good)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.bad{background:var(--bad-bg);color:var(--bad)}.progress{height:8px;background:var(--bg);border-radius:var(--radius-pill);overflow:hidden}.progress-bar{height:100%;background:var(--accent)}.status-line{display:flex;gap:var(--space-md);align-items:center}.form-error{color:var(--bad)}.table-wrap{flex:1;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.table-wrap.compact{max-height:240px;margin-top:var(--space-md)}.table-toolbar{display:flex;gap:var(--space-sm);padding:var(--space-sm);border-bottom:1px solid var(--border)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{position:sticky;top:0;background:var(--surface);text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-soft);padding:10px 12px;border-bottom:1px solid var(--border)}td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}tbody tr{cursor:pointer}tbody tr.is-selected{background:var(--accent-soft)}.clip{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.results-split{display:grid;grid-template-columns:1fr minmax(260px,32%);gap:var(--space-base);min-height:280px}.detail-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);overflow:auto}.detail-panel dl{margin:0}.detail-panel dt{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-soft);margin-top:12px}.detail-panel dd{margin:4px 0 0;font-size:13px}.log-list{list-style:none;padding:0;margin:0}.log-list li{display:flex;gap:8px;align-items:center;padding:4px 0;font-size:13px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-soft)}.status-dot.running{background:var(--warn)}.status-dot.done{background:var(--good)}.status-dot.failed{background:var(--bad)}.spinner{display:inline-flex;align-items:center;gap:var(--space-sm)}.spinner-icon{width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast-host{position:fixed;right:var(--space-lg);bottom:var(--space-lg);z-index:200;display:flex;flex-direction:column;gap:var(--space-sm);width:min(360px,calc(100vw - 40px))}.toast{display:flex;gap:var(--space-sm);padding:var(--space-md) var(--space-base);border:1px solid var(--border);border-left:3px solid var(--info);border-radius:var(--radius-sm);background:var(--surface)}.toast-good{border-left-color:var(--good)}.toast-bad{border-left-color:var(--bad)}.toast-message{margin:0;font-size:13px;font-weight:700}.toast-detail{margin:4px 0 0;font-size:12px;color:var(--text-weak)}.toast-action,.toast-close{border:none;background:none;cursor:pointer;color:var(--accent);font-weight:700}.auth-user{display:flex;align-items:center;gap:var(--space-sm)}.auth-email{font-size:11.5px;color:var(--text-soft)}.auth-logout{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-pill);padding:4px 10px;font-size:11.5px;font-weight:700;cursor:pointer}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse 80% 50% at 50% -10%,var(--accent-soft),transparent 70%),var(--bg)}.login-card{width:min(420px,100%);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-md);padding:40px 36px 32px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.login-logo{height:36px}.login-title{margin:0;font-size:22px;font-weight:700;color:var(--accent-dark)}.login-subtitle{margin:0;font-size:14px;color:var(--text-weak)}.login-footnote{font-size:12px;color:var(--text-soft)}a{color:var(--accent)}
