*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f4f6f9;--bg-card:#fff;--bg-sidebar:#1e293b;--text:#1e293b;--text-muted:#64748b;--text-light:#fff;--accent:#3b82f6;--accent-hover:#2563eb;--accent-light:#eff6ff;--danger:#ef4444;--danger-hover:#dc2626;--success:#22c55e;--warning:#f59e0b;--border:#e2e8f0;--input-bg:#fff;--input-border:#cbd5e1;--radius:6px;--shadow:0 1px 3px rgba(0,0,0,.08);--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,sans-serif}html{font-size:14px;height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);line-height:1.5;height:100%;margin:0;overflow:hidden}#root{height:100%}.app-layout{display:flex;height:100%;min-height:100%;max-height:100%;overflow:hidden}.sidebar{width:220px;background:var(--bg-sidebar);color:var(--text-light);display:flex;flex-direction:column;padding:1rem 0;flex-shrink:0;min-height:0}.sidebar h2{padding:0 1.25rem .75rem;font-size:1rem;font-weight:700;letter-spacing:.02em;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:.5rem}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:0 .5rem;flex:1;min-height:0;overflow-y:auto}.sidebar-nav-divider{height:1px;margin:.6rem .75rem;background:#fff3;flex-shrink:0}.sidebar nav a{display:block;padding:.55rem .75rem;border-radius:var(--radius);color:#ffffffbf;text-decoration:none;font-size:.9rem;transition:background .15s,color .15s}.sidebar nav a:hover,.sidebar nav a.active{background:#ffffff1a;color:#fff}.sidebar-footer{margin-top:auto;padding:.75rem 1.25rem;border-top:1px solid rgba(255,255,255,.1)}.sidebar-footer .sidebar-user-link{display:block;font-size:.75rem;color:#ffffffbf;text-decoration:none;margin-bottom:.35rem;padding:.25rem 0;border-radius:var(--radius)}.sidebar-footer .sidebar-user-link:hover{color:#fff;text-decoration:underline}.sidebar-footer .sidebar-user-link.active{color:#fff;font-weight:600}.sidebar-footer button{background:none;border:none;color:#fff9;cursor:pointer;font-size:.85rem}.sidebar-footer button:hover{color:#fff}.main-content{flex:1;min-width:0;min-height:0;padding:1.5rem 2rem;overflow-y:auto}.main-content-inner{max-width:1200px;margin:0 auto;width:100%}.main-content .inline-download{color:var(--accent);font-weight:600;text-decoration:underline}.main-content .inline-download:hover{color:var(--accent-hover)}.main-content .inline-download code{color:inherit;font-weight:inherit}.page-header{margin-bottom:1.5rem}.page-header h1{font-size:1.5rem;font-weight:700}.page-header p{color:var(--text-muted);margin-top:.25rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;margin-bottom:1rem}.card h3{font-size:1.05rem;font-weight:600;margin-bottom:.75rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem 1rem}.form-group{display:flex;flex-direction:column;gap:.25rem}.form-group label{font-weight:600;font-size:.85rem;color:var(--text-muted)}.form-group input,.form-group select,.form-group textarea{padding:.5rem .6rem;border:1px solid var(--input-border);border-radius:var(--radius);background:var(--input-bg);font-size:.9rem;transition:border-color .15s}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #3b82f626}.form-group .error-hint{font-size:.78rem;color:var(--danger)}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}.btn-outline{background:transparent;border:1px solid var(--input-border);color:var(--text)}.btn-outline:hover{background:var(--bg)}.btn-sm{padding:.3rem .65rem;font-size:.8rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-group{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.data-table{width:100%;border-collapse:collapse;font-size:.88rem}.data-table th{text-align:left;padding:.5rem .6rem;border-bottom:2px solid var(--border);font-weight:600;color:var(--text-muted);white-space:nowrap}.data-table td{padding:.4rem .6rem;border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:hover{background:var(--accent-light)}.data-table input,.data-table select{width:100%;padding:.3rem .4rem;border:1px solid var(--input-border);border-radius:3px;font-size:.85rem}.data-table input:focus,.data-table select:focus{outline:none;border-color:var(--accent)}.row-num{color:var(--text-muted);text-align:center;width:32px}.row-action{width:36px;text-align:center}.tabs-bar{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:1rem}.tab-btn{padding:.5rem 1rem;border:none;background:none;font-size:.9rem;font-weight:600;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--text)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.msg{padding:.6rem .8rem;border-radius:var(--radius);margin-bottom:.75rem;font-size:.88rem}.msg-error{background:#fef2f2;border:1px solid #fecaca;color:var(--danger)}.msg-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#16a34a}.msg-info{background:var(--accent-light);border:1px solid #bfdbfe;color:var(--accent)}.msg-warning{background:#fffbeb;border:1px solid #fcd34d;color:#92400e}.login-wrapper{display:flex;align-items:center;justify-content:center;min-height:100%;height:100%;background:var(--bg)}.login-card{width:360px;padding:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px #00000014}.login-card h1{font-size:1.25rem;margin-bottom:1.25rem;text-align:center}.login-card .form-group{margin-bottom:.75rem}.login-card .btn{width:100%;justify-content:center}.expand-toggle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--accent);font-weight:600;font-size:2em;line-height:1;width:1em}.expandable-row-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.expandable-row-summary{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;border-radius:var(--radius)}.expandable-row-summary:focus:not(:focus-visible){outline:none}.expandable-row-summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.expandable-row-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.expand-detail{background:#f8fafc;border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin:.5rem 0}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem}.detail-item{font-size:.85rem}.detail-item strong{display:block;color:var(--text-muted);font-size:.78rem;margin-bottom:.1rem}.loading{text-align:center;padding:2rem;color:var(--text-muted)}.empty-state{text-align:center;padding:3rem;color:var(--text-muted)}.step-indicator{display:flex;gap:1rem;margin-bottom:1.25rem;font-size:.9rem}.step{padding:.35rem .75rem;border-radius:999px;font-weight:600}.step.active{background:var(--accent);color:#fff}.step.completed{background:var(--success);color:#fff}.step.pending{background:var(--border);color:var(--text-muted)}.help-inline{margin-top:.35rem;margin-bottom:.75rem;font-size:.8rem;color:var(--text-muted)}.cell-with-copy{display:flex;align-items:center;gap:2px}.cell-with-copy input,.cell-with-copy select{flex:1;min-width:0}.copy-all-btn{flex-shrink:0;width:18px;height:18px;padding:0;border:none;border-radius:3px;background:#3b82f61f;color:#3b82f68c;font-size:.65rem;line-height:18px;text-align:center;cursor:pointer;transition:background .15s,color .15s}.copy-all-btn:hover{background:#3b82f640;color:#3b82f6d9}.file-drop-zone{border:2px dashed var(--input-border);border-radius:var(--radius);padding:1rem;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;background:var(--bg-card)}.file-drop-zone-bulk{min-height:140px;display:flex;align-items:center}.file-drop-zone-bulk .file-drop-zone-body{width:100%}.file-drop-zone:hover,.file-drop-zone:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #3b82f61f}.file-drop-zone--active{border-color:var(--accent);background:var(--accent-light)}.file-drop-zone--filled{border-style:solid;border-color:#bbf7d0;background:#f0fdf4}.file-drop-zone--busy{opacity:.65;cursor:wait;pointer-events:none}.file-drop-zone-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.file-drop-zone-body strong{display:block;font-size:.9rem;margin-bottom:.25rem}.file-drop-zone-desc{font-size:.78rem;color:var(--text-muted);margin-bottom:.5rem;line-height:1.4}.file-drop-zone-hint{font-size:.82rem;color:var(--text-muted)}.chart-files-summary{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border)}.chart-files-summary-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem .75rem;margin-bottom:.65rem}.chart-files-summary-heading .chart-files-summary-title{margin:0}.chart-files-summary-heading-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.chart-files-summary-title{font-size:.85rem;font-weight:600;color:var(--text-muted);margin-bottom:.65rem}.chart-files-summary-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.chart-files-summary-row{display:flex;gap:.75rem;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;padding:.5rem .65rem;background:#f8fafc;border:1px solid var(--border);border-radius:var(--radius)}.chart-files-summary-row--stack{flex-direction:column;align-items:stretch}.chart-files-summary-slot-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem}.chart-files-summary-slot-head .chart-files-summary-text,.chart-files-summary-files{flex:1;min-width:0}.chart-files-file-list{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.chart-files-file-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:nowrap;font-size:.82rem;min-width:0}.chart-files-filename-wrap{min-width:0;flex:1;overflow-x:auto;overscroll-behavior-x:contain}.chart-files-summary-text{flex:1;min-width:160px}.chart-files-summary-name{display:block;font-weight:600;font-size:.85rem;margin-bottom:.15rem}.chart-files-summary-desc{display:block;font-size:.76rem;color:var(--text-muted);line-height:1.35}.chart-files-summary-file{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;max-width:100%}.chart-files-summary-filename{font-size:.8rem;white-space:nowrap;display:inline}.chart-files-summary-missing{font-size:.8rem;color:var(--text-muted);font-style:italic}.chart-files-summary-size{font-weight:400;color:var(--text-muted);font-size:.75rem;white-space:nowrap}.charting-data-drop-zone{margin-top:.5rem}.charting-hint-pre{white-space:pre-wrap;font-size:.85rem}.charting-submission-select{margin-top:1rem}.charting-submission-select .form-control{width:100%;max-width:42rem}.charting-submission-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;margin-top:.5rem}.charting-broker-table{width:100%;border-collapse:collapse;font-size:.88rem;margin-top:.5rem}.charting-broker-table th,.charting-broker-table td{padding:.4rem .5rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}.charting-broker-table th{font-weight:600;color:var(--text-muted);font-size:.8rem}.charting-broker-table input.form-control{font-size:.88rem}.chart-preview-placeholder{min-height:220px;border:2px dashed var(--border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;padding:1.5rem;text-align:center;color:var(--text-muted);font-size:.9rem;background:#f8fafc}.chart-preview-placeholder--plots{padding:0;min-height:0;display:block;text-align:left;background:transparent;align-items:stretch;justify-content:flex-start}.chart-preview-placeholder--plots .charting-plot-stack{margin:0}body:has(.chart-history-view-page){height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}#root:has(.chart-history-view-page){height:auto;min-height:100%}.chart-history-view-page{min-height:100vh;padding:1rem 1.5rem 2rem;background:var(--bg, #f1f5f9);box-sizing:border-box}.chart-history-view-page.loading,.chart-history-view-page.msg{max-width:40rem;margin:2rem auto}.chart-history-view-page .charting-plot-stack{margin:0}
