:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,sans-serif;background:#f5f6f8;color:#1a1a2e}.app{max-width:1300px;margin:0 auto;padding:2rem 1.5rem}h1{font-size:1.6rem;margin-bottom:1.5rem;font-weight:700}.filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem;margin-bottom:1rem}.filter-grid .wide{grid-column:span 2}fieldset{border:1px solid #dde1e7;border-radius:8px;padding:.55rem .75rem .65rem;background:#fff}legend{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#888;padding:0 4px}fieldset input[type=text],fieldset input[type=date]{width:100%;border:none;outline:none;font-size:.9rem;background:transparent;color:#1a1a2e;padding:2px 0}fieldset input[type=text]::placeholder{color:#aaa}.date-range{display:flex;align-items:center;gap:6px}.date-range input{flex:1;min-width:0}.date-range span{color:#bbb;flex-shrink:0}.actions{display:flex;gap:.75rem;margin-bottom:1.5rem}.btn-primary{padding:.5rem 1.6rem;background:#4f6ef7;color:#fff;border:none;border-radius:7px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary:hover:not(:disabled){background:#3a57e8}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{padding:.5rem 1.2rem;background:transparent;color:#555;border:1px solid #d0d5dd;border-radius:7px;font-size:.95rem;font-weight:500;cursor:pointer;transition:border-color .15s,color .15s}.btn-ghost:hover{border-color:#999;color:#222}.multiselect{position:relative}.multiselect-trigger{display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-size:.9rem;padding:2px 0;min-height:24px;-webkit-user-select:none;user-select:none}.multiselect-trigger .placeholder{color:#aaa}.multiselect-trigger .chevron{font-size:.6rem;color:#aaa;margin-left:4px;flex-shrink:0}.multiselect-dropdown{position:absolute;top:calc(100% + 8px);left:-12px;min-width:240px;background:#fff;border:1px solid #dde1e7;border-radius:8px;box-shadow:0 6px 20px #0000001a;z-index:100;overflow:hidden}.multiselect-search{width:100%;border:none;border-bottom:1px solid #eee;padding:8px 12px;font-size:.875rem;outline:none}.multiselect-clear{display:block;width:100%;background:none;border:none;border-bottom:1px solid #eee;padding:5px 12px;font-size:.78rem;color:#e74c3c;cursor:pointer;text-align:left}.multiselect-clear:hover{background:#fff5f5}.multiselect-dropdown ul{list-style:none;max-height:240px;overflow-y:auto}.multiselect-dropdown li{display:flex;align-items:center;gap:8px;padding:7px 12px;font-size:.875rem;cursor:pointer;transition:background .1s}.multiselect-dropdown li:hover{background:#f5f7ff}.multiselect-dropdown li.selected{background:#eef1ff;font-weight:600}.multiselect-dropdown li.no-results{color:#aaa;cursor:default}.multiselect-dropdown li.no-results:hover{background:none}.multiselect-dropdown .check{width:14px;color:#4f6ef7;font-size:.8rem;flex-shrink:0}.multiselect-dropdown li.stage-group{display:block;padding:0;cursor:default;background:none}.multiselect-dropdown li.stage-group:hover{background:none}.stage-parent{display:flex;align-items:center;gap:8px;padding:7px 12px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .1s;background:#f8f9fb}.stage-parent:hover{background:#eef1ff}.stage-parent.selected{background:#eef1ff;color:#4f6ef7}.stage-parent-name{flex:1}.collapse-btn{font-size:.75rem;color:#999;padding:0 4px;flex-shrink:0}.collapse-btn:hover{color:#4f6ef7}.substage-list{list-style:none;border-top:1px solid #f0f0f0}.substage-list li{padding:6px 12px 6px 32px;font-size:.85rem;color:#444}.substage-list li.selected{background:#eef1ff;font-weight:600}.substage-list li:hover{background:#f5f7ff}li.substage{padding-left:28px;font-size:.85rem}li.parent-stage{font-weight:600}.summary{display:flex;gap:2rem;margin-bottom:.75rem;font-size:.95rem;color:#555}.summary strong{color:#1a1a2e}.table-wrap{overflow:auto;border-radius:8px;border:1px solid #e2e6ea;background:#fff;max-height:calc(100vh - 320px);min-height:200px}table{width:100%;border-collapse:collapse;font-size:.84rem}thead tr{background:#f0f2f5;position:sticky;top:0;z-index:10}th{text-align:left;padding:.6rem .75rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#777;white-space:nowrap;border-bottom:1px solid #e2e6ea}td{padding:.35rem .75rem;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}tr.row-first td{border-top:1px solid #eaedf0}tr.row-cont td{color:#888}tr.row-cont td.col-product,tr.row-cont td.col-product-id,tr.row-cont td.col-price,tr.row-cont td.col-qty,tr.row-cont td.col-revenue,tr.row-cont td.col-item-gp{color:#333}tr.row-cont td.col-item-gp.gp-precise{color:#2d7a4f}tr.row-cont td.col-item-gp.gp-estimated{color:#b8860b}tr.row-cont td.col-item-gp.gp-error{color:#c0392b}tr:hover td{background:#f7f9fc}.monospace{font-family:monospace;font-size:.8rem;color:#666}.order-total{font-weight:700;color:#1a1a2e}.spinner{display:inline-block;width:12px;height:12px;border:2px solid #d0d5dd;border-top-color:#4f6ef7;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.gp-precise{color:#2d7a4f;font-weight:600}.gp-estimated{color:#b8860b;font-weight:600;font-style:italic}.gp-error{color:#c0392b;font-weight:600;font-style:italic}.table-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;gap:1rem;flex-wrap:wrap}.gp-legend{display:flex;gap:1.2rem;font-size:.8rem;color:#555;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:4px}.legend-dot{font-size:1rem;line-height:1}.col-chooser{position:relative}.col-chooser-btn{padding:.3rem .8rem;font-size:.82rem}.col-chooser-dropdown{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid #dde1e7;border-radius:8px;box-shadow:0 6px 20px #0000001a;z-index:200;padding:6px 0;min-width:170px}.col-chooser-hint{padding:4px 14px 6px;font-size:.72rem;color:#aaa;border-bottom:1px solid #f0f0f0;margin-bottom:2px}.col-chooser-item{display:flex;align-items:center;gap:8px;padding:5px 14px;font-size:.85rem;cursor:grab;white-space:nowrap;-webkit-user-select:none;user-select:none}.col-chooser-item:hover{background:#f5f7ff}.col-chooser-item.drag-over{background:#e8ecff;border-top:2px solid #4f6ef7}.col-chooser-item input{cursor:pointer}.drag-handle{color:#ccc;font-size:1rem;cursor:grab;flex-shrink:0}.col-chooser-item:hover .drag-handle{color:#999}.col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px;cursor:col-resize;-webkit-user-select:none;user-select:none}.col-resize-handle:hover{background:#4f6ef740}th{position:relative;overflow:hidden;background:#f0f2f5}.error{color:#c0392b;background:#fdf3f2;border:1px solid #f5c6c2;border-radius:6px;padding:.7rem 1rem;margin-bottom:1rem;font-size:.9rem}.modal-backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:10px;box-shadow:0 8px 40px #0000002e;width:min(900px,95vw);max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border-bottom:1px solid #e5e7eb;flex-shrink:0}.modal-header h2{margin:0;font-size:1.1rem;flex:1}.modal-count{font-size:.9rem;color:#888;font-weight:400}.modal-sort{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:#555}.modal-close{background:none;border:none;font-size:1.2rem;cursor:pointer;color:#888;padding:.2rem .4rem;border-radius:4px}.modal-close:hover{background:#f0f0f0;color:#333}.modal-table-wrap{overflow-y:auto;flex:1}.modal-table-wrap table{width:100%;border-collapse:collapse;font-size:.88rem}.modal-table-wrap th{background:#f0f2f5;padding:.5rem .75rem;text-align:left;position:sticky;top:0}.modal-table-wrap td{padding:.45rem .75rem;border-bottom:1px solid #f0f0f0}.modal-empty{padding:2rem;text-align:center;color:#888}.btn-sm{padding:.2rem .6rem;font-size:.8rem}.gp-badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.8rem;font-weight:500}.gp-badge.gp-error{background:#fde8e8;color:#c0392b}.gp-badge.gp-estimated{background:#fef9e7;color:#b7770d}
