*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:#f5f6f8;color:#1c2430}.topbar{display:flex;align-items:center;gap:24px;padding:12px 24px;background:#1c2430;color:#fff}.topbar .brand{font-weight:700;color:#fff;text-decoration:none}.topbar nav{display:flex;gap:16px;flex:1}.topbar nav a{color:#cfd8e3;text-decoration:none}.topbar nav a:hover,.topbar nav a.active{color:#fff}.topbar .user{display:flex;gap:12px;align-items:center;font-size:14px}main{max-width:1400px;margin:24px auto;padding:0 16px}h1{font-size:22px}h2{font-size:16px;margin:24px 0 8px}table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:8px}thead tr:first-child th:first-child{border-top-left-radius:8px}thead tr:first-child th:last-child{border-top-right-radius:8px}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #e7eaf0;font-size:14px}th{background:#eef1f5}button{cursor:pointer;border:none;border-radius:6px;padding:8px 14px;font-size:14px;background:#2563eb;color:#fff}button.secondary{background:#e7eaf0;color:#1c2430}button.danger{background:#dc2626}button.small{padding:4px 10px;font-size:12px}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{padding:8px;border:1px solid #cfd8e3;border-radius:6px;font-size:14px;width:100%}input:disabled{background:#eef1f5;color:#55627a}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;background:#fff;padding:16px;border-radius:8px}.field label{display:block;font-size:12px;color:#55627a;margin-bottom:4px}.line-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:8px;margin-bottom:8px;align-items:center}.line-row-header{font-size:12px;font-weight:600;color:#55627a;margin-bottom:4px}.actions{display:flex;gap:12px;margin:24px 0}.totals{background:#fff;border-radius:8px;padding:16px}.totals table{box-shadow:none}.totals .final{font-weight:700;font-size:16px}.error{color:#dc2626;margin:12px 0}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.field small{display:block;margin-top:4px}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.module-card{display:block;background:#fff;border-radius:8px;padding:20px;text-decoration:none;color:inherit;box-shadow:0 1px 2px #0000000f;transition:box-shadow .15s,transform .15s}.module-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.module-card h2{margin:0 0 8px;color:#2563eb}.module-card p{margin:0;font-size:14px;color:#55627a}.subnav{display:flex;gap:16px;margin-bottom:16px;border-bottom:1px solid #e7eaf0;padding-bottom:8px}.subnav a{color:#55627a;text-decoration:none;font-size:14px}.subnav a:hover,.subnav a.active{color:#2563eb;font-weight:600}.percent-input{position:relative;display:flex;align-items:center}.percent-input input{padding-right:26px}.percent-input-suffix{position:absolute;right:10px;color:#55627a;font-size:13px;pointer-events:none}.search-select{position:relative}.search-select-list{position:absolute;top:100%;left:0;right:0;z-index:30;margin:4px 0 0;padding:4px;list-style:none;background:#fff;border:1px solid #cfd8e3;border-radius:6px;max-height:220px;overflow:auto;box-shadow:0 4px 12px #0000001f}.search-select-option{padding:6px 8px;border-radius:4px;cursor:pointer;font-size:14px}.search-select-option.highlighted,.search-select-option:hover{background:#eef1f5}.search-select-empty{padding:6px 8px;font-size:13px;color:#55627a}.tooltip-wrapper{position:relative}.tooltip-balloon{display:none;position:absolute;bottom:100%;left:0;margin-bottom:8px;background:#1c2430;color:#fff;padding:6px 10px;border-radius:6px;font-size:12px;line-height:1.4;width:max-content;max-width:260px;z-index:20;box-shadow:0 2px 6px #0003;pointer-events:none}.tooltip-balloon:after{content:"";position:absolute;top:100%;left:14px;border:6px solid transparent;border-top-color:#1c2430}.tooltip-wrapper:hover .tooltip-balloon,.tooltip-wrapper:focus-within .tooltip-balloon{display:block}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c243080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-box{background:#fff;border-radius:8px;padding:20px;width:100%;max-width:520px;max-height:85vh;overflow:auto;box-shadow:0 8px 24px #00000040}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-header h3{margin:0;font-size:16px}.modal-close{padding:2px 8px}.status-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.status-badge.status-draft{background:#e7eaf0;color:#55627a}.status-badge.status-sent{background:#fef3c7;color:#92610a}.status-badge.status-approved{background:#d1fae5;color:#065f46}.status-badge.status-in-production{background:#dbeafe;color:#1e40af}.status-badge.status-rejected{background:#fee2e2;color:#991b1b}.filter-toggle{display:inline-flex;align-items:center;gap:4px;margin-bottom:12px;font-size:14px;cursor:pointer}tr.out-of-stock td{color:#8a94a6}.list-filters{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:12px}.list-filters .filter-toggle{margin-bottom:0}.list-search{flex:1 1 260px;max-width:420px}tr.group-row th{background:#f3f6fa;text-align:left;font-size:13px;font-weight:600;color:#2b3445;padding-top:10px}.group-count{color:#8a94a6;font-weight:400}.rolo-picker{display:flex;flex-direction:column;gap:4px}.rolo-picker input{font-size:13px;padding:4px 8px}.color-swatch{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid #cfd8e3;vertical-align:middle;margin-right:6px;flex-shrink:0}.color-swatch.large{width:28px;height:28px;margin:0}.color-field{display:flex;align-items:center;width:100%;padding:8px;text-align:left;background:#fff;color:#1c2430;border:1px solid #cfd8e3}.color-field-placeholder{color:#8a94a6}.color-palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}.color-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 4px;background:#fff;color:#1c2430;border:2px solid transparent;font-size:12px}.color-option:hover{background:#eef1f5}.color-option.selected{border-color:#2563eb}.color-custom{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid #e7eaf0}.color-custom label{font-size:13px;color:#55627a}.color-custom input[type=color]{width:48px;height:32px;padding:2px}.topbar .pending-link{position:relative;display:inline-flex;align-items:center;margin-right:12px;color:inherit}.topbar .pending-badge{position:absolute;top:-6px;right:-10px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#dc2626;color:#fff;font-size:11px;line-height:18px;text-align:center}.pending-card{border:1px solid #e5e7eb;border-radius:8px;padding:12px 16px;margin:12px 0}.pending-card header{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.pending-card header h2{margin:0;font-size:1.1rem}.pending-card header span,.pending-note,.pending-message{color:#6b7280;font-size:.9rem}.pending-actions{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}td.row-actions{white-space:nowrap;width:1%;text-align:right;padding-top:6px;padding-bottom:6px}td.row-actions .icon-button+.icon-button{margin-left:6px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;vertical-align:middle}.color-dot{display:inline-block;width:22px;height:22px;border-radius:50%;border:1px solid #cfd8e3;vertical-align:middle;cursor:default}.has-tip{position:relative}.has-tip:after{content:attr(data-tip);display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:#1c2430;color:#fff;padding:4px 8px;border-radius:6px;font-size:12px;line-height:1.4;white-space:nowrap;font-weight:400;z-index:20;box-shadow:0 2px 6px #0003;pointer-events:none}.has-tip:hover:after,.has-tip:focus-visible:after{display:block}.slicer-cell{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.color-name{display:inline-flex;align-items:center;gap:8px;max-width:220px;vertical-align:middle}.color-name .color-dot{flex-shrink:0}.color-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
