:root{--primary: #4F6FE8;--primary-hover: #4056C4;--sidebar-bg: #1A1F3C;--sidebar-active: #2E3566;--sidebar-active-icon: #8094FF;--page-bg: #F6F7FA;--surface: #FFFFFF;--surface-2: #F6F7FA;--border: #E8EAF2;--ink: #1E2238;--muted: #6B7280;--faint: #9AA0AE;--row-hover: rgba(79, 111, 232, .06);--success: #2DA44E;--success-bg: #E7F8EE;--warning: #B7791F;--warning-bg: #FEF6E6;--danger: #E5484D;--danger-bg: #FDECEC;--info: #4285F4;--focus-ring: 0 0 0 3px rgba(79, 111, 232, .18);--radius: 10px;--shadow: 0 1px 2px rgba(16, 24, 64, .06), 0 4px 16px rgba(16, 24, 64, .04);--space: 16px;--pad-y: 10px;--font: 14px}:root[data-density=compact]{--space: 10px;--pad-y: 6px;--font: 13px}:root[data-theme=dark]{--page-bg: #0F1226;--surface: #171B33;--surface-2: #1C2140;--border: rgba(255, 255, 255, .1);--ink: rgba(255, 255, 255, .92);--muted: rgba(255, 255, 255, .65);--faint: rgba(255, 255, 255, .45);--row-hover: rgba(255, 255, 255, .05);--danger: #FF6B6B;--danger-bg: rgba(255, 107, 107, .12);--success-bg: rgba(45, 164, 78, .15);--warning-bg: rgba(242, 182, 0, .14);--shadow: 0 1px 2px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Poppins,-apple-system,Segoe UI,Roboto,sans-serif;font-size:var(--font);color:var(--ink);background:var(--page-bg);-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}img{max-width:100%}.btn{font:inherit;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:8px;padding:var(--pad-y) 14px;transition:background .12s,border-color .12s}.btn:hover{background:var(--surface-2)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn.ghost{background:transparent}.btn.sm{padding:4px 10px;font-size:12px}.btn.danger{color:var(--danger);border-color:var(--danger);background:transparent}.input,select.input,textarea.input{font:inherit;width:100%;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:var(--pad-y) 12px}.input:focus{outline:none;box-shadow:var(--focus-ring);border-color:var(--primary)}label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}.field{margin-bottom:var(--space)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:var(--pad-y) 14px;border-bottom:1px solid var(--border)}.table th{font-weight:500;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}.table tbody tr:hover{background:var(--row-hover)}.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500}.pill.todo{background:var(--warning-bg);color:var(--warning)}.pill.in_progress{background:var(--info);color:#fff;opacity:.9}.pill.done{background:var(--success-bg);color:var(--success)}.muted{color:var(--muted)}.row{display:flex;align-items:center;gap:var(--space)}.spread{display:flex;align-items:center;justify-content:space-between;gap:var(--space)}.stack>*+*{margin-top:var(--space)}.h1{font-size:20px;font-weight:700;margin:0}.scroll-x{overflow-x:auto}.error{background:var(--danger-bg);color:var(--danger);padding:8px 12px;border-radius:8px;margin-bottom:var(--space);font-size:13px}.success{background:color-mix(in srgb,var(--brand, #16a34a) 12%,transparent);color:var(--brand-ink, #15803d);padding:8px 12px;border-radius:8px;font-size:13px}.login{min-height:100%;display:grid;grid-template-columns:1.1fr 1fr}.login-hero{background:linear-gradient(150deg,#0e3a66,#12477e);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:center;gap:16px}.login-hero h1{font-weight:700;font-size:34px;line-height:1.15;margin:8px 0 0}.login-hero .tagline{color:#c5d2f5;font-size:15px;margin:0}.logo-badge{background:#fff;border-radius:14px;padding:12px 18px;align-self:flex-start;box-shadow:0 8px 24px #0003}.logo-badge span{color:#1a1f3c;font-weight:700;font-size:22px;letter-spacing:-.02em}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.chip{background:#ffffff24;border:1px solid rgba(255,255,255,.2);color:#fff;padding:4px 12px;border-radius:999px;font-size:12px}.login-form{background:#fafbfe;display:flex;align-items:center;justify-content:center;padding:24px}:root[data-theme=dark] .login-form{background:var(--surface)}@media (max-width: 800px){.login{grid-template-columns:1fr}.login-hero{padding:32px}}.shell{display:grid;grid-template-columns:240px 1fr;grid-template-rows:56px 1fr;height:100%}.sidebar{grid-row:1 / 3;background:var(--sidebar-bg);color:#ffffffbf;padding:12px;overflow-y:auto}.sidebar .brand{color:#fff;font-weight:700;font-size:18px;padding:8px 10px 16px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:#ffffffbf;cursor:pointer;font-weight:500;font-size:14px}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:var(--sidebar-active);color:var(--sidebar-active-icon)}.nav-item .ico{width:18px;text-align:center}.topbar{grid-column:2;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:0 20px}.content{grid-column:2;padding:24px;overflow-y:auto}.iconbtn{position:relative;border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:8px;width:34px;height:34px;cursor:pointer}.badge{position:absolute;top:-6px;right:-6px;background:var(--danger);color:#fff;border-radius:999px;font-size:10px;min-width:16px;height:16px;line-height:16px;padding:0 4px}@media (max-width: 720px){.shell{grid-template-columns:0 1fr}.sidebar{position:fixed;z-index:20;width:240px;height:100%;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:none}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#10184066;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.center-screen{height:100%;display:flex;align-items:center;justify-content:center;color:var(--muted)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg button{font:inherit;font-size:13px;border:0;background:var(--surface);color:var(--muted);padding:5px 12px;cursor:pointer}.seg button.on{background:var(--primary);color:#fff}.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:6px;background:var(--surface-2);color:var(--ink);border:1px solid var(--border)}.chip.lane{background:var(--info);color:#fff;border-color:transparent;opacity:.9}.job-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.job-card{text-align:left;cursor:pointer;padding:14px;font:inherit;color:inherit}.job-card:hover{border-color:var(--primary)}.progress{height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-top:10px}.progress>span{display:block;height:100%;background:var(--primary);transition:width .2s}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;justify-content:flex-end;z-index:50}.drawer{width:min(560px,96vw);height:100%;overflow-y:auto;background:var(--page-bg);border-left:1px solid var(--border);padding:20px;box-shadow:-8px 0 30px #00000026}.stepper{display:flex;flex-direction:column;gap:10px}.step-row{border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--surface)}.step-row.in_progress{border-color:var(--primary);box-shadow:var(--focus-ring)}.step-row.skipped{opacity:.55}.step-dot{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;font-size:12px;background:var(--surface-2);color:var(--muted)}.step-dot.done{background:var(--success-bg);color:var(--success)}.step-dot.in_progress{background:var(--primary);color:#fff}.step-dot.rejected{background:var(--danger-bg);color:var(--danger)}.step-body{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}.step-body.history{display:flex;flex-direction:column;gap:4px}.assign-next{margin-top:10px;padding:10px;border-radius:8px;background:var(--surface-2)}.assign-next select[multiple]{min-height:64px}.builder{position:relative;width:min(1100px,98vw);height:100%;margin-left:auto;background:var(--page-bg);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.builder-bar{padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.canvas{flex:1;overflow:auto;display:flex;align-items:flex-start;gap:0;padding:20px}.canvas-col{display:flex;align-items:center;gap:12px}.canvas-col>.step-card+.step-card{margin-top:12px}.canvas-col{flex-direction:column}.canvas-arrow{color:var(--muted);font-size:22px;align-self:center;padding:0 6px}.step-card{width:220px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;cursor:pointer;transition:border-color .12s,box-shadow .12s}.step-card:hover{border-color:var(--primary)}.step-card.sel{border-color:var(--primary);box-shadow:var(--focus-ring)}.config{position:absolute;top:0;right:0;width:min(440px,96vw);height:100%;overflow-y:auto;background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 30px #00000026;padding:16px}.cfg-sec{border-top:1px solid var(--border);padding:12px 0}.cfg-sec:first-of-type{border-top:0}.cfg-h{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px}.pill.on-time{background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}.pill.overdue{background:var(--danger-bg);color:var(--danger)}.pill.pulse{animation:pulse-badge 1.1s ease-in-out infinite}@keyframes pulse-badge{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion: reduce){.pill.pulse{animation:none}}.flow-step-row{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 12px}.flow-step-row:hover{border-color:var(--primary)}.linknum{font:inherit;background:none;border:0;color:var(--primary);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}.linknum:hover{opacity:.8}.imp-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#4f6fe8;color:#fff;padding:8px 16px;font-size:14px}.imp-banner .btn{background:#ffffff29;border-color:#ffffff8c;color:#fff}.imp-banner .btn:hover{background:#ffffff47}.tabbar{display:flex;gap:4;flex-wrap:wrap;border-bottom:1px solid var(--border)}.tab{font:inherit;font-size:14px;border:0;background:transparent;color:var(--muted);padding:8px 14px;cursor:pointer;border-bottom:2px solid transparent}.tab:hover{color:var(--ink)}.tab.on{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.pill.mod-one_time{background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}.pill.mod-recurring{background:var(--warning-bg);color:var(--warning)}.pill.mod-workflow{background:color-mix(in srgb,var(--primary) 16%,transparent);color:var(--primary)}.pipeline{display:flex;align-items:stretch;gap:0;overflow-x:auto;padding:12px 2px 4px}.pipe-step{display:flex;align-items:center}.pipe-card{display:flex;flex-direction:column;justify-content:space-between;gap:10px;min-width:130px;text-align:left;font:inherit;color:inherit;cursor:pointer;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface)}.pipe-card:hover{border-color:var(--primary)}.pipe-card.green{border-color:color-mix(in srgb,var(--success) 55%,var(--border))}.pipe-card.red{border-color:color-mix(in srgb,var(--danger) 55%,var(--border))}.pipe-name{font-size:13px;font-weight:500}.pipe-badge{align-self:flex-start;font-size:12px;font-weight:600;padding:2px 10px;border-radius:999px}.pipe-badge.grey{background:var(--surface-2);color:var(--muted)}.pipe-badge.green{background:var(--success-bg);color:var(--success)}.pipe-badge.red{background:var(--danger-bg);color:var(--danger)}.pipe-arrow{color:var(--muted);padding:0 8px}.tile-btn{transition:border-color .12s,box-shadow .12s}.tile-btn:hover{border-color:var(--primary);box-shadow:var(--focus-ring)}.work-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px}.tile-btn.sel{border-color:var(--primary);box-shadow:var(--focus-ring)}
