*,*:before,*:after{box-sizing:border-box;margin:0}body{font-family:system-ui,sans-serif;background:#f8fafc;color:#1e293b;min-height:100vh}a{color:inherit;text-decoration:none}.layout{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;gap:12px;padding:14px 24px;background:#fff;border-bottom:1px solid #e2e8f0}.brand{font-size:1.1rem;font-weight:700;letter-spacing:.02em;color:#7c3aed}.nav-links{display:flex;gap:4px}.nav-link{font-size:.82rem;color:#64748b;padding:4px 10px;border-radius:5px;transition:color .15s,background .15s}.nav-link:hover,.nav-link.router-link-active{color:#1e293b;background:#e2e8f0}.user-info{margin-left:auto;font-size:.78rem;color:#64748b}.user-info--link{text-decoration:none;border-bottom:1px dashed #cbd5e1;cursor:pointer;transition:color .12s}.user-info--link:hover{color:#7c3aed;border-color:#7c3aed}.token-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.token-display{font-family:monospace;font-size:.72rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px;padding:6px 10px;color:#475569;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.logout-btn{background:none;border:1px solid #cbd5e1;color:#64748b;font-size:.78rem;padding:3px 10px;border-radius:5px;cursor:pointer}.logout-btn:hover{color:#1e293b;border-color:#7c3aed}.tagline{font-size:.8rem;color:#64748b}.status-dot{margin-left:auto;width:9px;height:9px;border-radius:50%;background:#64748b}.status-dot.ok{background:#16a34a}.status-dot.error{background:#dc2626}.content{padding:32px 24px}h2{font-size:1.1rem;font-weight:700;color:#1e293b;margin-bottom:4px}h3{font-size:.85rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px}section>h2:first-child,.catalog>h2:first-child{font-size:1rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.06em;margin-bottom:20px}.template-list{list-style:none;display:flex;flex-direction:column;gap:12px}.template-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:16px 20px;display:flex;flex-direction:column;gap:4px}.template-card.clickable{cursor:pointer;transition:border-color .15s}.template-card.clickable:hover{border-color:#7c3aed}.card-header,.form-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-header strong{font-size:.95rem}.badges{display:flex;align-items:center;gap:6px;flex-shrink:0}.pack-badge{font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:4px;white-space:nowrap}.pack-badge--mock{background:#f0f4f8;color:#64748b;border:1px solid #cbd5e1}.pack-badge--ac5{background:#dbeafe;color:#2563eb;border:1px solid #bfdbfe}.step-badge{font-size:.68rem;font-weight:500;padding:2px 8px;border-radius:4px;background:#f0f4f8;color:#475569;border:1px solid #cbd5e1;white-space:nowrap}.meta{font-size:.75rem;color:#64748b}.desc{font-size:.82rem;color:#475569;margin-top:2px}.muted{color:#64748b;font-size:.9rem}.error{color:#dc2626;font-size:.9rem}.back-link{background:none;border:none;color:#64748b;font-size:.85rem;cursor:pointer;padding:0;margin-bottom:20px;display:block}.back-link:hover{color:#475569}.field-group{border:1px solid #e2e8f0;border-radius:8px;padding:16px 20px;margin-bottom:16px}.field-group legend{font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.06em;padding:0 6px}.field{display:flex;flex-direction:column;gap:4px;margin-top:14px}.field label{font-size:.82rem;color:#475569}.required-mark{color:#dc2626;margin-left:2px}.optional{color:#475569;font-size:.75rem}.input{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;color:#1e293b;font-size:.9rem;padding:8px 12px;outline:none;transition:border-color .15s;width:100%}.input:focus{border-color:#7c3aed}.textarea{resize:vertical;font-family:monospace;font-size:.82rem}.checkbox{width:18px;height:18px;accent-color:#7c3aed}.field-error{color:#dc2626;font-size:.78rem}.btn-primary{background:#7c3aed;color:#f8fafc;border:none;border-radius:6px;font-size:.9rem;font-weight:600;padding:10px 24px;cursor:pointer;transition:opacity .15s}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-primary:hover:not(:disabled){opacity:.9}.detail-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.status-badge{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:3px 10px;border-radius:4px}.status--requested{background:#f0f4f8;color:#475569;border:1px solid #cbd5e1}.status--processing{background:#dbeafe;color:#2563eb;border:1px solid #bfdbfe}.status--ready{background:#dcfce7;color:#16a34a;border:1px solid #bbf7d0}.status--failed{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}.detail-grid,.param-grid{display:grid;grid-template-columns:max-content 1fr;gap:6px 20px;font-size:.875rem;margin-bottom:24px}.detail-grid dt,.param-grid dt{color:#64748b;white-space:nowrap}.detail-grid dd,.param-grid dd{color:#1e293b;word-break:break-word;white-space:pre-wrap;font-family:monospace;font-size:.82rem}.param-section h3{margin-bottom:12px}.form-header{margin-bottom:24px}.form-header h2{font-size:1.15rem}.section{margin-bottom:24px}.execute-row{display:flex;align-items:center;gap:16px;margin-bottom:20px}.step-list{list-style:none;display:flex;flex-direction:column;gap:8px}.step-item{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.step-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.step-key{font-size:.88rem;font-family:monospace;color:#1e293b}.step-status{font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:4px}.step-status--pending{background:#f0f4f8;color:#64748b;border:1px solid #cbd5e1}.step-status--running{background:#dbeafe;color:#2563eb;border:1px solid #bfdbfe}.step-status--completed{background:#dcfce7;color:#16a34a;border:1px solid #bbf7d0}.step-status--failed{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}.output-grid{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;font-size:.8rem;padding-left:4px}.output-grid dt{color:#64748b}.output-grid dd{color:#1e293b;font-family:monospace;word-break:break-all}.log-details{font-size:.78rem}.log-details summary{color:#64748b;cursor:pointer;-webkit-user-select:none;user-select:none;padding:2px 0}.log-details summary:hover{color:#475569}.log-pre{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:8px 12px;margin-top:6px;font-size:.75rem;color:#475569;overflow-x:auto;white-space:pre}.step-error{font-size:.82rem;color:#dc2626}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table th{text-align:left;color:#64748b;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:8px 12px;border-bottom:1px solid #e2e8f0}.data-table td{padding:10px 12px;border-bottom:1px solid #f0f4f8;vertical-align:middle}.clickable-row{cursor:pointer;transition:background .12s}.clickable-row:hover{background:#fff}.mono{font-family:monospace;font-size:.8rem}.muted-cell{color:#64748b;font-size:.82rem}.pagination{display:flex;align-items:center;gap:12px;margin-top:20px}.page-btn{background:#fff;border:1px solid #e2e8f0;color:#475569;font-size:.82rem;padding:6px 14px;border-radius:6px;cursor:pointer}.page-btn:disabled{opacity:.4;cursor:not-allowed}.page-info{font-size:.82rem;color:#64748b}.pool-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.toggle-label{display:flex;align-items:center;gap:6px;font-size:.82rem;color:#64748b;cursor:pointer}.filters{margin-bottom:16px}.filter-input{max-width:320px}.entity-status-badge{font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:4px}.entity-status--new{background:#dcfce7;color:#16a34a;border:1px solid #bbf7d0}.entity-status--locked{background:#dbeafe;color:#2563eb;border:1px solid #bfdbfe}.entity-status--consumed{background:#f0f4f8;color:#64748b;border:1px solid #cbd5e1}.action-cell{display:flex;gap:6px}.action-btn{font-size:.75rem;padding:3px 10px;border-radius:4px;cursor:pointer;border:none;font-weight:500}.quick-row{display:flex;flex-wrap:wrap;gap:6px}.remove-x{margin-left:6px;color:#94a3b8;font-weight:700}.remove-x:hover{color:#ef4444}.form-actions-row{display:flex;gap:8px;align-items:center}.action-btn--lock{background:#dbeafe;color:#2563eb}.action-btn--release{background:#f0f4f8;color:#475569}.action-btn--consume{background:#dcfce7;color:#16a34a}.action-btn:hover{opacity:.85}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.pool-actions{display:flex;align-items:center;gap:12px}.env-section{margin-bottom:28px}.env-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}.env-key{font-family:monospace;font-size:.9rem;color:#7c3aed;font-weight:600}.env-label{font-size:.82rem;color:#64748b}.bulk-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;margin-bottom:12px}.asset-chips{display:flex;flex-wrap:wrap;gap:4px}.asset-chip{background:#f8fafc;border:1px solid #cbd5e1;color:#475569;font-family:monospace;font-size:.72rem;padding:2px 6px;border-radius:4px;cursor:copy;white-space:nowrap}.asset-chip:hover{border-color:#7c3aed;color:#7c3aed}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:28px 32px;width:100%;max-width:440px;display:flex;flex-direction:column;gap:4px}.modal-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:28px 32px;max-width:90vw;display:flex;flex-direction:column;gap:4px}.modal h3{font-size:1rem;color:#1e293b;margin-bottom:12px}.modal-actions{display:flex;gap:10px;margin-top:16px}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.asset-list{display:flex;flex-direction:column;gap:12px}.asset-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}.asset-header{display:flex;align-items:center;gap:12px;margin-bottom:4px}.asset-step{font-size:.88rem;font-weight:600;font-family:monospace;color:#1e293b}.asset-id-row{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:6px 10px}.asset-id-label{font-size:.72rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em;min-width:20px}.asset-id-value{flex:1;font-size:.88rem;color:#7c3aed}.asset-data-table{width:100%;border-collapse:collapse;font-size:.8rem}.asset-data-table td{padding:4px 8px;vertical-align:middle;border-bottom:1px solid #f0f4f8}.asset-key{color:#64748b;width:40%;font-family:monospace}.asset-val{color:#1e293b;word-break:break-all}.copy-btn{background:none;border:none;color:#64748b;cursor:pointer;font-size:.9rem;padding:2px 4px;border-radius:3px}.copy-btn:hover{color:#7c3aed;background:#f0f4f8}.copy-toast{position:fixed;bottom:24px;right:24px;background:#7c3aed;color:#f8fafc;font-size:.82rem;font-weight:600;padding:8px 16px;border-radius:6px;pointer-events:none}.request-details{font-size:.78rem}.request-details summary{color:#64748b;cursor:pointer;padding:2px 0;-webkit-user-select:none;user-select:none}.request-details summary:hover{color:#475569}.reserved-badge{font-size:.72rem;padding:3px 10px;border-radius:4px;background:#dbeafe;color:#2563eb;border:1px solid #bfdbfe}.reserved-chip{font-size:.72rem;padding:2px 7px;border-radius:4px;background:#dbeafe;color:#2563eb;border:1px solid #bfdbfe}.reserved-mine{background:#dcfce7;color:#16a34a;border-color:#bbf7d0}.template-editor{max-width:900px}.editor-topbar{display:flex;align-items:center;gap:16px;margin-bottom:24px;flex-wrap:wrap}.editor-topbar h2{margin:0;flex:1;min-width:160px}.editor-tabs{display:flex;gap:4px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:3px}.tab-btn{background:none;border:none;color:#64748b;font-size:.82rem;padding:4px 14px;border-radius:4px;cursor:pointer;transition:background .12s,color .12s}.tab-btn--active{background:#e2e8f0;color:#1e293b}.editor-actions{display:flex;gap:8px}.editor-body{display:flex;flex-direction:column;gap:16px}.editor-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:20px}.editor-card h3{margin-bottom:16px}.card-row-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.field--full{grid-column:1 / -1}.input--sm{font-size:.82rem;padding:5px 8px}.step-editor-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.step-editor-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;overflow:hidden}.step-editor-card.step-drop-target{border-color:#7c3aed;box-shadow:0 0 0 2px #7c3aed40}.step-editor-card.step-dragging{opacity:.5}.step-editor-header{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none}.step-drag{cursor:grab;color:#94a3b8;font-size:1.05rem;line-height:1;padding:0 2px;flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.step-drag:hover{color:#7c3aed}.step-drag:active{cursor:grabbing}.step-editor-header:hover{background:#fff}.step-editor-body{padding:14px;border-top:1px solid #e2e8f0}.yaml-editor{font-family:monospace;font-size:.8rem;min-height:400px;resize:vertical;white-space:pre;overflow-x:auto}.manual-table-wrap{overflow-x:auto}.manual-table{min-width:100%}.manual-cell{min-width:120px;max-width:240px;padding:6px 10px;cursor:pointer;vertical-align:middle;border-right:1px solid #f0f4f8;transition:background .1s}.manual-cell:hover{background:#fff}.manual-cell--dirty{background:#1c2d1c}.manual-cell-text{font-size:.82rem;font-family:monospace;color:#1e293b;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.manual-input{background:#f8fafc;border:1px solid #7c3aed;border-radius:3px;color:#1e293b;font-size:.82rem;font-family:monospace;padding:3px 6px;outline:none;width:100%;min-width:100px}.manual-edit-grid{display:grid;grid-template-columns:160px 1fr;gap:8px 12px;align-items:center;margin-top:8px}.manual-edit-grid label.asset-key{font-size:.82rem;color:#64748b;font-family:monospace;align-self:center}.manual-edit-row{display:flex;align-items:center;gap:6px}.manual-edit-row .input--sm{flex:1}.template-filter-row{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.template-filter-label{font-size:.82rem;color:#475569;white-space:nowrap}.pool-select-wrap{position:relative;display:inline-flex;align-items:center}.pool-select-wrap:after{content:"▾";position:absolute;right:10px;color:#475569;pointer-events:none;font-size:.9rem}.pool-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#1e293b;font-size:.85rem;padding:7px 32px 7px 12px;outline:none;cursor:pointer;min-width:220px;max-width:320px;transition:border-color .15s}.pool-select:focus,.pool-select:hover{border-color:#7c3aed}.asset-values-list{display:flex;flex-direction:column;gap:2px}.asset-kv{display:flex;gap:6px;align-items:baseline;font-size:.78rem}.asset-kv-key{color:#64748b;flex-shrink:0;min-width:60px}.asset-kv-val{color:#1e293b;cursor:copy;word-break:break-all}.asset-kv-val:hover{color:#7c3aed}.pool-table-wrap{overflow-x:auto}.col-output{min-width:160px}.pool-cell-val{font-size:.82rem;display:block;white-space:nowrap}.pool-actions-cell{white-space:nowrap}.icon-btn{background:none;border:1px solid #e2e8f0;border-radius:4px;color:#475569;cursor:pointer;font-size:.82rem;padding:3px 7px;margin:0 1px;transition:background .12s,color .12s,border-color .12s}.icon-btn:hover{background:#fff;border-color:#7c3aed;color:#1e293b}.icon-btn--edit:hover{color:#7c3aed;border-color:#7c3aed}.icon-btn--save:hover{color:#16a34a;border-color:#bbf7d0;background:#dcfce7}.icon-btn--cancel:hover{color:#dc2626;border-color:#fca5a5;background:#fee2e2}.icon-btn--lock:hover{color:#2563eb;border-color:#bfdbfe;background:#dbeafe}.icon-btn--release:hover{color:#475569;border-color:#cbd5e1}.icon-btn--consume:hover{color:#16a34a;border-color:#bbf7d0;background:#dcfce7}
