:root{--accent:#0078d4;--accent-hover:#106ebe;--accent-pressed:#005a9e;--accent-tint:#deecf9;--accent-wash:#eff6fc;--danger:#b3261e;--bg:#f3f2f1;--surface:#fff;--surface-alt:#faf9f8;--border:#e1dfdd;--border-strong:#c8c6c4;--text:#323130;--text-secondary:#605e5c;--text-disabled:#a19f9d;--hover:#f3f2f1;--selected:#edebe9;--shadow:0 1.6px 3.6px #00000021, 0 .3px .9px #0000001c;--radius:2px;--font:"Segoe UI", "Segoe UI Web (West European)", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;color:var(--text);background:var(--bg);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--accent);color:#fff;box-shadow:var(--shadow);align-items:center;gap:1rem;padding:.65rem 1.25rem;display:flex}.brand{align-items:center;gap:.65rem;min-width:0;display:flex}.brand h1{letter-spacing:-.01em;white-space:nowrap;margin:0;font-size:1.15rem;font-weight:600}.brand p{opacity:.9;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.75rem;overflow:hidden}.toolbar{flex-wrap:wrap;align-items:center;gap:.4rem;margin-left:auto;display:flex}.btn{appearance:none;border-radius:var(--radius);color:var(--accent);background:#fff;border:1px solid #0000;padding:.35rem .75rem;font-size:.8125rem;font-weight:600;transition:background .12s,border-color .12s,color .12s}.btn:hover{background:var(--accent-wash)}.btn-ghost{color:#fff;background:0 0;border-color:#ffffff73}.btn-ghost:hover{background:#ffffff1f}.btn-primary{color:var(--accent);background:#fff}.layout{flex:1;grid-template-columns:280px minmax(0,1fr);gap:.75rem;min-height:0;padding:.75rem;display:grid}@media (width<=960px){.layout{grid-template-columns:1fr}.source-table thead th,.pivot-table thead th,.pivot-table tbody th{position:static}.topbar{flex-direction:column;align-items:stretch;gap:.75rem;padding:.75rem 1rem}.brand{flex-shrink:0}.brand p{display:none}.toolbar{justify-content:flex-start;width:100%;margin-left:0}}@media (width<=480px){.topbar{gap:.6rem;padding:.65rem .75rem}.brand h1{font-size:1rem}.toolbar{grid-template-columns:1fr 1fr;gap:.35rem;display:grid}.toolbar .btn{text-align:center;white-space:nowrap;text-overflow:ellipsis;padding:.4rem .5rem;font-size:.75rem;overflow:hidden}.toolbar .btn-primary{grid-column:1/-1}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;min-height:0;display:flex}.panel-header{border-bottom:1px solid var(--border);background:var(--surface-alt);justify-content:space-between;align-items:center;gap:.5rem;padding:.65rem .85rem;display:flex}.panel-header h2{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin:0;font-size:.8125rem;font-weight:600}.panel-body{flex:1;padding:.75rem;overflow:auto}.field-list{flex-direction:column;gap:.65rem;display:flex}.available-fields{flex-wrap:wrap;gap:.35rem;display:flex}.chip{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);-webkit-user-select:none;user-select:none;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:600;display:inline-flex}.chip[draggable=true]{cursor:grab}.chip:active[draggable=true]{cursor:grabbing}.chip-value{border-color:var(--accent);background:var(--accent-wash);color:var(--accent-pressed)}.drop-zone{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface-alt);min-height:52px;padding:.5rem;transition:border-color .12s,background .12s}.drop-zone.active{border-color:var(--accent);background:var(--accent-wash)}.drop-zone-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.35rem;font-size:.7rem;font-weight:700}.drop-zone-items{flex-wrap:wrap;gap:.35rem;min-height:1.5rem;display:flex}.drop-empty{color:var(--text-disabled);font-size:.75rem}.chip-actions{gap:.15rem;margin-left:.15rem;display:inline-flex}.icon-btn{appearance:none;color:var(--text-secondary);background:0 0;border:none;place-items:center;width:1rem;height:1rem;padding:0;font-size:.85rem;line-height:1;display:inline-grid}.icon-btn:hover{color:var(--accent)}.agg-select{border:1px solid var(--border);border-radius:var(--radius);background:#fff;max-width:5.5rem;padding:.05rem .2rem;font-size:.65rem}.options-grid{gap:.4rem;font-size:.8125rem;display:grid}.options-grid label{color:var(--text-secondary);align-items:center;gap:.4rem;display:flex}.main-stack{flex-direction:column;gap:.75rem;min-width:0;display:flex}.workspace-toolbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.55rem .75rem;display:flex}.workspace-toolbar label{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.75rem;display:inline-flex}.workspace-toolbar select{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:.25rem .4rem}.toolbar-label{color:var(--text-secondary);margin-right:.15rem;font-size:.75rem}.chart-type-group{flex-wrap:wrap;align-items:center;gap:.2rem;display:inline-flex}.seg-btn{appearance:none;border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius);background:#fff;padding:.28rem .55rem;font-size:.75rem;font-weight:600}.seg-btn:hover{border-color:var(--accent);color:var(--accent)}.seg-btn-active{background:var(--accent);border-color:var(--accent);color:#fff}.seg-btn-active:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.add-to-select{color:var(--accent);cursor:pointer;background:0 0;border:none;max-width:3.4rem;padding:0;font-size:.65rem;font-weight:700}.status{color:var(--text-secondary);margin-left:auto;font-size:.75rem}.table-wrap{max-height:min(52vh,560px);overflow:auto}.pivot-table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.8125rem}.pivot-table th,.pivot-table td{border:1px solid var(--border);white-space:nowrap;padding:.35rem .55rem}.pivot-table thead th{background:var(--accent);color:#fff;z-index:2;font-weight:600;position:sticky;top:0}.pivot-table thead th.total-col{background:var(--accent-pressed);color:#fff}.pivot-table tbody th{background:var(--accent-wash);color:var(--accent-pressed);text-align:left;z-index:1;font-weight:600;position:sticky;left:0}.pivot-table td{text-align:right;font-variant-numeric:tabular-nums;background:var(--surface)}.pivot-table tr:hover td{background:var(--accent-wash)}.pivot-table .total-row th,.pivot-table .total-row td,.pivot-table tbody td.total-col{background:var(--selected);font-weight:700}.pivot-table .total-row th{background:var(--accent-tint)}.empty-state{text-align:center;color:var(--text-secondary);padding:2rem 1rem;font-size:.9rem}.chart-wrap{width:100%;height:320px;padding:.5rem .25rem .25rem}.filter-block{border-top:1px solid var(--border);margin-top:.25rem;padding-top:.65rem}.filter-block h3{color:var(--text-secondary);margin:0 0 .4rem;font-size:.75rem}.filter-field{margin-bottom:.5rem}.filter-field summary{cursor:pointer;color:var(--accent);font-size:.8rem;font-weight:600}.filter-values{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-alt);flex-direction:column;gap:.2rem;max-height:140px;margin-top:.35rem;padding:.35rem;display:flex;overflow:auto}.filter-values label{align-items:center;gap:.35rem;font-size:.75rem;display:flex}.error{z-index:20;width:max-content;max-width:min(32rem,100vw - 2rem);color:var(--danger);background:var(--surface);border:1px solid var(--danger);border-radius:var(--radius);box-shadow:var(--shadow);padding:.5rem .75rem;font-size:.85rem;position:fixed;bottom:1rem;left:50%;transform:translate(-50%)}.site-footer{text-align:center;margin-top:auto;padding:1rem 1.25rem;font-size:.8rem}.site-footer a,.site-footer a:hover{color:var(--text-secondary);text-decoration:none}.file-input{display:none}.panel-meta{color:var(--text-secondary);font-size:.75rem}.data-editor-panel{padding-top:.5rem}.data-editor-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.data-editor-hint{color:var(--text-secondary);font-size:.8rem}.data-editor-actions{flex-wrap:wrap;gap:.35rem;display:flex}.btn-secondary{appearance:none;border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--accent);background:#fff;padding:.3rem .65rem;font-size:.75rem;font-weight:600}.btn-secondary:hover:not(:disabled){border-color:var(--accent);background:var(--accent-wash)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.source-table-wrap{border:1px solid var(--border);border-radius:var(--radius);max-height:220px;overflow:auto}.source-table{border-collapse:collapse;width:100%;min-width:max-content;font-size:.8125rem}.source-table th,.source-table td{border:1px solid var(--border);background:var(--surface);padding:0}.source-table thead th{background:var(--accent-wash);z-index:1;position:sticky;top:0}.source-col-header{align-items:center;gap:.15rem;min-width:0;display:flex}.source-row-actions{text-align:center;background:var(--surface-alt);width:2rem}.source-header-input,.source-cell-input{background:0 0;border:none;width:100%;min-width:5.5rem;padding:.35rem .45rem;font-size:.8125rem}.source-header-input{min-width:0;color:var(--accent-pressed);flex:1;font-weight:600}.source-header-input:focus,.source-cell-input:focus{outline:2px solid var(--accent);outline-offset:-2px;background:#fff}.source-table th .col-remove{flex-shrink:0}.paste-csv-block{gap:.4rem;margin-top:.75rem;display:grid}.paste-csv-label{color:var(--text-secondary);font-size:.75rem;font-weight:600}.paste-csv-input{border:1px solid var(--border);border-radius:var(--radius);resize:vertical;background:var(--surface-alt);width:100%;min-height:4.5rem;padding:.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem}.paste-csv-input:focus{outline:2px solid var(--accent);outline-offset:0;background:#fff}
