:root{font-family:Inter,Arial,sans-serif;--sidebar-width: 260px;--sidebar-collapsed-width: 82px;--primary: #2563eb;--primary-dark: #1d4ed8;--danger: #dc2626;--warning: #f59e0b;--border: #e5e7eb;--muted: #64748b;--surface: #ffffff;--ink: #0f172a;color:#172033;background:#f3f6fb}*{box-sizing:border-box}body{margin:0;background:#f3f6fb}.app{width:100%;min-height:100vh}.main-content{margin-left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));min-height:100vh;padding:24px;overflow-x:hidden;transition:margin-left .25s ease,width .25s ease}.app.sidebar-is-collapsed .main-content{margin-left:var(--sidebar-collapsed-width);width:calc(100% - var(--sidebar-collapsed-width))}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);background:#0f172a;color:#fff;display:flex;flex-direction:column;z-index:1000;overflow:hidden;transition:width .25s ease}.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar-top{padding:18px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.08)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-logo{width:42px;height:42px;min-width:42px;display:flex;align-items:center;justify-content:center}.brand-logo img{width:100%;height:100%;object-fit:contain}.brand-title{font-size:16px;font-weight:800;white-space:nowrap}.sidebar-toggle{width:36px;height:36px;border:none;border-radius:10px;background:#ffffff1f;color:#fff;display:grid;place-items:center;cursor:pointer}.sidebar-toggle:hover{background:var(--primary)}.sidebar-nav{flex:1;padding:12px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.sidebar-nav::-webkit-scrollbar{width:5px}.sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff38;border-radius:10px}.nav-link{display:flex;align-items:center;gap:12px;padding:12px;color:#cbd5e1;text-decoration:none;font-size:14px;white-space:nowrap;border-radius:12px;transition:.2s}.nav-link:hover{background:#172554;color:#fff}.nav-link.active{background:var(--primary);color:#fff}.sidebar.collapsed .brand-title,.sidebar.collapsed .nav-link span,.sidebar.collapsed .logout-btn span{display:none}.sidebar.collapsed .sidebar-top{flex-direction:column;justify-content:center;gap:12px}.sidebar.collapsed .nav-link,.sidebar.collapsed .logout-btn{justify-content:center}.sidebar-footer{padding:14px 10px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-footer .nav-link{width:100%;border:none;background:transparent}.logout-btn{width:100%;border:none;border-radius:12px;background:var(--danger);display:flex;align-items:center;gap:12px;padding:12px;font-weight:700;cursor:pointer}.logout-btn:hover{background:#b91c1c}.topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.topbar h1{margin:0;font-size:28px;color:var(--ink)}.topbar p{margin:5px 0 0;color:var(--muted)}.badge{background:#fff;border:1px solid var(--border);border-radius:999px;padding:9px 13px;color:#334155}.badge.success{background:#ecfdf5;color:#047857;border-color:#bbf7d0}.picker{background:#fff;border:1px solid var(--border);padding:14px;border-radius:14px;margin-bottom:18px;display:flex;align-items:center;gap:12px;box-shadow:0 6px 20px #0f172a0a}.picker label{font-weight:700}.picker select{max-width:420px}.grid{display:grid;gap:18px}.grid.two{grid-template-columns:minmax(360px,480px) minmax(0,1fr)}.card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:20px;min-width:0;box-shadow:0 8px 24px #0f172a0f}.card h2{margin-top:0;color:var(--ink)}.table-card{background:#fff;border-radius:16px;padding:20px;box-shadow:0 8px 24px #0f172a0f}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}.stat-tile{padding:16px}.stat-tile-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:6px}.stat-tile-value{font-size:24px;font-weight:800;color:var(--ink)}.stat-tile.success .stat-tile-value{color:#16a34a}.stat-tile.danger .stat-tile-value{color:var(--danger)}.status-breakdown-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.status-breakdown-chip{padding:4px 10px;border-radius:999px;border:1px solid var(--border);font-size:12px;font-weight:700;color:var(--muted)}.error-sample{padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:#fef2f2;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:pre-wrap;word-break:break-word;margin-bottom:8px}[data-theme=dark] .error-sample{background:#1a1020;border-color:#3a1f2b}.table-search{display:flex;align-items:center;gap:10px;margin-bottom:14px}.table-search-box{position:relative;width:100%;max-width:320px}.table-search-box input{padding-left:36px}.table-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.table-search-count{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}.table-toolbar,.section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.section-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.refresh-btn{width:38px;height:38px;padding:0;display:grid;place-items:center;border-radius:10px;color:var(--muted)}.refresh-btn:hover{color:var(--primary);border-color:var(--primary)}.refresh-btn .spin{animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin .8s linear infinite}.page-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:48px 16px;color:var(--muted);font-weight:600}.page-loader .spin{color:var(--primary)}.inline-loader{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;font-weight:600}.inline-loader .spin{color:var(--primary)}.section-header.compact{margin-bottom:8px}.form{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row.small{max-width:260px}input,select,textarea{width:100%;border:1px solid #d1d5db;border-radius:10px;padding:11px 12px;font:inherit;background:#fff}textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}label{font-size:13px;color:#475569;font-weight:600}button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #cbd5e1;background:#fff;border-radius:10px;padding:10px 12px;cursor:pointer;font-weight:700;white-space:nowrap}button:hover{filter:brightness(.98)}button:disabled{opacity:.6;cursor:not-allowed}button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}button.danger{background:#fee2e2;color:#991b1b;border-color:#fecaca}button.warning{background:#fff7ed;color:#9a3412;border-color:#fed7aa}.button-link{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:10px 14px;text-decoration:none;border:1px solid #cbd5e1;color:var(--ink)}.button-link.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.kv-editor{display:flex;flex-direction:column;gap:8px}.kv-row,.assertion-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}.assertion-row{grid-template-columns:auto 1fr 1fr auto}.kv-row input,.assertion-row input,.assertion-row select{margin-bottom:0}.kv-add{align-self:flex-start;background:none;border:1px dashed #cbd5e1;color:var(--primary);font-size:13px;padding:8px 12px}.kv-add:hover{background:#eff6ff;border-color:var(--primary)}.recording-dot{color:var(--danger);fill:var(--danger);animation:recordingPulse 1.1s ease-in-out infinite}@keyframes recordingPulse{0%,to{opacity:1}50%{opacity:.35}}.icon-only{width:36px;height:36px;padding:0;flex-shrink:0;display:grid;place-items:center;color:var(--muted)}.icon-only:hover{color:var(--ink)}.icon-only.danger:hover{color:var(--danger);border-color:#fecaca;background:#fef2f2}.icon-only:disabled{opacity:.35}.steps-editor{display:flex;flex-direction:column;gap:10px}.step-row{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid var(--border);border-radius:12px;background:#f8fafc}.step-row-index{width:26px;height:26px;margin-top:4px;display:grid;place-items:center;border-radius:50%;background:#e0ecff;color:#1d4ed8;font-size:12px;font-weight:800}.step-row-fields{display:flex;flex-direction:column;gap:8px;min-width:0}.step-row-fields select,.step-row-fields input{margin-bottom:0}.step-row-actions{display:flex;flex-direction:column;gap:4px}.ok{color:#047857}.err{color:#b91c1c;background:#fef2f2;padding:10px;border-radius:10px}.hint{color:var(--muted);font-size:14px}.muted{color:var(--muted)}.center-cell{text-align:center}.json-block{background:var(--ink);color:#e2e8f0;border-radius:12px;padding:14px;overflow:auto;max-height:420px}.zen-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:14px;background:#fff}.zen-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:auto;font-size:13px}.zen-table th{background:#f8fafc;color:#334155;text-align:left;padding:12px 14px;border-bottom:1px solid #e2e8f0;font-weight:800;white-space:nowrap;position:sticky;top:0;z-index:1}.zen-table td{padding:12px 14px;border-bottom:1px solid #eef2f7;vertical-align:top;color:var(--ink)}.zen-table tbody tr:hover{background:#f8fafc}.number-col{width:62px;min-width:62px;text-align:center!important;color:var(--muted);font-weight:800}.action-col{min-width:170px;white-space:nowrap}.strong-cell{font-weight:800;min-width:170px}.long-cell{max-width:480px;min-width:220px;white-space:pre-wrap;word-break:break-word}.code-cell{max-width:460px;min-width:280px;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:#fbfdff;color:#334155}.response-preview{border:none;background:none;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:600;color:var(--primary);text-align:left;text-decoration:underline;text-decoration-color:transparent;cursor:pointer}.response-preview:hover{text-decoration-color:currentColor}.code-cell.wide{min-width:420px}.empty-cell{text-align:center!important;padding:28px!important;color:var(--muted)}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.capture-actions button{width:38px;height:36px;padding:0;display:grid;place-items:center}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 0}.pagination button{padding:8px 14px}.pagination button:disabled{opacity:.5;cursor:not-allowed}.method-badge,.status-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900;letter-spacing:.02em}.method-badge.get{background:#ecfdf5;color:#047857}.method-badge.post{background:#eff6ff;color:#1d4ed8}.method-badge.put,.method-badge.patch{background:#fff7ed;color:#c2410c}.method-badge.delete{background:#fef2f2;color:#b91c1c}.status-badge.passed{background:#dcfce7;color:#166534}.status-badge.failed,.status-badge.error{background:#fee2e2;color:#991b1b}.status-badge.running{background:#dbeafe;color:#1d4ed8}.status-badge.ui,.status-badge.api{background:#eef2ff;color:#4338ca}.toast-wrap{position:fixed;right:20px;top:20px;z-index:9999;display:flex;flex-direction:column;gap:10px}.toast{min-width:260px;max-width:420px;padding:13px 15px;border-radius:12px;background:#fff;color:var(--ink);border:1px solid var(--border);box-shadow:0 12px 30px #0f172a29;font-weight:700;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.toast span{flex:1}.toast-close{border:none;background:transparent;padding:0 0 0 4px;margin:0;cursor:pointer;color:inherit;opacity:.55;font-weight:700;line-height:1}.toast-close:hover{opacity:1}.toast.success{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.toast.error{background:#fef2f2;color:#b91c1c;border-color:#fecaca}.toast.info,.toast.warning{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:9998;padding:20px}.modal-card{width:min(900px,calc(100vw - 32px));max-height:90vh;overflow-y:auto;background:#fff;border-radius:16px;padding:22px;border:1px solid var(--border);box-shadow:0 22px 60px #0f172a40}.modal-card h3{margin-top:0}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-body input,.modal-body textarea,.modal-body select{width:100%;margin-bottom:10px}.modal-body textarea{min-height:130px;font-family:monospace}.media-preview{width:100%;max-height:70vh;object-fit:contain;border-radius:12px;background:#000}.run-page{width:100%}.run-layout{display:grid;grid-template-columns:400px minmax(0,1fr);gap:18px;align-items:start}.run-panel{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto}.full-width{width:100%;margin-top:12px}.target-override{margin:4px 0 14px;border:1px dashed #cbd5e1;border-radius:12px;padding:10px 12px;background:#f8fafc}.target-override summary{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;font-weight:700;color:var(--muted);list-style:none}.target-override summary::-webkit-details-marker{display:none}.target-override[open] summary{color:var(--primary);margin-bottom:10px}.target-override-body{display:flex;flex-direction:column;gap:8px}.target-override-body label{margin-top:2px}.case-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}.case-list-item{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;padding:12px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.case-list-item:hover{background:#f8fafc}.case-index{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#e0ecff;color:#1d4ed8;font-weight:800}.case-info{min-width:0}.case-info strong{display:block;font-size:14px;color:var(--ink);white-space:normal;word-break:break-word}.case-info span{display:inline-block;margin-top:4px;font-size:11px;color:var(--muted);font-weight:800}.case-actions{display:flex;gap:6px}.output-box{margin-top:16px}.results-panel{display:flex;flex-direction:column;gap:18px;min-width:0}.error-boundary{text-align:center;padding:60px 24px;background:#fff;border:1px solid var(--border);border-radius:16px}.error-boundary h2{margin-top:0;color:var(--ink)}.error-boundary button{margin:0 auto}.empty-list{padding:18px;text-align:center;color:var(--muted);border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc}.login-page{min-height:100vh;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at top left,#5b7cfa 0,transparent 35%),linear-gradient(135deg,#111827,#1f2937 55%,#0f172a);background-size:200% 200%;animation:loginGradientDrift 18s ease infinite}.login-orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.35;pointer-events:none}.login-orb-1{width:320px;height:320px;top:-80px;left:-60px;background:#4f46e5;animation:loginOrbFloat 12s ease-in-out infinite}.login-orb-2{width:380px;height:380px;bottom:-120px;right:-80px;background:#06b6d4;animation:loginOrbFloat 14s ease-in-out infinite reverse}.login-card{position:relative;width:420px;max-width:100%;background:#fffffff5;border-radius:22px;padding:38px 34px;text-align:center;box-shadow:0 25px 70px #00000059;animation:loginCardIn .55s cubic-bezier(.16,1,.3,1)}.login-card.shake{animation:loginShake .45s ease}.login-logo{width:172px;height:172px;margin:0 auto 18px;display:flex;align-items:center;justify-content:center}.login-logo img{width:220px;height:220px;object-fit:contain;animation:loginLogoFloat 5s ease-in-out infinite}@keyframes loginGradientDrift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes loginOrbFloat{0%,to{transform:translate(0) scale(1)}50%{transform:translate(30px,40px) scale(1.08)}}@keyframes loginCardIn{0%{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes loginLogoFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes loginShake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}@media (prefers-reduced-motion: reduce){.login-page,.login-orb,.login-card,.login-logo img{animation:none}}.login-card h1{margin:0;font-size:30px;color:#111827}.login-subtitle{margin:10px 0 28px;color:#6b7280;font-size:14px}.form-group{text-align:left;margin-bottom:18px}.form-group label{display:block;margin-bottom:7px;font-size:13px;font-weight:700;color:#374151}.form-group input{width:100%;height:46px;border-radius:12px;border:1px solid #d1d5db;padding:0 14px;font-size:14px;outline:none;transition:.2s}.form-group input:focus{border-color:#4f46e5;box-shadow:0 0 0 4px #4f46e51f}.login-error{background:#fee2e2;color:#b91c1c;border-radius:10px;padding:10px;font-size:13px;margin-bottom:16px}.login-btn{width:100%;height:48px;border:none;border-radius:12px;background:linear-gradient(135deg,#4f46e5,#06b6d4);color:#fff;font-size:15px;font-weight:700;cursor:pointer;transition:.2s}.login-btn:hover{transform:translateY(-1px);box-shadow:0 12px 22px #4f46e559}.login-footer{margin-top:22px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;color:#6b7280}:root[data-theme=dark]{--border: #232e47;--muted: #8a96ac;--surface: #121a2c;--ink: #e8edf5;color:#e2e8f0;background:#0a0f1c}[data-theme=dark] body{background:#0a0f1c}[data-theme=dark] .card,[data-theme=dark] .table-card,[data-theme=dark] .zen-table-wrap,[data-theme=dark] .picker,[data-theme=dark] .modal-card,[data-theme=dark] .error-boundary,[data-theme=dark] .step-row,[data-theme=dark] .target-override{background:#121a2c;border-color:#232e47;color:#e2e8f0}[data-theme=dark] .card h2,[data-theme=dark] .topbar h1,[data-theme=dark] h3{color:#f1f5f9}[data-theme=dark] .zen-table th{background:#0f1728;color:#cbd5e1;border-color:#232e47}[data-theme=dark] .zen-table td{border-color:#1b2438;color:#e2e8f0}[data-theme=dark] .zen-table tbody tr:hover{background:#182240}[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:#0f1728;border-color:#2a3652;color:#e2e8f0}[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:#57647c}[data-theme=dark] label{color:#93a0b8}[data-theme=dark] .hint,[data-theme=dark] .muted,[data-theme=dark] .number-col,[data-theme=dark] .table-search-count{color:#7c879c}[data-theme=dark] button{background:#121a2c;border-color:#2a3652;color:#e2e8f0}[data-theme=dark] button.primary{background:var(--primary);border-color:var(--primary);color:#fff}[data-theme=dark] button.danger{background:#34131a;color:#fca5a5;border-color:#5c2330}[data-theme=dark] button.warning{background:#2e2210;color:#fbbf6b;border-color:#5c4420}[data-theme=dark] .badge{background:#121a2c;border-color:#232e47;color:#cbd5e1}[data-theme=dark] .badge.success{background:#0f2a20;color:#6ee7b7;border-color:#1e4a38}[data-theme=dark] .kv-add{border-color:#2a3652;color:#7fb0ff}[data-theme=dark] .code-cell{background:#0f1728;color:#cbd5e1}[data-theme=dark] .json-block{background:#050a14}[data-theme=dark] .toast{background:#121a2c;border-color:#232e47;color:#e2e8f0}[data-theme=dark] .err{background:#34131a;color:#fca5a5}[data-theme=dark] .empty-list{background:#0f1728;border-color:#2a3652}[data-theme=dark] .case-list-item{background:#121a2c;border-color:#232e47}[data-theme=dark] .case-list-item:hover{background:#182240}@media (max-width: 1100px){.run-layout{grid-template-columns:1fr}.run-panel{position:static;max-height:none}.grid.two{grid-template-columns:1fr}}@media (max-width: 768px){.sidebar,.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar .brand-title,.sidebar .nav-link span,.sidebar .logout-btn span{display:none}.sidebar .sidebar-top{flex-direction:column;justify-content:center;gap:12px}.sidebar .nav-link,.sidebar .logout-btn{justify-content:center}.main-content,.app.sidebar-is-collapsed .main-content{margin-left:var(--sidebar-collapsed-width);width:calc(100% - var(--sidebar-collapsed-width));padding:16px}.topbar{display:block}.picker{align-items:stretch;flex-direction:column}.row{flex-direction:column;align-items:stretch}.case-list-item{grid-template-columns:36px 1fr}.case-actions{grid-column:1 / -1}.pagination{justify-content:center}.card,.table-card{padding:14px;border-radius:12px}.section-header{align-items:stretch}.section-header button{width:100%;justify-content:center}.modal-card{padding:16px;border-radius:12px}.zen-table{font-size:12px}.picker select{max-width:none}}@media (max-width: 480px){.topbar h1{font-size:22px}.login-card{width:100%;padding:28px 22px}.actions{flex-direction:column;align-items:stretch}.actions button{width:100%}.toast-wrap{top:auto;bottom:16px;left:12px;right:12px}.toast{min-width:0;width:100%}}
