diff --git a/web/audit/audit-report.json b/web/audit/audit-report.json index d8e8372..02544dd 100644 --- a/web/audit/audit-report.json +++ b/web/audit/audit-report.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-08-28T11:58:18.224Z", + "generatedAt": "2026-08-28T14:54:53.564Z", "ours": "http://127.0.0.1:5179/preview/demo", "ref": "C:\\+XBOCTuK\\+life_projects\\easy-png-tools\\refs-html\\demo.html", "tokenDiffs": { @@ -161,7 +161,123 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(2)>div:nth-child(4)>button:nth-child(1)", + "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(1)", + "tag": "a", + "text": "Workspace", + "deltas": { + "fontSize": { + "ours": "12px", + "ref": "10px" + }, + "letterSpacing": { + "ours": "0.48px", + "ref": "normal" + }, + "rect": { + "ours": { + "x": 513, + "y": 24, + "w": 69, + "h": 15 + }, + "ref": { + "x": 792, + "y": 26, + "w": 49, + "h": 12 + } + } + } + }, + { + "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(2)", + "tag": "a", + "text": "Catalog", + "deltas": { + "fontSize": { + "ours": "12px", + "ref": "10px" + }, + "letterSpacing": { + "ours": "0.48px", + "ref": "normal" + }, + "rect": { + "ours": { + "x": 600, + "y": 24, + "w": 54, + "h": 15 + }, + "ref": { + "x": 864, + "y": 26, + "w": 39, + "h": 12 + } + } + } + }, + { + "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(3)", + "tag": "a", + "text": "Gradient", + "deltas": { + "fontSize": { + "ours": "12px", + "ref": "10px" + }, + "letterSpacing": { + "ours": "0.48px", + "ref": "normal" + }, + "rect": { + "ours": { + "x": 672, + "y": 24, + "w": 61, + "h": 15 + }, + "ref": { + "x": 924, + "y": 26, + "w": 44, + "h": 12 + } + } + } + }, + { + "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(4)", + "tag": "a", + "text": "Background remover", + "deltas": { + "fontSize": { + "ours": "12px", + "ref": "10px" + }, + "letterSpacing": { + "ours": "0.48px", + "ref": "normal" + }, + "rect": { + "ours": { + "x": 751, + "y": 24, + "w": 138, + "h": 15 + }, + "ref": { + "x": 990, + "y": 26, + "w": 99, + "h": 12 + } + } + } + }, + { + "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(3)>div:nth-child(4)>button:nth-child(1)", "tag": "button", "text": "RU", "deltas": { @@ -172,7 +288,7 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(2)>div:nth-child(4)>button:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(3)>div:nth-child(4)>button:nth-child(2)", "tag": "button", "text": "EN", "deltas": { @@ -251,7 +367,7 @@ "text": "Build your image pipeline.", "deltas": { "lineHeight": { - "ours": "normal", + "ours": "51.84px", "ref": "57.6px" }, "rect": { @@ -259,7 +375,7 @@ "x": 58, "y": 155, "w": 474, - "h": 150 + "h": 104 }, "ref": { "x": 58, @@ -278,7 +394,7 @@ "rect": { "ours": { "x": 58, - "y": 321, + "y": 275, "w": 474, "h": 51 }, @@ -299,7 +415,7 @@ "rect": { "ours": { "x": 597, - "y": 347, + "y": 300, "w": 66, "h": 14 }, @@ -320,7 +436,7 @@ "rect": { "ours": { "x": 671, - "y": 347, + "y": 300, "w": 40, "h": 14 }, @@ -338,10 +454,6 @@ "tag": "span", "text": "PROCESSING PIPELINE", "deltas": { - "fontWeight": { - "ours": "500", - "ref": "400" - }, "letterSpacing": { "ours": "1px", "ref": "1.2px" @@ -357,7 +469,7 @@ "rect": { "ours": { "x": 58, - "y": 428, + "y": 382, "w": 154, "h": 12 }, @@ -378,7 +490,7 @@ "rect": { "ours": { "x": 175, - "y": 451, + "y": 405, "w": 36, "h": 13 }, @@ -392,20 +504,32 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(1)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "01", "deltas": { + "fontSize": { + "ours": "22px", + "ref": "11px" + }, + "fontWeight": { + "ours": "600", + "ref": "400" + }, "padding": { "ours": "0px", "ref": "17px 0px 0px 15px" }, + "lineHeight": { + "ours": "22px", + "ref": "normal" + }, "rect": { "ours": { - "x": 95, - "y": 504, - "w": 13, - "h": 14 + "x": 74, + "y": 464, + "w": 26, + "h": 22 }, "ref": { "x": 59, @@ -417,7 +541,7 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(1)>span:nth-child(3)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "BACKGROUND", "deltas": { @@ -427,9 +551,9 @@ }, "rect": { "ours": { - "x": 116, - "y": 504, - "w": 72, + "x": 117, + "y": 455, + "w": 171, "h": 13 }, "ref": { @@ -442,18 +566,14 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(1)>span:nth-child(4)", - "tag": "span", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)", + "tag": "h2", "text": "Gradient background", "deltas": { - "margin": { - "ours": "0px", - "ref": "5px 0px 18px" - }, "rect": { "ours": { - "x": 196, - "y": 501, + "x": 117, + "y": 473, "w": 171, "h": 19 }, @@ -467,17 +587,25 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(1)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>button:nth-child(1)", "tag": "button", - "text": "100", + "text": "100%", "deltas": { + "color": { + "ours": "rgb(255, 255, 255)", + "ref": "rgb(23, 33, 43)" + }, + "backgroundColor": { + "ours": "rgb(23, 105, 210)", + "ref": "rgba(0, 0, 0, 0)" + }, "padding": { "ours": "0px 11.2px", "ref": "0px" }, "letterSpacing": { "ours": "0.6px", - "ref": "normal" + "ref": "0.8px" }, "display": { "ours": "flex", @@ -485,134 +613,47 @@ }, "rect": { "ours": { - "x": 491, - "y": 590, - "w": 42, + "x": 518, + "y": 552, + "w": 49, "h": 30 }, "ref": { - "x": 520, - "y": 567, - "w": 46, - "h": 30 + "x": 680, + "y": 546, + "w": 25, + "h": 12 } } } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(2)", - "tag": "button", - "text": "75", - "deltas": { - "padding": { - "ours": "0px 11.2px", - "ref": "0px" - }, - "letterSpacing": { - "ours": "0.6px", - "ref": "normal" - }, - "display": { - "ours": "flex", - "ref": "block" - }, - "rect": { - "ours": { - "x": 533, - "y": 590, - "w": 37, - "h": 30 - }, - "ref": { - "x": 566, - "y": 567, - "w": 46, - "h": 30 - } - } - } - }, - { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(3)", - "tag": "button", - "text": "50", - "deltas": { - "padding": { - "ours": "0px 11.2px", - "ref": "0px" - }, - "letterSpacing": { - "ours": "0.6px", - "ref": "normal" - }, - "display": { - "ours": "flex", - "ref": "block" - }, - "rect": { - "ours": { - "x": 569, - "y": 590, - "w": 37, - "h": 30 - }, - "ref": { - "x": 612, - "y": 567, - "w": 46, - "h": 30 - } - } - } - }, - { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(4)", - "tag": "button", - "text": "25", - "deltas": { - "padding": { - "ours": "0px 11.2px", - "ref": "0px" - }, - "letterSpacing": { - "ours": "0.6px", - "ref": "normal" - }, - "display": { - "ours": "flex", - "ref": "block" - }, - "rect": { - "ours": { - "x": 606, - "y": 590, - "w": 37, - "h": 30 - }, - "ref": { - "x": 658, - "y": 567, - "w": 46, - "h": 30 - } - } - } - }, - { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>div:nth-child(1)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(2)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "02", "deltas": { + "fontSize": { + "ours": "22px", + "ref": "11px" + }, + "fontWeight": { + "ours": "600", + "ref": "400" + }, "padding": { "ours": "0px", "ref": "17px 0px 0px 15px" }, + "lineHeight": { + "ours": "22px", + "ref": "normal" + }, "rect": { "ours": { - "x": 95, - "y": 655, - "w": 13, - "h": 14 + "x": 74, + "y": 624, + "w": 26, + "h": 22 }, "ref": { "x": 59, @@ -624,7 +665,7 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>div:nth-child(1)>span:nth-child(3)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "TRANSFORM", "deltas": { @@ -634,9 +675,9 @@ }, "rect": { "ours": { - "x": 116, - "y": 656, - "w": 65, + "x": 117, + "y": 615, + "w": 153, "h": 13 }, "ref": { @@ -649,18 +690,14 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>div:nth-child(1)>span:nth-child(4)", - "tag": "span", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)", + "tag": "h2", "text": "Remove background", "deltas": { - "margin": { - "ours": "0px", - "ref": "5px 0px 18px" - }, "rect": { "ours": { - "x": 189, - "y": 653, + "x": 117, + "y": 633, "w": 153, "h": 19 }, @@ -674,20 +711,32 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(3)>div:nth-child(1)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(3)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "03", "deltas": { + "fontSize": { + "ours": "22px", + "ref": "11px" + }, + "fontWeight": { + "ours": "600", + "ref": "400" + }, "padding": { "ours": "0px", "ref": "17px 0px 0px 15px" }, + "lineHeight": { + "ours": "22px", + "ref": "normal" + }, "rect": { "ours": { - "x": 95, - "y": 769, - "w": 13, - "h": 14 + "x": 74, + "y": 746, + "w": 26, + "h": 22 }, "ref": { "x": 59, @@ -699,7 +748,7 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(3)>div:nth-child(1)>span:nth-child(3)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(3)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "STYLE", "deltas": { @@ -709,9 +758,9 @@ }, "rect": { "ours": { - "x": 116, - "y": 770, - "w": 36, + "x": 117, + "y": 737, + "w": 99, "h": 13 }, "ref": { @@ -724,18 +773,14 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(3)>div:nth-child(1)>span:nth-child(4)", - "tag": "span", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(3)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)", + "tag": "h2", "text": "Add outline", "deltas": { - "margin": { - "ours": "0px", - "ref": "5px 0px 18px" - }, "rect": { "ours": { - "x": 160, - "y": 767, + "x": 117, + "y": 755, "w": 99, "h": 19 }, @@ -749,20 +794,32 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(4)>div:nth-child(1)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(4)>div:nth-child(1)>span:nth-child(1)", "tag": "span", "text": "04", "deltas": { + "fontSize": { + "ours": "22px", + "ref": "11px" + }, + "fontWeight": { + "ours": "600", + "ref": "400" + }, "padding": { "ours": "0px", "ref": "17px 0px 0px 15px" }, + "lineHeight": { + "ours": "22px", + "ref": "normal" + }, "rect": { "ours": { - "x": 95, - "y": 911, - "w": 13, - "h": 14 + "x": 74, + "y": 896, + "w": 26, + "h": 22 }, "ref": { "x": 59, @@ -774,18 +831,14 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(4)>div:nth-child(1)>span:nth-child(4)", - "tag": "span", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(4)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)", + "tag": "h2", "text": "Round corners", "deltas": { - "margin": { - "ours": "0px", - "ref": "5px 0px 18px" - }, "rect": { "ours": { - "x": 160, - "y": 909, + "x": 117, + "y": 905, "w": 117, "h": 19 }, @@ -799,7 +852,7 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(4)>div:nth-child(2)>div:nth-child(2)>label:nth-child(2)>span:nth-child(1)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(4)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>label:nth-child(2)>span:nth-child(1)", "tag": "span", "text": "Preserve aspect ratio", "deltas": { @@ -817,8 +870,8 @@ }, "rect": { "ours": { - "x": 399, - "y": 986, + "x": 422, + "y": 973, "w": 129, "h": 18 }, @@ -836,10 +889,6 @@ "tag": "span", "text": "PIPELINE OUTPUTS", "deltas": { - "fontWeight": { - "ours": "500", - "ref": "400" - }, "letterSpacing": { "ours": "1px", "ref": "1.2px" @@ -856,7 +905,7 @@ "ours": { "x": 799, "y": 178, - "w": 93, + "w": 94, "h": 24 }, "ref": { @@ -877,7 +926,7 @@ "ours": { "x": 799, "y": 209, - "w": 93, + "w": 94, "h": 36 }, "ref": { @@ -912,7 +961,7 @@ }, "rect": { "ours": { - "x": 1090, + "x": 1097, "y": 240, "w": 36, "h": 13 @@ -931,20 +980,16 @@ "tag": "span", "text": "DIMENSIONS", "deltas": { - "fontSize": { - "ours": "10px", - "ref": "9px" - }, "letterSpacing": { - "ours": "1px", + "ours": "0.9px", "ref": "normal" }, "rect": { "ours": { - "x": 1150, - "y": 215, - "w": 70, - "h": 13 + "x": 1157, + "y": 216, + "w": 63, + "h": 11 }, "ref": { "x": 1073, @@ -985,20 +1030,16 @@ "tag": "span", "text": "FORMAT", "deltas": { - "fontSize": { - "ours": "10px", - "ref": "9px" - }, "letterSpacing": { - "ours": "1px", + "ours": "0.9px", "ref": "normal" }, "rect": { "ours": { - "x": 1150, - "y": 239, - "w": 42, - "h": 13 + "x": 1157, + "y": 240, + "w": 38, + "h": 11 }, "ref": { "x": 1159, @@ -1039,20 +1080,16 @@ "tag": "span", "text": "SIZE", "deltas": { - "fontSize": { - "ours": "10px", - "ref": "9px" - }, "letterSpacing": { - "ours": "1px", + "ours": "0.9px", "ref": "normal" }, "rect": { "ours": { - "x": 1150, - "y": 264, - "w": 28, - "h": 13 + "x": 1157, + "y": 265, + "w": 25, + "h": 11 }, "ref": { "x": 1246, @@ -1114,13 +1151,13 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)", "tag": "span", "text": "original.png · 1200 × 800", "deltas": { "rect": { "ours": { - "x": 1213, + "x": 814, "y": 704, "w": 135, "h": 11 @@ -1164,13 +1201,13 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)", "tag": "span", "text": "gradient applied", "deltas": { "rect": { "ours": { - "x": 1262, + "x": 814, "y": 1137, "w": 86, "h": 11 @@ -1214,13 +1251,13 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)", "tag": "span", "text": "background removed", "deltas": { "rect": { "ours": { - "x": 1251, + "x": 814, "y": 1569, "w": 97, "h": 11 @@ -1264,13 +1301,13 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(4)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(4)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)", "tag": "span", "text": "outline added", "deltas": { "rect": { "ours": { - "x": 1278, + "x": 814, "y": 2002, "w": 70, "h": 11 @@ -1314,13 +1351,13 @@ } }, { - "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(5)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)", + "path": "body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(5)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)", "tag": "span", "text": "ready · PNG-24", "deltas": { "rect": { "ours": { - "x": 1272, + "x": 814, "y": 2434, "w": 76, "h": 11 @@ -1362,24 +1399,28 @@ "AUTO", "Gradient color", "DIRECTION", - "135°", + "135 °", "OPACITY", + "75%", + "50%", + "25%", "Automatic subject detection enabled", "Outline width", - "2px", + "2 px", "Outline color", "Corner radius", - "18px" + "18 px", + "v0.1.0", + "© 2026" ], "onlyRef": [ "/ \n WORKSPACE", - "Workspace", - "Catalog", - "Gradient", - "Background remover", "COLOR", "135\n °", - "100%", + "100", + "75", + "50", + "25", "2\n px", "18\n px", "v2.4.0", @@ -1388,8 +1429,8 @@ "counts": { "tokenLight": 10, "tokenDark": 16, - "elements": 46, - "onlyOurs": 13, - "onlyRef": 12 + "elements": 47, + "onlyOurs": 18, + "onlyRef": 11 } } \ No newline at end of file diff --git a/web/audit/audit-report.md b/web/audit/audit-report.md index d46d396..d677d06 100644 --- a/web/audit/audit-report.md +++ b/web/audit/audit-report.md @@ -2,14 +2,14 @@ vs C:\+XBOCTuK\+life_projects\easy-png-tools\refs-html\demo.html -_2026-08-28T11:58:18.224Z_ +_2026-08-28T14:54:53.564Z_ ## Сводка - Токены light: **10** расх. - Токены dark: **16** расх. -- Элементы (стиль/геометрия): **46** расх. -- Только у нас: 13, только в рефе: 12 +- Элементы (стиль/геометрия): **47** расх. +- Только у нас: 18, только в рефе: 11 ## Токены — Light @@ -47,7 +47,7 @@ _2026-08-28T11:58:18.224Z_ | `--radius-lg` | — | .5rem | | `--text-sm` | — | .875rem | -## Расхождения элементов (топ 46) +## Расхождения элементов (топ 47) ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "/" - **fontFamily**: `"IBM Plex Mono", monospace` → `"IBM Plex Sans", sans-serif` @@ -59,71 +59,86 @@ _2026-08-28T11:58:18.224Z_ - **display**: `inline` → `block` - **rect**: `165,124 7x13` → `1348,20 4x24` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>span:nth-child(1)` — "PROCESSING PIPELINE" - - **fontWeight**: `500` → `400` - - **letterSpacing**: `1px` → `1.2px` - - **lineHeight**: `12px` → `normal` - - **display**: `block` → `inline` - - **rect**: `58,428 154x12` → `58,400 127x12` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>button:nth-child(1)` — "100%" + - **color**: `rgb(255, 255, 255)` → `rgb(23, 33, 43)` + - **backgroundColor**: `rgb(23, 105, 210)` → `rgba(0, 0, 0, 0)` + - **padding**: `0px 11.2px` → `0px` + - **letterSpacing**: `0.6px` → `0.8px` + - **display**: `flex` → `block` + - **rect**: `518,552 49x30` → `680,546 25x12` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "PIPELINE OUTPUTS" - - **fontWeight**: `500` → `400` - - **letterSpacing**: `1px` → `1.2px` - - **lineHeight**: `12px` → `normal` - - **display**: `block` → `inline` - - **rect**: `799,178 93x24` → `799,188 54x36` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "01" + - **fontSize**: `22px` → `11px` + - **fontWeight**: `600` → `400` + - **padding**: `0px` → `17px 0px 0px 15px` + - **lineHeight**: `22px` → `normal` + - **rect**: `74,464 26x22` → `59,466 46x150` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(2)>div:nth-child(1)>span:nth-child(1)` — "02" + - **fontSize**: `22px` → `11px` + - **fontWeight**: `600` → `400` + - **padding**: `0px` → `17px 0px 0px 15px` + - **lineHeight**: `22px` → `normal` + - **rect**: `74,624 26x22` → `59,628 46x136` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(3)>div:nth-child(1)>span:nth-child(1)` — "03" + - **fontSize**: `22px` → `11px` + - **fontWeight**: `600` → `400` + - **padding**: `0px` → `17px 0px 0px 15px` + - **lineHeight**: `22px` → `normal` + - **rect**: `74,746 26x22` → `59,776 46x150` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(4)>div:nth-child(1)>span:nth-child(1)` — "04" + - **fontSize**: `22px` → `11px` + - **fontWeight**: `600` → `400` + - **padding**: `0px` → `17px 0px 0px 15px` + - **lineHeight**: `22px` → `normal` + - **rect**: `74,896 26x22` → `59,938 46x142` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>button:nth-child(2)>span:nth-child(2)>span:nth-child(1)` — "1.2 MB" - **fontSize**: `10px` → `11px` - **color**: `rgb(255, 255, 255)` → `rgb(23, 33, 43)` - **margin**: `0px` → `5px 0px 0px` - **display**: `inline` → `block` - - **rect**: `1090,240 36x13` → `1246,291 79x13` + - **rect**: `1097,240 36x13` → `1246,291 79x13` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(1)` — "100" - - **padding**: `0px 11.2px` → `0px` - - **letterSpacing**: `0.6px` → `normal` - - **display**: `flex` → `block` - - **rect**: `491,590 42x30` → `520,567 46x30` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>span:nth-child(1)` — "PROCESSING PIPELINE" + - **letterSpacing**: `1px` → `1.2px` + - **lineHeight**: `12px` → `normal` + - **display**: `block` → `inline` + - **rect**: `58,382 154x12` → `58,400 127x12` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(2)` — "75" - - **padding**: `0px 11.2px` → `0px` - - **letterSpacing**: `0.6px` → `normal` - - **display**: `flex` → `block` - - **rect**: `533,590 37x30` → `566,567 46x30` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(3)` — "50" - - **padding**: `0px 11.2px` → `0px` - - **letterSpacing**: `0.6px` → `normal` - - **display**: `flex` → `block` - - **rect**: `569,590 37x30` → `612,567 46x30` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>button:nth-child(4)` — "25" - - **padding**: `0px 11.2px` → `0px` - - **letterSpacing**: `0.6px` → `normal` - - **display**: `flex` → `block` - - **rect**: `606,590 37x30` → `658,567 46x30` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(4)>div:nth-child(2)>div:nth-child(2)>label:nth-child(2)>span:nth-child(1)` — "Preserve aspect ratio" +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(4)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>label:nth-child(2)>span:nth-child(1)` — "Preserve aspect ratio" - **fontSize**: `13.6px` → `16px` - **lineHeight**: `normal` → `24px` - **display**: `block` → `inline` - - **rect**: `399,986 129x18` → `432,1021 156x17` + - **rect**: `422,973 129x18` → `432,1021 156x17` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>span:nth-child(1)` — "DIMENSIONS" - - **fontSize**: `10px` → `9px` - - **letterSpacing**: `1px` → `normal` - - **rect**: `1150,215 70x13` → `1073,271 79x10` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "PIPELINE OUTPUTS" + - **letterSpacing**: `1px` → `1.2px` + - **lineHeight**: `12px` → `normal` + - **display**: `block` → `inline` + - **rect**: `799,178 94x24` → `799,188 54x36` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>span:nth-child(1)` — "FORMAT" - - **fontSize**: `10px` → `9px` - - **letterSpacing**: `1px` → `normal` - - **rect**: `1150,239 42x13` → `1159,271 79x10` +### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(1)` — "Workspace" + - **fontSize**: `12px` → `10px` + - **letterSpacing**: `0.48px` → `normal` + - **rect**: `513,24 69x15` → `792,26 49x12` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(3)>span:nth-child(1)` — "SIZE" - - **fontSize**: `10px` → `9px` - - **letterSpacing**: `1px` → `normal` - - **rect**: `1150,264 28x13` → `1246,271 79x10` +### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(2)` — "Catalog" + - **fontSize**: `12px` → `10px` + - **letterSpacing**: `0.48px` → `normal` + - **rect**: `600,24 54x15` → `864,26 39x12` + +### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(3)` — "Gradient" + - **fontSize**: `12px` → `10px` + - **letterSpacing**: `0.48px` → `normal` + - **rect**: `672,24 61x15` → `924,26 44x12` + +### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>nav:nth-child(2)>a:nth-child(4)` — "Background remover" + - **fontSize**: `12px` → `10px` + - **letterSpacing**: `0.48px` → `normal` + - **rect**: `751,24 138x15` → `990,26 99x12` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>span:nth-child(1)` — "SOURCE" - **fontSize**: `10px` → `9px` @@ -150,104 +165,96 @@ _2026-08-28T11:58:18.224Z_ - **letterSpacing**: `0.8px` → `normal` - **rect**: `806,2047 550x13` → `808,1378 59x10` -### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(2)>div:nth-child(4)>button:nth-child(2)` — "EN" +### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(3)>div:nth-child(4)>button:nth-child(2)` — "EN" - **letterSpacing**: `0.6px` → `normal` - **rect**: `1349,19 32x25` → `1352,20 29x24` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>h1:nth-child(2)` — "Build your image pipeline." - - **lineHeight**: `normal` → `57.6px` - - **rect**: `58,155 474x150` → `58,154 482x115` + - **lineHeight**: `51.84px` → `57.6px` + - **rect**: `58,155 474x104` → `58,154 482x115` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(1)>span:nth-child(2)` — "01" - - **padding**: `0px` → `17px 0px 0px 15px` - - **rect**: `95,504 13x14` → `59,466 46x150` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(1)>span:nth-child(3)` — "BACKGROUND" +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "BACKGROUND" - **display**: `block` → `inline` - - **rect**: `116,504 72x13` → `143,489 67x12` + - **rect**: `117,455 171x13` → `143,489 67x12` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(1)>div:nth-child(1)>span:nth-child(4)` — "Gradient background" - - **margin**: `0px` → `5px 0px 18px` - - **rect**: `196,501 171x19` → `143,510 157x18` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>div:nth-child(1)>span:nth-child(2)` — "02" - - **padding**: `0px` → `17px 0px 0px 15px` - - **rect**: `95,655 13x14` → `59,628 46x136` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>div:nth-child(1)>span:nth-child(3)` — "TRANSFORM" +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "TRANSFORM" - **display**: `block` → `inline` - - **rect**: `116,656 65x13` → `143,651 60x12` + - **rect**: `117,615 153x13` → `143,651 60x12` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(2)>div:nth-child(1)>span:nth-child(4)` — "Remove background" - - **margin**: `0px` → `5px 0px 18px` - - **rect**: `189,653 153x19` → `143,672 140x18` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(3)>div:nth-child(1)>span:nth-child(2)` — "03" - - **padding**: `0px` → `17px 0px 0px 15px` - - **rect**: `95,769 13x14` → `59,776 46x150` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(3)>div:nth-child(1)>span:nth-child(3)` — "STYLE" +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(3)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "STYLE" - **display**: `block` → `inline` - - **rect**: `116,770 36x13` → `143,799 34x12` + - **rect**: `117,737 99x13` → `143,799 34x12` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(3)>div:nth-child(1)>span:nth-child(4)` — "Add outline" - - **margin**: `0px` → `5px 0px 18px` - - **rect**: `160,767 99x19` → `143,820 91x18` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(4)>div:nth-child(1)>span:nth-child(2)` — "04" - - **padding**: `0px` → `17px 0px 0px 15px` - - **rect**: `95,911 13x14` → `59,938 46x142` - -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(4)>div:nth-child(1)>span:nth-child(4)` — "Round corners" - - **margin**: `0px` → `5px 0px 18px` - - **rect**: `160,909 117x19` → `143,982 107x18` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>span:nth-child(1)` — "DIMENSIONS" + - **letterSpacing**: `0.9px` → `normal` + - **rect**: `1157,216 63x11` → `1073,271 79x10` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(1)>span:nth-child(2)` — "1200 × 800 px" - **margin**: `0px` → `5px 0px 0px` - **rect**: `1236,214 86x14` → `1073,291 79x13` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>span:nth-child(1)` — "FORMAT" + - **letterSpacing**: `0.9px` → `normal` + - **rect**: `1157,240 38x11` → `1159,271 79x10` + ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>span:nth-child(2)` — "PNG-24" - **margin**: `0px` → `5px 0px 0px` - **rect**: `1282,238 40x14` → `1159,291 79x13` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(3)>span:nth-child(1)` — "SIZE" + - **letterSpacing**: `0.9px` → `normal` + - **rect**: `1157,265 25x11` → `1246,271 79x10` + ### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(1)>span:nth-child(2)` — "easy-png-tools" - **rect**: `98,23 118x18` → `98,23 108x17` -### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(2)>div:nth-child(4)>button:nth-child(1)` — "RU" +### `body>div:nth-child(1)>div:nth-child(1)>header:nth-child(1)>div:nth-child(3)>div:nth-child(4)>button:nth-child(1)` — "RU" - **letterSpacing**: `0.6px` → `normal` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>p:nth-child(3)` — "Chain simple tools together. Every chang" - - **rect**: `58,321 474x51` → `58,285 482x51` + - **rect**: `58,275 474x51` → `58,285 482x51` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>span:nth-child(2)` — "source.png" - - **rect**: `597,347 66x14` → `606,311 60x13` + - **rect**: `597,300 66x14` → `606,311 60x13` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>b:nth-child(3)` — "1.8 MB" - - **rect**: `671,347 40x14` → `674,311 36x13` + - **rect**: `671,300 40x14` → `674,311 36x13` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>strong:nth-child(2)>em:nth-child(1)` — "• LIVE" - - **rect**: `175,451 36x13` → `173,425 33x12` + - **rect**: `175,405 36x13` → `173,425 33x12` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)` — "Gradient background" + - **rect**: `117,473 171x19` → `143,510 157x18` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)` — "Remove background" + - **rect**: `117,633 153x19` → `143,672 140x18` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(3)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)` — "Add outline" + - **rect**: `117,755 99x19` → `143,820 91x18` + +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>article:nth-child(4)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>h2:nth-child(2)` — "Round corners" + - **rect**: `117,905 117x19` → `143,982 107x18` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>div:nth-child(1)>strong:nth-child(2)` — "Visual history" - - **rect**: `799,209 93x36` → `799,233 87x34` + - **rect**: `799,209 94x36` → `799,233 87x34` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(1)>span:nth-child(1)` — "PNG" - **rect**: `1067,496 28x19` → `923,478 27x18` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)` — "original.png · 1200 × 800" - - **rect**: `1213,704 135x11` → `942,663 124x10` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)` — "original.png · 1200 × 800" + - **rect**: `814,704 135x11` → `942,663 124x10` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)` — "gradient applied" - - **rect**: `1262,1137 86x11` → `1275,663 79x10` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)` — "gradient applied" + - **rect**: `814,1137 86x11` → `1275,663 79x10` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)` — "background removed" - - **rect**: `1251,1569 97x11` → `977,1021 89x10` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(3)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)` — "background removed" + - **rect**: `814,1569 97x11` → `977,1021 89x10` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(4)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)` — "outline added" - - **rect**: `1278,2002 70x11` → `1290,1021 64x10` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(4)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)` — "outline added" + - **rect**: `814,2002 70x11` → `1290,1021 64x10` -### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(5)>div:nth-child(2)>div:nth-child(2)>span:nth-child(2)` — "ready · PNG-24" - - **rect**: `1272,2434 76x11` → `997,1378 69x10` +### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(5)>div:nth-child(2)>div:nth-child(2)>span:nth-child(1)` — "ready · PNG-24" + - **rect**: `814,2434 76x11` → `997,1378 69x10` ### `body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>div:nth-child(2)>div:nth-child(1)>div:nth-child(2)>div:nth-child(1)>p:nth-child(3)` — "Output is generated in-browser. Your fil" - **rect**: `799,2489 565x17` → `799,1425 565x17` @@ -259,27 +266,31 @@ _2026-08-28T11:58:18.224Z_ - `AUTO` - `Gradient color` - `DIRECTION` -- `135°` +- `135 °` - `OPACITY` +- `75%` +- `50%` +- `25%` - `Automatic subject detection enabled` - `Outline width` -- `2px` +- `2 px` - `Outline color` - `Corner radius` -- `18px` +- `18 px` +- `v0.1.0` +- `© 2026` ## Только в рефе (структурно) - `/ WORKSPACE` -- `Workspace` -- `Catalog` -- `Gradient` -- `Background remover` - `COLOR` - `135 °` -- `100%` +- `100` +- `75` +- `50` +- `25` - `2 px` - `18 diff --git a/web/scripts/audit.mjs b/web/scripts/audit.mjs index 1567d87..2ef028a 100644 --- a/web/scripts/audit.mjs +++ b/web/scripts/audit.mjs @@ -47,7 +47,16 @@ const waitFor = async (url, ms = 60000) => { try { const r = await fetch(url); if (r.ok) return; - } catch {} + // Сервер уже отвечает, но страница упала (4xx/5xx) — ждать 200 + // бессмысленно: сообщаем явно вместо таймаута "dev server not up". + if (r.status >= 400) { + throw new Error( + `route ${url} returned HTTP ${r.status} (server is up, page failed to render)`, + ); + } + } catch (e) { + if (e instanceof Error && e.message.includes("returned HTTP")) throw e; + } await new Promise((r) => setTimeout(r, 500)); } throw new Error("dev server not up: " + url); diff --git a/web/src/lib/components/kit/MetaRow.svelte b/web/src/lib/components/kit/MetaRow.svelte index 27d04f4..a2125ed 100644 --- a/web/src/lib/components/kit/MetaRow.svelte +++ b/web/src/lib/components/kit/MetaRow.svelte @@ -21,7 +21,7 @@ } .meta-caption { font-family: var(--font-mono); - font-size: 10px; + font-size: 9px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); diff --git a/web/src/lib/components/kit/MonoLabel.svelte b/web/src/lib/components/kit/MonoLabel.svelte index 61d9451..fa119b9 100644 --- a/web/src/lib/components/kit/MonoLabel.svelte +++ b/web/src/lib/components/kit/MonoLabel.svelte @@ -20,7 +20,7 @@ font-family: var(--font-mono); font-size: 10px; line-height: 1.2; - font-weight: 500; + font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); diff --git a/web/src/lib/components/kit/SliderField.svelte b/web/src/lib/components/kit/SliderField.svelte index 8a9b9d8..6eabacf 100644 --- a/web/src/lib/components/kit/SliderField.svelte +++ b/web/src/lib/components/kit/SliderField.svelte @@ -29,7 +29,12 @@
- {value}{suffix} + + {value} + {#if suffix} + {suffix} + {/if} +
diff --git a/web/src/lib/components/kit/StepCard.svelte b/web/src/lib/components/kit/StepCard.svelte index 15bd83c..455352a 100644 --- a/web/src/lib/components/kit/StepCard.svelte +++ b/web/src/lib/components/kit/StepCard.svelte @@ -6,59 +6,88 @@ index: number; title?: string; type?: string; + tools?: Snippet; children?: Snippet; onremove?: () => void; } - let { index, title, type, children, onremove }: Props = $props(); + + let { index, title, type, tools, children, onremove }: Props = $props(); -
-
- +
+
{index.toString().padStart(2, "0")} - {#if type}{type}{/if} - {#if title}{title}{/if} - +
- {#if children} -
{@render children()}
- {/if} -
+
+
+
+ {#if type}{type}{/if} + {#if title}

{title}

{/if} +
+
+ {#if tools}{@render tools()}{/if} + +
+
+ {#if children} +
{@render children()}
+ {/if} +
+ diff --git a/web/src/routes/preview/demo/+page.svelte b/web/src/routes/preview/demo/+page.svelte index 48a452f..5d9421c 100644 --- a/web/src/routes/preview/demo/+page.svelte +++ b/web/src/routes/preview/demo/+page.svelte @@ -91,7 +91,9 @@ title="Gradient background" onremove={() => {}} > -
AUTO
+ {#snippet tools()} + AUTO + {/snippet}
@@ -122,12 +124,16 @@ title="Remove background" onremove={() => {}} > -
AUTO
+ {#snippet tools()} + AUTO + {/snippet}
Automatic subject detection enabled
{}}> -
AUTO
+ {#snippet tools()} + AUTO + {/snippet} {}} > -
AUTO
+ {#snippet tools()} + AUTO + {/snippet}