.reports-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:reports-fade-in 120ms ease-out}@keyframes reports-fade-in{from{opacity:0}to{opacity:1}}.reports-modal{background:var(--surface,#fff);color:var(--text,#222);padding:24px 28px;width:min(640px,92vw);max-height:90vh;overflow-y:auto;border-radius:12px;box-shadow:0 20px 50px rgba(15,23,42,.25);animation:reports-pop-in 160ms cubic-bezier(.2,.8,.2,1)}@keyframes reports-pop-in{from{transform:translateY(8px) scale(.98);opacity:0}to{transform:none;opacity:1}}.reports-modal h2{margin:0 0 6px;font-size:20px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.reports-modal h3{margin:18px 0 8px;font-size:14px;font-weight:600;color:var(--text,#222)}.reports-modal-hint{color:var(--text-muted,#666);font-size:13px;margin:0 0 18px;line-height:1.4}.reports-modal label{display:block;margin:10px 0;font-size:13px;font-weight:500;color:var(--text,#222)}.reports-modal input[type=text],.reports-modal select,.reports-modal textarea{width:100%;padding:8px 10px;margin-top:4px;border:1px solid var(--border,#d0d7de);border-radius:6px;font:inherit;font-size:13px;background:var(--surface,#fff);color:var(--text,#222);box-sizing:border-box;transition:border-color 120ms,box-shadow 120ms}.reports-modal input[type=text]:focus,.reports-modal select:focus,.reports-modal textarea:focus{outline:0;border-color:var(--accent,#2d6cdf);box-shadow:0 0 0 3px rgba(45,108,223,.15)}.reports-modal textarea{resize:vertical;min-height:50px}.reports-mode-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:rgba(45,108,223,.12);color:var(--accent,#2d6cdf);text-transform:uppercase;letter-spacing:.4px}.reports-modal .param-row{display:grid;grid-template-columns:1fr 110px 140px 1.2fr auto;gap:8px;margin:8px 0;align-items:center}.reports-modal .param-row input,.reports-modal .param-row select{margin-top:0}.reports-modal .param-row .p-remove{background:0 0;border:none;cursor:pointer;color:#c33;font-size:16px;padding:4px 8px;border-radius:4px;transition:background 120ms}.reports-modal .param-row .p-remove:hover{background:rgba(204,51,51,.1)}@media (max-width:620px){.reports-modal .param-row{grid-template-columns:1fr 1fr;gap:6px}.reports-modal .param-row .p-remove{grid-column:span 2;justify-self:end}}.reports-link-btn{background:0 0;border:none;color:var(--accent,#2d6cdf);cursor:pointer;padding:6px 0;font-size:13px;font-weight:500}.reports-link-btn:hover{text-decoration:underline}.reports-modal-preview{margin-top:14px}.reports-modal-preview summary{cursor:pointer;font-size:13px;color:var(--text-muted,#666);padding:4px 0}.reports-modal-preview pre{background:#f6f8fa;padding:10px;border-radius:6px;font-size:12px;max-height:180px;overflow:auto;margin-top:6px;line-height:1.45}.reports-empty-params{font-size:13px;color:var(--text-muted,#666);font-style:italic;padding:10px;background:#f6f8fa;border-radius:6px}.reports-modal-readonly{margin-top:14px;padding:12px;background:#f6f8fa;border-radius:6px;border-left:3px solid var(--accent,#2d6cdf)}.reports-readonly-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted,#666);margin-bottom:4px;font-weight:600}.reports-readonly-value{font-size:13px;color:var(--text,#222);line-height:1.4;white-space:pre-wrap;word-break:break-word}.reports-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;padding-top:16px;border-top:1px solid var(--border,#eee)}.reports-modal-actions button{padding:8px 16px;border:1px solid var(--border,#d0d7de);border-radius:6px;background:var(--surface,#fff);color:var(--text,#222);cursor:pointer;font-size:13px;font-weight:500;transition:background 120ms,border-color 120ms}.reports-modal-actions button:hover:not(:disabled){background:#f6f8fa}.reports-modal-actions button:disabled{opacity:.6;cursor:not-allowed}.reports-modal-actions .primary{background:var(--accent,#2d6cdf);color:#fff;border-color:transparent}.reports-modal-actions .primary:hover:not(:disabled){background:var(--accent-hover,#255abf)}.reports-modal-chooser{width:min(560px,92vw)}.reports-mode-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0 4px}@media (max-width:520px){.reports-mode-options{grid-template-columns:1fr}}.reports-mode-card{text-align:left;padding:16px;border:1px solid var(--border,#d0d7de);border-radius:10px;background:var(--surface,#fff);cursor:pointer;font:inherit;color:inherit;transition:border-color 120ms,box-shadow 120ms,transform 120ms;position:relative;display:flex;flex-direction:column;gap:6px}.reports-mode-card:hover{border-color:var(--accent,#2d6cdf);box-shadow:0 6px 16px rgba(45,108,223,.15);transform:translateY(-1px)}.reports-mode-card-title{font-size:15px;font-weight:600;color:var(--text,#222)}.reports-mode-card-desc{font-size:12px;color:var(--text-muted,#666);line-height:1.5}.reports-mode-card-tag{align-self:flex-start;font-size:10px;text-transform:uppercase;letter-spacing:.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:rgba(45,108,223,.12);color:var(--accent,#2d6cdf);margin-top:2px}.reports-modal-loading{width:auto;min-width:260px;padding:28px 32px;display:flex;flex-direction:column;align-items:center;gap:14px}.reports-spinner{width:36px;height:36px;border:3px solid rgba(45,108,223,.2);border-top-color:var(--accent,#2d6cdf);border-radius:50%;animation:reports-spin .7s linear infinite}@keyframes reports-spin{to{transform:rotate(360deg)}}.reports-loading-message{font-size:13px;color:var(--text,#222);font-weight:500}.save-as-report-btn{margin-left:8px;padding:4px 10px;font-size:12px;background:var(--surface,#f0f0f0);border:1px solid var(--border,#ccc);border-radius:4px;cursor:pointer;transition:background 120ms}.save-as-report-btn:hover{background:var(--surface-hover,#e0e0e0)}.save-as-report-btn:disabled{opacity:.6;cursor:not-allowed}body.saved-reports-disabled .save-as-report-btn{display:none!important}.reports-page{max-width:1200px;margin:0 auto;padding:24px}.reports-page-header{margin-bottom:24px}.reports-page-header h1{margin:0}.reports-page-header .subtitle{color:var(--text-muted,#666);margin:4px 0 0}.reports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.report-card{border:1px solid var(--border-color,#d0d7de);border-radius:8px;padding:16px;background:var(--bg-surface,#fff)}.report-card h3{margin:0 0 8px;font-size:16px}.report-card .report-desc{color:var(--text-muted,#666);font-size:13px;min-height:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.report-card .card-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.report-card .card-actions button{padding:4px 8px;font-size:12px;border:1px solid var(--border-color,#ccc);background:var(--bg-surface,#fff);border-radius:4px;cursor:pointer}.report-card .card-actions .danger{border-color:#c33;color:#c33}.reports-empty,.reports-error{text-align:center;padding:48px;color:var(--text-muted,#666)}.report-detail{max-width:1400px;margin:0 auto;padding:24px}.detail-layout{display:grid;grid-template-columns:320px 1fr 320px;gap:24px;margin-top:16px}@media (max-width:1100px){.detail-layout{grid-template-columns:1fr}}.history-panel,.params-panel,.result-panel{background:var(--bg-surface,#fff);border:1px solid var(--border-color,#d0d7de);border-radius:8px;padding:16px}.params-actions{margin-top:16px;display:flex;gap:8px}.param-input{margin-bottom:12px}.param-input input[type=date]{padding:4px 6px;border:1px solid var(--border-color,#ccc);border-radius:4px}.default-hint{color:var(--text-muted,#666);font-size:11px}.run-entry{border-bottom:1px solid var(--border-color,#eee);padding:8px 0;display:flex;flex-direction:column;gap:4px}.run-entry .ts{font-size:12px;color:var(--text-muted,#666)}.badge-complete{color:#0a7021}.badge-failed{color:#c33}.badge-pending,.badge-running{color:#946a00}.snapshot-badge{font-size:11px;color:var(--text-muted,#666)}.map-preview{height:320px;margin-top:12px;border:1px solid var(--border-color,#ccc);border-radius:4px}.run-entry pre{font-size:11px;background:#f6f8fa;padding:4px;max-height:120px;overflow:auto;margin:4px 0}