chore: импорт сайта breazu

refs breazu/breazu#1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mbreazuandClaude Opus 5.5 committed 2026-10-08 16:52:44 +03:00
commit f2d89e7117
10 files changed
+1000

No files matched your search

+1
View File
@@ -0,0 +1 @@
.DS_Store
+19
View File
@@ -0,0 +1,19 @@
# breazu — статический сайт
Папка целиком заливается на VPS, сборки нет. Состав: `index.html` (главная + hash-подстраницы
`#/buyers`, `#/vendors`, `#/inhouse`), `report.html` (демо-отчёт), `assets/` (бренд).
nginx:
```nginx
server {
listen 80;
server_name breazu.com; # заменить на реальный домен
root /var/www/breazu;
index index.html;
location / { try_files $uri $uri/ =404; }
}
```
Перед публикацией: заменить `hello@breazu.com` на реальный адрес (grep по обоим html),
подключить HTTPS (certbot). Бренд-ассеты — `assets/` (единственная копия; папки `УПАКОВКА` больше нет).
+27
View File
@@ -0,0 +1,27 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="512" height="512" rx="80" fill="url(#paint0_linear_25_15)"/>
<path d="M124.75 161.5C124.75 161.5 220.375 97 233.5 97C242.875 97 250 103.75 250 112C250 112 250 181.921 250 228.25C250 229.006 250 229.757 250 230.5C204.894 259.35 134.5 304.375 134.5 304.375C131.875 306.25 128.5 310.375 128.5 313.75C128.5 317.125 131.453 321.625 136 324.25L250 371.5V379C250 379 137.473 332.034 136.75 331.75C126.25 327.625 115 314.875 115 296.5L115 184C115 172 121.375 164.5 124.75 161.5Z" fill="url(#paint1_radial_25_15)"/>
<path d="M250 230.5L134.5 304.375C131.875 306.25 128.5 310.375 128.5 313.75C128.5 317.125 131.453 321.625 136 324.25L250 371.5V230.5Z" fill="url(#paint2_radial_25_15)"/>
<path d="M321.625 204.25C356.875 204.25 397 240.25 397 280.375C397 320.5 383.125 338.5 361 356.5C361 356.5 281.875 415 265 415C257.5 415 250 408.625 250 398.523L250 230.5C275.5 215.5 286.375 204.25 321.625 204.25Z" fill="url(#paint3_radial_25_15)"/>
<defs>
<linearGradient id="paint0_linear_25_15" x1="256" y1="0" x2="256" y2="512" gradientUnits="userSpaceOnUse">
<stop stop-color="#031C3E"/>
<stop offset="1" stop-color="#051A3A"/>
</linearGradient>
<radialGradient id="paint1_radial_25_15" cx="0" cy="0" r="1" gradientTransform="matrix(-49.125 246 -207.726 73.5355 230.875 108.625)" gradientUnits="userSpaceOnUse">
<stop stop-color="#1F77FD"/>
<stop offset="0.546022" stop-color="#0863FD"/>
<stop offset="1" stop-color="#015AF8"/>
</radialGradient>
<radialGradient id="paint2_radial_25_15" cx="0" cy="0" r="1" gradientTransform="matrix(-78 151 -248.911 15.823 250 230)" gradientUnits="userSpaceOnUse">
<stop stop-color="#222241"/>
<stop offset="0.421537" stop-color="#143072"/>
<stop offset="1" stop-color="#035CF9"/>
</radialGradient>
<radialGradient id="paint3_radial_25_15" cx="0" cy="0" r="1" gradientTransform="matrix(-59.25 131.25 -117.922 -6.77723 339.625 239.125)" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE9A45"/>
<stop offset="0.58" stop-color="#FE8D36"/>
<stop offset="1" stop-color="#FE7228"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+23
View File
@@ -0,0 +1,23 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="512" height="512" rx="80" fill="#FEFEFE"/>
<path d="M124.75 161.5C124.75 161.5 220.375 97 233.5 97C242.875 97 250 103.75 250 112C250 112 250 181.921 250 228.25C250 229.006 250 229.757 250 230.5C204.894 259.35 134.5 304.375 134.5 304.375C131.875 306.25 128.5 310.375 128.5 313.75C128.5 317.125 131.453 321.625 136 324.25L250 371.5V379C250 379 137.473 332.034 136.75 331.75C126.25 327.625 115 314.875 115 296.5L115 184C115 172 121.375 164.5 124.75 161.5Z" fill="url(#paint0_radial_30_37)"/>
<path d="M250 230.5L134.5 304.375C131.875 306.25 128.5 310.375 128.5 313.75C128.5 317.125 131.453 321.625 136 324.25L250 371.5V230.5Z" fill="url(#paint1_radial_30_37)"/>
<path d="M321.625 204.25C356.875 204.25 397 240.25 397 280.375C397 320.5 383.125 338.5 361 356.5C361 356.5 281.875 415 265 415C257.5 415 250 408.625 250 398.523L250 230.5C275.5 215.5 286.375 204.25 321.625 204.25Z" fill="url(#paint2_radial_30_37)"/>
<defs>
<radialGradient id="paint0_radial_30_37" cx="0" cy="0" r="1" gradientTransform="matrix(-49.125 246 -207.726 73.5355 230.875 108.625)" gradientUnits="userSpaceOnUse">
<stop stop-color="#1F77FD"/>
<stop offset="0.546022" stop-color="#0863FD"/>
<stop offset="1" stop-color="#015AF8"/>
</radialGradient>
<radialGradient id="paint1_radial_30_37" cx="0" cy="0" r="1" gradientTransform="matrix(-78 151 -248.911 15.823 250 230)" gradientUnits="userSpaceOnUse">
<stop stop-color="#222241"/>
<stop offset="0.421537" stop-color="#143072"/>
<stop offset="1" stop-color="#035CF9"/>
</radialGradient>
<radialGradient id="paint2_radial_30_37" cx="0" cy="0" r="1" gradientTransform="matrix(-59.25 131.25 -117.922 -6.77723 339.625 239.125)" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE9A45"/>
<stop offset="0.58" stop-color="#FE8D36"/>
<stop offset="1" stop-color="#FE7228"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

+28
View File
@@ -0,0 +1,28 @@
<svg width="1519" height="512" viewBox="0 0 1519 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1519" height="512" rx="80" fill="url(#paint0_linear_30_44)"/>
<path d="M129.75 161.5C129.75 161.5 225.375 97 238.5 97C247.875 97 255 103.75 255 112C255 112 255 181.921 255 228.25C255 229.006 255 229.757 255 230.5C209.894 259.35 139.5 304.375 139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V379C255 379 142.473 332.034 141.75 331.75C131.25 327.625 120 314.875 120 296.5L120 184C120 172 126.375 164.5 129.75 161.5Z" fill="url(#paint1_radial_30_44)"/>
<path d="M255 230.5L139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V230.5Z" fill="url(#paint2_radial_30_44)"/>
<path d="M326.625 204.25C361.875 204.25 402 240.25 402 280.375C402 320.5 388.125 338.5 366 356.5C366 356.5 286.875 415 270 415C262.5 415 255 408.625 255 398.523L255 230.5C280.5 215.5 291.375 204.25 326.625 204.25Z" fill="url(#paint3_radial_30_44)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1255 208L1254 209V296L1255 297V301L1256 302V305L1257 306V308L1258 309V311L1259 312V313L1260 314V316L1261 317V318L1262 319V320L1264 322V323L1266 325V326L1269 329V330L1277 338H1278L1281 341H1282L1284 343H1285L1286 344H1287L1289 346H1290L1291 347H1292L1293 348H1295L1296 349H1297L1298 350H1300L1301 351H1304L1305 352H1308L1309 353H1314L1315 354H1337L1338 353H1343L1344 352H1347L1348 351H1350L1351 350H1353L1354 349H1356L1357 348H1358L1359 347H1360L1361 346H1362L1363 345H1364L1366 343H1367L1368 342H1369L1372 339H1373L1384 328V327L1387 324V323L1388 322V321L1390 319V318L1391 317V316L1392 315V313L1393 312V311L1394 310V308L1395 307V304L1396 303V300L1397 299V292L1398 291V209L1397 208H1357L1356 209V290L1355 291V295L1354 296V298L1353 299V301L1351 303V304L1349 306V307L1344 312H1343L1341 314H1340L1339 315H1338L1337 316H1334L1333 317H1318L1317 316H1315L1314 315H1313L1312 314H1311L1310 313H1309L1306 310H1305L1304 309V308L1300 304V303L1299 302V301L1298 300V298L1297 297V294L1296 293V209L1295 208H1255ZM1110 208L1109 209V243L1110 244H1125L1126 243H1144L1145 244H1155L1156 243H1174L1175 244H1181L1182 245L1128 299V300L1127 301H1126L1121 306V307L1109 319V350L1110 351H1241L1242 350V316H1167L1166 315L1213 268H1214L1240 242V209L1239 208H1110ZM775 208H774L773 207H770L769 206H754L753 207H747L746 208H742L741 209H738L737 210H734L733 211H731L730 212H729L728 213H726L725 214H724L722 216H721L720 217H719L718 218H717L715 220H714L710 224H709L704 229V230L701 233V234L698 237V238L697 239V240L695 242V243L694 244V245L693 246V248L692 249V250L691 251V253L690 254V257L689 258V261L688 262V268L687 269V350L688 351H728L729 350V274L730 273V269L731 268V266L732 265V264L733 263V262L734 261V260L735 259V258L744 249H745L746 248H747L748 247H749L750 246H751L752 245H755L756 244H760L761 243H778V211L775 208ZM955 231V234H956L961 239H962L970 247H971L978 254H981L982 253H983L989 247H990L992 245H993L995 243H996L997 242H998L999 241H1001L1002 240H1005L1006 239H1009L1010 238H1029L1030 239H1033L1034 240H1036L1037 241H1038L1039 242H1040L1043 245H1044L1047 248V249L1049 251V252L1050 253V254L1051 255V258L1052 259V264L1051 265H1047L1046 264H1042L1041 263H1035L1034 262H1000L999 263H994L993 264H989L988 265H985L984 266H982L981 267H979L978 268H976L975 269H974L973 270H972L971 271H970L968 273H967L965 275H964L957 282V283L955 285V286L953 288V289L952 290V292L951 293V294L950 295V298L949 299V305L948 306V312L949 313V319L950 320V323L951 324V326L952 327V328L953 329V330L955 332V333L957 335V336L963 342H964L967 345H968L969 346H970L972 348H974L975 349H976L977 350H979L980 351H982L983 352H986L987 353H992L993 354H1016L1017 353H1022L1023 352H1026L1027 351H1029L1030 350H1032L1033 349H1034L1035 348H1036L1037 347H1038L1039 346H1040L1041 345H1042L1045 342H1046L1051 337H1052L1053 338V339L1052 340L1053 341L1052 342V350L1053 351H1092L1093 350V256L1092 255V250L1091 249V246L1090 245V244L1089 243V241L1088 240V239L1087 238V237L1086 236V235L1085 234V233L1083 231V230L1080 227V226L1076 222H1075L1071 218H1070L1068 216H1067L1066 215H1065L1064 214H1063L1062 213H1061L1060 212H1059L1058 211H1057L1056 210H1054L1053 209H1051L1050 208H1047L1046 207H1043L1042 206H1038L1037 205H1027L1026 204H1017L1016 205H1006L1005 206H1000L999 207H996L995 208H992L991 209H989L988 210H986L985 211H983L982 212H981L980 213H979L978 214H977L976 215H975L973 217H972L971 218H970L968 220H967L964 223H963L955 231ZM990 305L991 304V302L992 301V300L993 299V298L997 294H998L1000 292H1002L1003 291H1004L1005 290H1008L1009 289H1015L1016 288H1029L1030 289H1037L1038 290H1042L1043 291H1045L1046 292H1049L1050 293H1051L1052 294V300L1051 301V304L1050 305V307L1049 308V309L1046 312V313L1044 315H1043L1039 319H1038L1037 320H1036L1035 321H1034L1033 322H1031L1030 323H1027L1026 324H1021L1020 325H1012L1011 324H1006L1005 323H1003L1002 322H1000L998 320H997L992 315V314L991 313V310L990 309V305ZM848 205L847 206H843L842 207H839L838 208H836L835 209H832L831 210H829L828 211H827L826 212H825L824 213H822L820 215H819L818 216H817L815 218H814L813 219H812L809 222H808L797 233V234L794 237V238L792 240V241L791 242V243L789 245V246L788 247V249L787 250V251L786 252V254L785 255V257L784 258V260L783 261V265L782 266V275L781 276V285L782 286V293L783 294V298L784 299V301L785 302V304L786 305V307L787 308V309L788 310V311L789 312V313L790 314V315L791 316V317L792 318V319L794 321V322L798 326V327L805 334H806L810 338H811L813 340H814L816 342H817L818 343H819L820 344H821L822 345H823L824 346H825L826 347H828L829 348H830L831 349H833L834 350H837L838 351H841L842 352H846L847 353H854L855 354H874L875 353H881L882 352H886L887 351H890L891 350H894L895 349H897L898 348H900L901 347H902L903 346H904L905 345H906L907 344H908L909 343H910L912 341H913L915 339H916L918 337H919L930 326V324L928 322H927L925 320H924L921 317H920L917 314H916L914 312H913L910 309H909L907 307H906L904 305H903L902 304H899L892 311H891L889 313H888L887 314H886L885 315H884L883 316H882L881 317H879L878 318H875L874 319H869L868 320H859L858 319H854L853 318H850L849 317H847L846 316H845L844 315H843L842 314H841L839 312H838L831 305V304L82Line truncated
<defs>
<linearGradient id="paint0_linear_30_44" x1="759.5" y1="0" x2="759.5" y2="512" gradientUnits="userSpaceOnUse">
<stop stop-color="#031C3E"/>
<stop offset="1" stop-color="#051A3A"/>
</linearGradient>
<radialGradient id="paint1_radial_30_44" cx="0" cy="0" r="1" gradientTransform="matrix(-49.125 246 -207.726 73.5355 235.875 108.625)" gradientUnits="userSpaceOnUse">
<stop stop-color="#1F77FD"/>
<stop offset="0.546022" stop-color="#0863FD"/>
<stop offset="1" stop-color="#015AF8"/>
</radialGradient>
<radialGradient id="paint2_radial_30_44" cx="0" cy="0" r="1" gradientTransform="matrix(-78 151 -248.911 15.823 255 230)" gradientUnits="userSpaceOnUse">
<stop stop-color="#222241"/>
<stop offset="0.421537" stop-color="#143072"/>
<stop offset="1" stop-color="#035CF9"/>
</radialGradient>
<radialGradient id="paint3_radial_30_44" cx="0" cy="0" r="1" gradientTransform="matrix(-59.25 131.25 -117.922 -6.77723 344.625 239.125)" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE9A45"/>
<stop offset="0.58" stop-color="#FE8D36"/>
<stop offset="1" stop-color="#FE7228"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 9.6 KiB

+24
View File
@@ -0,0 +1,24 @@
<svg width="1519" height="512" viewBox="0 0 1519 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1519" height="512" rx="80" fill="#FEFDFD"/>
<path d="M129.75 161.5C129.75 161.5 225.375 97 238.5 97C247.875 97 255 103.75 255 112C255 112 255 181.921 255 228.25C255 229.006 255 229.757 255 230.5C209.894 259.35 139.5 304.375 139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V379C255 379 142.473 332.034 141.75 331.75C131.25 327.625 120 314.875 120 296.5L120 184C120 172 126.375 164.5 129.75 161.5Z" fill="url(#paint0_radial_30_62)"/>
<path d="M255 230.5L139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V230.5Z" fill="url(#paint1_radial_30_62)"/>
<path d="M326.625 204.25C361.875 204.25 402 240.25 402 280.375C402 320.5 388.125 338.5 366 356.5C366 356.5 286.875 415 270 415C262.5 415 255 408.625 255 398.523L255 230.5C280.5 215.5 291.375 204.25 326.625 204.25Z" fill="url(#paint2_radial_30_62)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1255 208L1254 209V296L1255 297V301L1256 302V305L1257 306V308L1258 309V311L1259 312V313L1260 314V316L1261 317V318L1262 319V320L1264 322V323L1266 325V326L1269 329V330L1277 338H1278L1281 341H1282L1284 343H1285L1286 344H1287L1289 346H1290L1291 347H1292L1293 348H1295L1296 349H1297L1298 350H1300L1301 351H1304L1305 352H1308L1309 353H1314L1315 354H1337L1338 353H1343L1344 352H1347L1348 351H1350L1351 350H1353L1354 349H1356L1357 348H1358L1359 347H1360L1361 346H1362L1363 345H1364L1366 343H1367L1368 342H1369L1372 339H1373L1384 328V327L1387 324V323L1388 322V321L1390 319V318L1391 317V316L1392 315V313L1393 312V311L1394 310V308L1395 307V304L1396 303V300L1397 299V292L1398 291V209L1397 208H1357L1356 209V290L1355 291V295L1354 296V298L1353 299V301L1351 303V304L1349 306V307L1344 312H1343L1341 314H1340L1339 315H1338L1337 316H1334L1333 317H1318L1317 316H1315L1314 315H1313L1312 314H1311L1310 313H1309L1306 310H1305L1304 309V308L1300 304V303L1299 302V301L1298 300V298L1297 297V294L1296 293V209L1295 208H1255ZM1110 208L1109 209V243L1110 244H1125L1126 243H1144L1145 244H1155L1156 243H1174L1175 244H1181L1182 245L1128 299V300L1127 301H1126L1121 306V307L1109 319V350L1110 351H1241L1242 350V316H1167L1166 315L1213 268H1214L1240 242V209L1239 208H1110ZM775 208H774L773 207H770L769 206H754L753 207H747L746 208H742L741 209H738L737 210H734L733 211H731L730 212H729L728 213H726L725 214H724L722 216H721L720 217H719L718 218H717L715 220H714L710 224H709L704 229V230L701 233V234L698 237V238L697 239V240L695 242V243L694 244V245L693 246V248L692 249V250L691 251V253L690 254V257L689 258V261L688 262V268L687 269V350L688 351H728L729 350V274L730 273V269L731 268V266L732 265V264L733 263V262L734 261V260L735 259V258L744 249H745L746 248H747L748 247H749L750 246H751L752 245H755L756 244H760L761 243H778V211L775 208ZM955 231V234H956L961 239H962L970 247H971L978 254H981L982 253H983L989 247H990L992 245H993L995 243H996L997 242H998L999 241H1001L1002 240H1005L1006 239H1009L1010 238H1029L1030 239H1033L1034 240H1036L1037 241H1038L1039 242H1040L1043 245H1044L1047 248V249L1049 251V252L1050 253V254L1051 255V258L1052 259V264L1051 265H1047L1046 264H1042L1041 263H1035L1034 262H1000L999 263H994L993 264H989L988 265H985L984 266H982L981 267H979L978 268H976L975 269H974L973 270H972L971 271H970L968 273H967L965 275H964L957 282V283L955 285V286L953 288V289L952 290V292L951 293V294L950 295V298L949 299V305L948 306V312L949 313V319L950 320V323L951 324V326L952 327V328L953 329V330L955 332V333L957 335V336L963 342H964L967 345H968L969 346H970L972 348H974L975 349H976L977 350H979L980 351H982L983 352H986L987 353H992L993 354H1016L1017 353H1022L1023 352H1026L1027 351H1029L1030 350H1032L1033 349H1034L1035 348H1036L1037 347H1038L1039 346H1040L1041 345H1042L1045 342H1046L1051 337H1052L1053 338V339L1052 340L1053 341L1052 342V350L1053 351H1092L1093 350V256L1092 255V250L1091 249V246L1090 245V244L1089 243V241L1088 240V239L1087 238V237L1086 236V235L1085 234V233L1083 231V230L1080 227V226L1076 222H1075L1071 218H1070L1068 216H1067L1066 215H1065L1064 214H1063L1062 213H1061L1060 212H1059L1058 211H1057L1056 210H1054L1053 209H1051L1050 208H1047L1046 207H1043L1042 206H1038L1037 205H1027L1026 204H1017L1016 205H1006L1005 206H1000L999 207H996L995 208H992L991 209H989L988 210H986L985 211H983L982 212H981L980 213H979L978 214H977L976 215H975L973 217H972L971 218H970L968 220H967L964 223H963L955 231ZM990 305L991 304V302L992 301V300L993 299V298L997 294H998L1000 292H1002L1003 291H1004L1005 290H1008L1009 289H1015L1016 288H1029L1030 289H1037L1038 290H1042L1043 291H1045L1046 292H1049L1050 293H1051L1052 294V300L1051 301V304L1050 305V307L1049 308V309L1046 312V313L1044 315H1043L1039 319H1038L1037 320H1036L1035 321H1034L1033 322H1031L1030 323H1027L1026 324H1021L1020 325H1012L1011 324H1006L1005 323H1003L1002 322H1000L998 320H997L992 315V314L991 313V310L990 309V305ZM848 205L847 206H843L842 207H839L838 208H836L835 209H832L831 210H829L828 211H827L826 212H825L824 213H822L820 215H819L818 216H817L815 218H814L813 219H812L809 222H808L797 233V234L794 237V238L792 240V241L791 242V243L789 245V246L788 247V249L787 250V251L786 252V254L785 255V257L784 258V260L783 261V265L782 266V275L781 276V285L782 286V293L783 294V298L784 299V301L785 302V304L786 305V307L787 308V309L788 310V311L789 312V313L790 314V315L791 316V317L792 318V319L794 321V322L798 326V327L805 334H806L810 338H811L813 340H814L816 342H817L818 343H819L820 344H821L822 345H823L824 346H825L826 347H828L829 348H830L831 349H833L834 350H837L838 351H841L842 352H846L847 353H854L855 354H874L875 353H881L882 352H886L887 351H890L891 350H894L895 349H897L898 348H900L901 347H902L903 346H904L905 345H906L907 344H908L909 343H910L912 341H913L915 339H916L918 337H919L930 326V324L928 322H927L925 320H924L921 317H920L917 314H916L914 312H913L910 309H909L907 307H906L904 305H903L902 304H899L892 311H891L889 313H888L887 314H886L885 315H884L883 316H882L881 317H879L878 318H875L874 319H869L868 320H859L858 319H854L853 318H850L849 317H847L846 316H845L844 315H843L842 314H841L839 312H838L831 305V304L82Line truncated
<defs>
<radialGradient id="paint0_radial_30_62" cx="0" cy="0" r="1" gradientTransform="matrix(-49.125 246 -207.726 73.5355 235.875 108.625)" gradientUnits="userSpaceOnUse">
<stop stop-color="#1F77FD"/>
<stop offset="0.546022" stop-color="#0863FD"/>
<stop offset="1" stop-color="#015AF8"/>
</radialGradient>
<radialGradient id="paint1_radial_30_62" cx="0" cy="0" r="1" gradientTransform="matrix(-78 151 -248.911 15.823 255 230)" gradientUnits="userSpaceOnUse">
<stop stop-color="#222241"/>
<stop offset="0.421537" stop-color="#143072"/>
<stop offset="1" stop-color="#035CF9"/>
</radialGradient>
<radialGradient id="paint2_radial_30_62" cx="0" cy="0" r="1" gradientTransform="matrix(-59.25 131.25 -117.922 -6.77723 344.625 239.125)" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE9A45"/>
<stop offset="0.58" stop-color="#FE8D36"/>
<stop offset="1" stop-color="#FE7228"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 9.4 KiB

+23
View File
@@ -0,0 +1,23 @@
<svg width="1519" height="512" viewBox="0 0 1519 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M129.75 161.5C129.75 161.5 225.375 97 238.5 97C247.875 97 255 103.75 255 112C255 112 255 181.921 255 228.25C255 229.006 255 229.757 255 230.5C209.894 259.35 139.5 304.375 139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V379C255 379 142.473 332.034 141.75 331.75C131.25 327.625 120 314.875 120 296.5L120 184C120 172 126.375 164.5 129.75 161.5Z" fill="url(#paint0_radial_31_68)"/>
<path d="M255 230.5L139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V230.5Z" fill="url(#paint1_radial_31_68)"/>
<path d="M326.625 204.25C361.875 204.25 402 240.25 402 280.375C402 320.5 388.125 338.5 366 356.5C366 356.5 286.875 415 270 415C262.5 415 255 408.625 255 398.523L255 230.5C280.5 215.5 291.375 204.25 326.625 204.25Z" fill="url(#paint2_radial_31_68)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1255 208L1254 209V296L1255 297V301L1256 302V305L1257 306V308L1258 309V311L1259 312V313L1260 314V316L1261 317V318L1262 319V320L1264 322V323L1266 325V326L1269 329V330L1277 338H1278L1281 341H1282L1284 343H1285L1286 344H1287L1289 346H1290L1291 347H1292L1293 348H1295L1296 349H1297L1298 350H1300L1301 351H1304L1305 352H1308L1309 353H1314L1315 354H1337L1338 353H1343L1344 352H1347L1348 351H1350L1351 350H1353L1354 349H1356L1357 348H1358L1359 347H1360L1361 346H1362L1363 345H1364L1366 343H1367L1368 342H1369L1372 339H1373L1384 328V327L1387 324V323L1388 322V321L1390 319V318L1391 317V316L1392 315V313L1393 312V311L1394 310V308L1395 307V304L1396 303V300L1397 299V292L1398 291V209L1397 208H1357L1356 209V290L1355 291V295L1354 296V298L1353 299V301L1351 303V304L1349 306V307L1344 312H1343L1341 314H1340L1339 315H1338L1337 316H1334L1333 317H1318L1317 316H1315L1314 315H1313L1312 314H1311L1310 313H1309L1306 310H1305L1304 309V308L1300 304V303L1299 302V301L1298 300V298L1297 297V294L1296 293V209L1295 208H1255ZM1110 208L1109 209V243L1110 244H1125L1126 243H1144L1145 244H1155L1156 243H1174L1175 244H1181L1182 245L1128 299V300L1127 301H1126L1121 306V307L1109 319V350L1110 351H1241L1242 350V316H1167L1166 315L1213 268H1214L1240 242V209L1239 208H1110ZM775 208H774L773 207H770L769 206H754L753 207H747L746 208H742L741 209H738L737 210H734L733 211H731L730 212H729L728 213H726L725 214H724L722 216H721L720 217H719L718 218H717L715 220H714L710 224H709L704 229V230L701 233V234L698 237V238L697 239V240L695 242V243L694 244V245L693 246V248L692 249V250L691 251V253L690 254V257L689 258V261L688 262V268L687 269V350L688 351H728L729 350V274L730 273V269L731 268V266L732 265V264L733 263V262L734 261V260L735 259V258L744 249H745L746 248H747L748 247H749L750 246H751L752 245H755L756 244H760L761 243H778V211L775 208ZM955 231V234H956L961 239H962L970 247H971L978 254H981L982 253H983L989 247H990L992 245H993L995 243H996L997 242H998L999 241H1001L1002 240H1005L1006 239H1009L1010 238H1029L1030 239H1033L1034 240H1036L1037 241H1038L1039 242H1040L1043 245H1044L1047 248V249L1049 251V252L1050 253V254L1051 255V258L1052 259V264L1051 265H1047L1046 264H1042L1041 263H1035L1034 262H1000L999 263H994L993 264H989L988 265H985L984 266H982L981 267H979L978 268H976L975 269H974L973 270H972L971 271H970L968 273H967L965 275H964L957 282V283L955 285V286L953 288V289L952 290V292L951 293V294L950 295V298L949 299V305L948 306V312L949 313V319L950 320V323L951 324V326L952 327V328L953 329V330L955 332V333L957 335V336L963 342H964L967 345H968L969 346H970L972 348H974L975 349H976L977 350H979L980 351H982L983 352H986L987 353H992L993 354H1016L1017 353H1022L1023 352H1026L1027 351H1029L1030 350H1032L1033 349H1034L1035 348H1036L1037 347H1038L1039 346H1040L1041 345H1042L1045 342H1046L1051 337H1052L1053 338V339L1052 340L1053 341L1052 342V350L1053 351H1092L1093 350V256L1092 255V250L1091 249V246L1090 245V244L1089 243V241L1088 240V239L1087 238V237L1086 236V235L1085 234V233L1083 231V230L1080 227V226L1076 222H1075L1071 218H1070L1068 216H1067L1066 215H1065L1064 214H1063L1062 213H1061L1060 212H1059L1058 211H1057L1056 210H1054L1053 209H1051L1050 208H1047L1046 207H1043L1042 206H1038L1037 205H1027L1026 204H1017L1016 205H1006L1005 206H1000L999 207H996L995 208H992L991 209H989L988 210H986L985 211H983L982 212H981L980 213H979L978 214H977L976 215H975L973 217H972L971 218H970L968 220H967L964 223H963L955 231ZM990 305L991 304V302L992 301V300L993 299V298L997 294H998L1000 292H1002L1003 291H1004L1005 290H1008L1009 289H1015L1016 288H1029L1030 289H1037L1038 290H1042L1043 291H1045L1046 292H1049L1050 293H1051L1052 294V300L1051 301V304L1050 305V307L1049 308V309L1046 312V313L1044 315H1043L1039 319H1038L1037 320H1036L1035 321H1034L1033 322H1031L1030 323H1027L1026 324H1021L1020 325H1012L1011 324H1006L1005 323H1003L1002 322H1000L998 320H997L992 315V314L991 313V310L990 309V305ZM848 205L847 206H843L842 207H839L838 208H836L835 209H832L831 210H829L828 211H827L826 212H825L824 213H822L820 215H819L818 216H817L815 218H814L813 219H812L809 222H808L797 233V234L794 237V238L792 240V241L791 242V243L789 245V246L788 247V249L787 250V251L786 252V254L785 255V257L784 258V260L783 261V265L782 266V275L781 276V285L782 286V293L783 294V298L784 299V301L785 302V304L786 305V307L787 308V309L788 310V311L789 312V313L790 314V315L791 316V317L792 318V319L794 321V322L798 326V327L805 334H806L810 338H811L813 340H814L816 342H817L818 343H819L820 344H821L822 345H823L824 346H825L826 347H828L829 348H830L831 349H833L834 350H837L838 351H841L842 352H846L847 353H854L855 354H874L875 353H881L882 352H886L887 351H890L891 350H894L895 349H897L898 348H900L901 347H902L903 346H904L905 345H906L907 344H908L909 343H910L912 341H913L915 339H916L918 337H919L930 326V324L928 322H927L925 320H924L921 317H920L917 314H916L914 312H913L910 309H909L907 307H906L904 305H903L902 304H899L892 311H891L889 313H888L887 314H886L885 315H884L883 316H882L881 317H879L878 318H875L874 319H869L868 320H859L858 319H854L853 318H850L849 317H847L846 316H845L844 315H843L842 314H841L839 312H838L831 305V304L82Line truncated
<defs>
<radialGradient id="paint0_radial_31_68" cx="0" cy="0" r="1" gradientTransform="matrix(-49.125 246 -207.726 73.5355 235.875 108.625)" gradientUnits="userSpaceOnUse">
<stop stop-color="#1F77FD"/>
<stop offset="0.546022" stop-color="#0863FD"/>
<stop offset="1" stop-color="#015AF8"/>
</radialGradient>
<radialGradient id="paint1_radial_31_68" cx="0" cy="0" r="1" gradientTransform="matrix(-78 151 -248.911 15.823 255 230)" gradientUnits="userSpaceOnUse">
<stop stop-color="#222241"/>
<stop offset="0.421537" stop-color="#143072"/>
<stop offset="1" stop-color="#035CF9"/>
</radialGradient>
<radialGradient id="paint2_radial_31_68" cx="0" cy="0" r="1" gradientTransform="matrix(-59.25 131.25 -117.922 -6.77723 344.625 239.125)" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE9A45"/>
<stop offset="0.58" stop-color="#FE8D36"/>
<stop offset="1" stop-color="#FE7228"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

@@ -0,0 +1,23 @@
<svg width="1519" height="512" viewBox="0 0 1519 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M129.75 161.5C129.75 161.5 225.375 97 238.5 97C247.875 97 255 103.75 255 112C255 112 255 181.921 255 228.25C255 229.006 255 229.757 255 230.5C209.894 259.35 139.5 304.375 139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V379C255 379 142.473 332.034 141.75 331.75C131.25 327.625 120 314.875 120 296.5L120 184C120 172 126.375 164.5 129.75 161.5Z" fill="url(#paint0_radial_31_68)"/>
<path d="M255 230.5L139.5 304.375C136.875 306.25 133.5 310.375 133.5 313.75C133.5 317.125 136.453 321.625 141 324.25L255 371.5V230.5Z" fill="url(#paint1_radial_31_68)"/>
<path d="M326.625 204.25C361.875 204.25 402 240.25 402 280.375C402 320.5 388.125 338.5 366 356.5C366 356.5 286.875 415 270 415C262.5 415 255 408.625 255 398.523L255 230.5C280.5 215.5 291.375 204.25 326.625 204.25Z" fill="url(#paint2_radial_31_68)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1255 208L1254 209V296L1255 297V301L1256 302V305L1257 306V308L1258 309V311L1259 312V313L1260 314V316L1261 317V318L1262 319V320L1264 322V323L1266 325V326L1269 329V330L1277 338H1278L1281 341H1282L1284 343H1285L1286 344H1287L1289 346H1290L1291 347H1292L1293 348H1295L1296 349H1297L1298 350H1300L1301 351H1304L1305 352H1308L1309 353H1314L1315 354H1337L1338 353H1343L1344 352H1347L1348 351H1350L1351 350H1353L1354 349H1356L1357 348H1358L1359 347H1360L1361 346H1362L1363 345H1364L1366 343H1367L1368 342H1369L1372 339H1373L1384 328V327L1387 324V323L1388 322V321L1390 319V318L1391 317V316L1392 315V313L1393 312V311L1394 310V308L1395 307V304L1396 303V300L1397 299V292L1398 291V209L1397 208H1357L1356 209V290L1355 291V295L1354 296V298L1353 299V301L1351 303V304L1349 306V307L1344 312H1343L1341 314H1340L1339 315H1338L1337 316H1334L1333 317H1318L1317 316H1315L1314 315H1313L1312 314H1311L1310 313H1309L1306 310H1305L1304 309V308L1300 304V303L1299 302V301L1298 300V298L1297 297V294L1296 293V209L1295 208H1255ZM1110 208L1109 209V243L1110 244H1125L1126 243H1144L1145 244H1155L1156 243H1174L1175 244H1181L1182 245L1128 299V300L1127 301H1126L1121 306V307L1109 319V350L1110 351H1241L1242 350V316H1167L1166 315L1213 268H1214L1240 242V209L1239 208H1110ZM775 208H774L773 207H770L769 206H754L753 207H747L746 208H742L741 209H738L737 210H734L733 211H731L730 212H729L728 213H726L725 214H724L722 216H721L720 217H719L718 218H717L715 220H714L710 224H709L704 229V230L701 233V234L698 237V238L697 239V240L695 242V243L694 244V245L693 246V248L692 249V250L691 251V253L690 254V257L689 258V261L688 262V268L687 269V350L688 351H728L729 350V274L730 273V269L731 268V266L732 265V264L733 263V262L734 261V260L735 259V258L744 249H745L746 248H747L748 247H749L750 246H751L752 245H755L756 244H760L761 243H778V211L775 208ZM955 231V234H956L961 239H962L970 247H971L978 254H981L982 253H983L989 247H990L992 245H993L995 243H996L997 242H998L999 241H1001L1002 240H1005L1006 239H1009L1010 238H1029L1030 239H1033L1034 240H1036L1037 241H1038L1039 242H1040L1043 245H1044L1047 248V249L1049 251V252L1050 253V254L1051 255V258L1052 259V264L1051 265H1047L1046 264H1042L1041 263H1035L1034 262H1000L999 263H994L993 264H989L988 265H985L984 266H982L981 267H979L978 268H976L975 269H974L973 270H972L971 271H970L968 273H967L965 275H964L957 282V283L955 285V286L953 288V289L952 290V292L951 293V294L950 295V298L949 299V305L948 306V312L949 313V319L950 320V323L951 324V326L952 327V328L953 329V330L955 332V333L957 335V336L963 342H964L967 345H968L969 346H970L972 348H974L975 349H976L977 350H979L980 351H982L983 352H986L987 353H992L993 354H1016L1017 353H1022L1023 352H1026L1027 351H1029L1030 350H1032L1033 349H1034L1035 348H1036L1037 347H1038L1039 346H1040L1041 345H1042L1045 342H1046L1051 337H1052L1053 338V339L1052 340L1053 341L1052 342V350L1053 351H1092L1093 350V256L1092 255V250L1091 249V246L1090 245V244L1089 243V241L1088 240V239L1087 238V237L1086 236V235L1085 234V233L1083 231V230L1080 227V226L1076 222H1075L1071 218H1070L1068 216H1067L1066 215H1065L1064 214H1063L1062 213H1061L1060 212H1059L1058 211H1057L1056 210H1054L1053 209H1051L1050 208H1047L1046 207H1043L1042 206H1038L1037 205H1027L1026 204H1017L1016 205H1006L1005 206H1000L999 207H996L995 208H992L991 209H989L988 210H986L985 211H983L982 212H981L980 213H979L978 214H977L976 215H975L973 217H972L971 218H970L968 220H967L964 223H963L955 231ZM990 305L991 304V302L992 301V300L993 299V298L997 294H998L1000 292H1002L1003 291H1004L1005 290H1008L1009 289H1015L1016 288H1029L1030 289H1037L1038 290H1042L1043 291H1045L1046 292H1049L1050 293H1051L1052 294V300L1051 301V304L1050 305V307L1049 308V309L1046 312V313L1044 315H1043L1039 319H1038L1037 320H1036L1035 321H1034L1033 322H1031L1030 323H1027L1026 324H1021L1020 325H1012L1011 324H1006L1005 323H1003L1002 322H1000L998 320H997L992 315V314L991 313V310L990 309V305ZM848 205L847 206H843L842 207H839L838 208H836L835 209H832L831 210H829L828 211H827L826 212H825L824 213H822L820 215H819L818 216H817L815 218H814L813 219H812L809 222H808L797 233V234L794 237V238L792 240V241L791 242V243L789 245V246L788 247V249L787 250V251L786 252V254L785 255V257L784 258V260L783 261V265L782 266V275L781 276V285L782 286V293L783 294V298L784 299V301L785 302V304L786 305V307L787 308V309L788 310V311L789 312V313L790 314V315L791 316V317L792 318V319L794 321V322L798 326V327L805 334H806L810 338H811L813 340H814L816 342H817L818 343H819L820 344H821L822 345H823L824 346H825L826 347H828L829 348H830L831 349H833L834 350H837L838 351H841L842 352H846L847 353H854L855 354H874L875 353H881L882 352H886L887 351H890L891 350H894L895 349H897L898 348H900L901 347H902L903 346H904L905 345H906L907 344H908L909 343H910L912 341H913L915 339H916L918 337H919L930 326V324L928 322H927L925 320H924L921 317H920L917 314H916L914 312H913L910 309H909L907 307H906L904 305H903L902 304H899L892 311H891L889 313H888L887 314H886L885 315H884L883 316H882L881 317H879L878 318H875L874 319H869L868 320H859L858 319H854L853 318H850L849 317H847L846 316H845L844 315H843L842 314H841L839 312H838L831 305V304L82Line truncated
<defs>
<radialGradient id="paint0_radial_31_68" cx="0" cy="0" r="1" gradientTransform="matrix(-49.125 246 -207.726 73.5355 235.875 108.625)" gradientUnits="userSpaceOnUse">
<stop stop-color="#1F77FD"/>
<stop offset="0.546022" stop-color="#0863FD"/>
<stop offset="1" stop-color="#015AF8"/>
</radialGradient>
<radialGradient id="paint1_radial_31_68" cx="0" cy="0" r="1" gradientTransform="matrix(-78 151 -248.911 15.823 255 230)" gradientUnits="userSpaceOnUse">
<stop stop-color="#222241"/>
<stop offset="0.421537" stop-color="#143072"/>
<stop offset="1" stop-color="#035CF9"/>
</radialGradient>
<radialGradient id="paint2_radial_31_68" cx="0" cy="0" r="1" gradientTransform="matrix(-59.25 131.25 -117.922 -6.77723 344.625 239.125)" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE9A45"/>
<stop offset="0.58" stop-color="#FE8D36"/>
<stop offset="1" stop-color="#FE7228"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

+477
View File
@@ -0,0 +1,477 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>breazu</title>
<meta name="description" content="Professional eyes on software estimates: proposal audit for buyers, proposal engineering for vendors, independent estimates for in-house teams.">
<link rel="icon" href="assets/app_icon_light.svg" type="image/svg+xml">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Outfit:wght@500;600;700&family=Figtree:wght@400;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap">
<style>
:root {
--paper: #FFFFFF;
--surface: #F4F7FC;
--ink: #011B3E;
--muted: #4A5B75;
--line: #DCE4F0;
--brand: #0863FD;
--brand-ink: #0550D6;
--brand-soft: #E8F0FE;
--warn: #FE7228;
--warn-soft: #FFEFE4;
--crit: #DC3D43;
--crit-soft: #FCE9EA;
--panel: #FFFFFF;
--shadow: 0 10px 30px rgba(1, 27, 62, 0.07);
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--paper: #0A1428;
--surface: #101D36;
--ink: #EAF0FA;
--muted: #93A5C1;
--line: #26385C;
--brand: #4C8DFF;
--brand-ink: #7FAEFF;
--brand-soft: #14294D;
--warn: #FF8A47;
--warn-soft: #3A2210;
--crit: #F26A6F;
--crit-soft: #3B1A1D;
--panel: #101D36;
--shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}
}
:root[data-theme="dark"] {
--paper: #0A1428;
--surface: #101D36;
--ink: #EAF0FA;
--muted: #93A5C1;
--line: #26385C;
--brand: #4C8DFF;
--brand-ink: #7FAEFF;
--brand-soft: #14294D;
--warn: #FF8A47;
--warn-soft: #3A2210;
--crit: #F26A6F;
--crit-soft: #3B1A1D;
--panel: #101D36;
--shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}
* { box-sizing: border-box; margin: 0; }
body { background: var(--paper); color: var(--ink); font-family: 'Figtree', 'Segoe UI', sans-serif; font-size: 17px; line-height: 1.6; }
.display { font-family: 'Outfit', 'Segoe UI', sans-serif; }
.mono { font-family: 'JetBrains Mono', Menlo, monospace; }
.wrap { max-width: 1020px; margin: 0 auto; padding: 0 28px; }
a { color: var(--brand-ink); }
/* logo theme switch */
.logo-light { display: block; }
.logo-dark { display: none; }
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) .logo-light { display: none; }
:root:not([data-theme="light"]) .logo-dark { display: block; }
}
:root[data-theme="dark"] .logo-light { display: none; }
:root[data-theme="dark"] .logo-dark { display: block; }
/* ── nav ── */
nav { border-bottom: 1px solid var(--line); position: relative; z-index: 10; background: var(--paper); }
.nav-in { display: flex; align-items: center; justify-content: space-between; padding: 14px 0; gap: 18px; flex-wrap: wrap; }
.logo-link { display: inline-flex; align-items: center; text-decoration: none; }
.logo-link img { height: 40px; width: auto; display: block; }
.nav-links { display: flex; gap: 4px; font-size: 15.5px; align-items: center; flex-wrap: wrap; font-family: 'Outfit', sans-serif; font-weight: 500; }
.nav-links > a, .drop > button {
color: var(--muted); text-decoration: none; background: none; border: none; font: inherit;
padding: 8px 12px; border-radius: 999px; cursor: pointer;
}
.nav-links > a:hover, .drop > button:hover, .nav-links > a:focus-visible, .drop > button:focus-visible { color: var(--ink); background: var(--surface); }
.drop { position: relative; }
.drop > button::after { content: " \25BE"; font-size: 11px; color: var(--brand); }
.menu {
position: absolute; top: calc(100% + 8px); left: 0; min-width: 264px;
background: var(--panel); border: 1px solid var(--line); border-radius: 14px;
box-shadow: var(--shadow); padding: 8px;
opacity: 0; visibility: hidden; transform: translateY(-4px); transition: 0.14s ease;
}
.drop:hover .menu, .drop:focus-within .menu { opacity: 1; visibility: visible; transform: none; }
.menu a { display: block; padding: 10px 12px; border-radius: 9px; text-decoration: none; color: var(--ink); font-size: 15px; font-weight: 600; }
.menu a:hover, .menu a:focus-visible { background: var(--brand-soft); }
.menu a small { display: block; color: var(--muted); font-size: 12.5px; line-height: 1.35; font-weight: 400; font-family: 'Figtree', sans-serif; }
/* ── shared ── */
section { padding: 56px 0; }
section.alt { background: var(--surface); }
h1 { font-family: 'Outfit', sans-serif; font-size: clamp(34px, 5.2vw, 52px); line-height: 1.08; font-weight: 700; letter-spacing: -0.02em; margin: 14px 0 18px; text-wrap: balance; }
h2 { font-family: 'Outfit', sans-serif; font-size: clamp(24px, 3.4vw, 32px); font-weight: 700; letter-spacing: -0.015em; line-height: 1.15; margin-bottom: 10px; text-wrap: balance; }
.eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--brand); font-weight: 500; }
.sub { color: var(--muted); max-width: 60ch; }
.sec-sub { color: var(--muted); max-width: 62ch; margin-bottom: 26px; }
.btn { display: inline-block; text-decoration: none; font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 16px; padding: 13px 26px; border-radius: 999px; border: 1.5px solid var(--brand); transition: 0.15s; }
.btn-primary { background: var(--brand); color: #FFFFFF; border-color: var(--brand); }
.btn-primary:hover, .btn-primary:focus-visible { background: var(--brand-ink); border-color: var(--brand-ink); transform: translateY(-1px); }
:root[data-theme="dark"] .btn-primary, :root:not([data-theme="light"]) .btn-primary { color: #0A1428; }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) .btn-primary { color: #FFFFFF; } }
.btn-ghost { color: var(--brand-ink); background: transparent; }
.btn-ghost:hover, .btn-ghost:focus-visible { background: var(--brand-soft); }
.cta-row { display: flex; gap: 12px; margin-top: 26px; flex-wrap: wrap; }
.cta-note { font-size: 13.5px; color: var(--muted); margin-top: 10px; }
.hero { padding: 64px 0; }
.hero-grid { display: grid; grid-template-columns: 1.12fr 1fr; gap: 44px; align-items: start; }
/* exhibit — аудиторская правка */
.exhibit { border: 1px solid var(--line); border-radius: 16px; background: var(--panel); overflow: hidden; box-shadow: var(--shadow); }
.exhibit-head { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.09em; text-transform: uppercase; color: var(--muted); padding: 11px 18px; border-bottom: 1px solid var(--line); background: var(--surface); display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.exhibit-row { padding: 13px 18px; border-bottom: 1px solid var(--line); font-size: 14.5px; }
.exhibit-row:last-child { border-bottom: none; }
.exhibit-line { display: flex; justify-content: space-between; gap: 14px; align-items: baseline; }
.exhibit-line .val { font-family: 'JetBrains Mono', monospace; font-variant-numeric: tabular-nums; white-space: nowrap; font-size: 13.5px; }
.strike { text-decoration: line-through; text-decoration-color: var(--warn); text-decoration-thickness: 1.5px; color: var(--muted); }
.corr { color: var(--warn); font-weight: 600; }
.margin-note { font-family: 'JetBrains Mono', monospace; font-size: 11.5px; color: var(--warn); margin-top: 4px; }
.margin-note.ok { color: var(--brand-ink); }
.exhibit-foot { padding: 11px 18px; font-size: 13px; color: var(--muted); background: var(--surface); }
/* doors */
.doors { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.door { display: block; text-decoration: none; color: var(--ink); background: var(--panel); border: 1px solid var(--line); border-radius: 16px; padding: 22px; transition: 0.15s; }
.door:hover, .door:focus-visible { border-color: var(--brand); transform: translateY(-3px); box-shadow: var(--shadow); }
.door svg { display: block; margin-bottom: 14px; }
.door h3 { font-family: 'Outfit', sans-serif; font-size: 19px; font-weight: 600; margin-bottom: 6px; }
.door p { font-size: 14.5px; color: var(--muted); }
.door .go { display: inline-block; margin-top: 12px; font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 14px; color: var(--brand-ink); }
/* services */
.svc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.svc { background: var(--panel); border: 1px solid var(--line); border-radius: 16px; padding: 20px 22px; }
.svc.flag { border: 1.5px solid var(--brand); background: var(--brand-soft); }
.svc h3 { font-family: 'Outfit', sans-serif; font-size: 17.5px; font-weight: 600; }
.svc .price { font-family: 'JetBrains Mono', monospace; font-size: 13.5px; color: var(--brand-ink); margin: 5px 0 8px; }
.svc p { font-size: 14.5px; color: var(--muted); }
/* method */
.method { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.method-card { border: 1px solid var(--line); border-radius: 16px; background: var(--panel); padding: 18px 20px; }
.method-card h3 { font-family: 'Outfit', sans-serif; font-size: 15.5px; font-weight: 600; margin-bottom: 6px; }
.method-card h3 .mono { color: var(--brand); font-size: 12px; }
.method-card p { font-size: 14px; color: var(--muted); }
/* pledge */
.pledge { display: flex; gap: 18px; background: var(--panel); border: 1.5px solid var(--brand); border-radius: 16px; padding: 22px 26px; align-items: flex-start; box-shadow: var(--shadow); }
.pledge .mark { flex-shrink: 0; width: 34px; height: 34px; border-radius: 10px; background: var(--brand-soft); display: flex; align-items: center; justify-content: center; color: var(--brand-ink); font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 18px; }
.pledge h3 { font-family: 'Outfit', sans-serif; font-size: 18px; font-weight: 600; margin-bottom: 6px; }
.pledge p { font-size: 15px; color: var(--muted); max-width: 74ch; }
/* steps */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; counter-reset: st; }
.step { background: var(--panel); border: 1px solid var(--line); border-radius: 16px; padding: 18px 20px; counter-increment: st; }
.step::before { content: counter(st, decimal-leading-zero); font-family: 'JetBrains Mono', monospace; color: var(--brand); font-weight: 600; font-size: 12.5px; letter-spacing: 0.08em; }
.step h3 { font-family: 'Outfit', sans-serif; font-size: 16px; font-weight: 600; margin: 6px 0 4px; }
.step p { font-size: 14px; color: var(--muted); }
/* pages */
.page-hero { padding: 56px 0 46px; }
.crumb { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--muted); margin-bottom: 6px; }
.crumb a { color: var(--muted); }
.deliv { border: 1px solid var(--line); border-radius: 16px; background: var(--panel); overflow: hidden; margin-top: 8px; }
.deliv-row { display: flex; gap: 14px; padding: 14px 20px; border-bottom: 1px solid var(--line); font-size: 15px; }
.deliv-row:last-child { border-bottom: none; }
.deliv-row .mono { color: var(--brand); font-size: 11.5px; padding-top: 4px; white-space: nowrap; font-weight: 500; }
.faq details { border-bottom: 1px solid var(--line); padding: 13px 0; }
.faq summary { font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 16px; cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 10px; }
.faq summary::after { content: "+"; font-family: 'JetBrains Mono', monospace; color: var(--brand); }
.faq details[open] summary::after { content: "\2212"; }
.faq summary:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; border-radius: 4px; }
.faq p { font-size: 15px; color: var(--muted); padding-top: 8px; max-width: 62ch; }
footer { border-top: 1px solid var(--line); padding: 26px 0 44px; color: var(--muted); font-size: 13px; background: var(--surface); }
.foot-in { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; align-items: center; }
.foot-in img { height: 28px; display: block; }
.spread-fig { margin-top: 30px; }
.spread-fig figcaption { font-size: 13px; color: var(--muted); margin-top: 8px; max-width: 72ch; }
@media (max-width: 880px) {
.hero-grid { grid-template-columns: 1fr; gap: 32px; }
.doors, .method, .steps { grid-template-columns: 1fr; }
.svc-grid { grid-template-columns: 1fr; }
.menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: none; padding: 0 0 0 12px; display: none; }
.drop:focus-within .menu, .drop:hover .menu { display: block; }
}
</style>
</head>
<body>
<nav><div class="wrap nav-in">
<a class="logo-link" href="#/" aria-label="breazu — home">
<img class="logo-light" src="assets/logo_with_name_transparentbg.svg" alt="breazu">
<img class="logo-dark" src="assets/logo_with_name_transparentbg_dark.svg" alt="breazu">
</a>
<div class="nav-links">
<div class="drop">
<button type="button" aria-haspopup="true">Services</button>
<div class="menu" role="menu">
<a href="#/buyers">Proposal audit<small>read a vendor&rsquo;s proposal before you sign it</small></a>
<a href="#/vendors">Proposal engineering<small>we build your proposal &mdash; estimate, defence, document</small></a>
<a href="#/inhouse">Independent estimate<small>a second number to test the internal one</small></a>
<a href="#services">Technical oversight<small>your eyes on the project after signature</small></a>
</div>
</div>
<div class="drop">
<button type="button" aria-haspopup="true">For whom</button>
<div class="menu" role="menu">
<a href="#/buyers">Buyers of development<small>2&ndash;3 proposals on the desk, signature ahead</small></a>
<a href="#/vendors">Vendors &amp; agencies<small>tenders to answer, presale hours to save</small></a>
<a href="#/inhouse">In-house teams<small>budget owners checking their own number</small></a>
</div>
</div>
<a href="report.html">Sample report</a>
<a href="mailto:hello@breazu.com">Contact</a>
</div>
</div></nav>
<!-- ════════ HOME ════════ -->
<div id="page-home">
<header class="hero"><div class="wrap hero-grid">
<div>
<h1 style="max-width: 16ch;">We read and write development estimates for a living.</h1>
<p class="sub" style="font-size: 19px;">A proposal is a financial instrument written by one side. breazu puts professional eyes on it &mdash; whichever side of the table you sit on. Never both sides of the same deal.</p>
<div class="cta-row">
<a class="btn btn-primary" href="#who">Who we work for</a>
<a class="btn btn-ghost" href="report.html">Read a sample audit</a>
</div>
</div>
<div class="exhibit" aria-label="Example of an audited estimate line">
<div class="exhibit-head"><span>Vendor estimate &middot; as received</span><span>audited</span></div>
<div class="exhibit-row">
<div class="exhibit-line"><span>Project management, phase 1</span><span class="val"><span class="strike">164 h</span> <span class="corr">140 h</span></span></div>
<div class="margin-note">F-01 &middot; 24 phantom hours &middot; &euro;1,248 attributed to nobody</div>
</div>
<div class="exhibit-row">
<div class="exhibit-line"><span>Warranty support</span><span class="val"><span class="strike">&ldquo;separate agreement&rdquo;</span></span></div>
<div class="margin-note">F-04 &middot; norm: 3 months included &middot; hidden &euro;14&ndash;18k</div>
</div>
<div class="exhibit-row">
<div class="exhibit-line"><span>Verdict</span><span class="val" style="color:var(--brand-ink);font-weight:600">SIGN WITH AMENDMENTS</span></div>
<div class="margin-note ok">&euro;84&ndash;112k exposure found on a &euro;284,600 contract</div>
</div>
<div class="exhibit-foot">From the <a href="report.html">sample audit report</a> &mdash; synthetic proposal, real defect patterns.</div>
</div>
</div></header>
<section id="who" class="alt"><div class="wrap">
<h2>Three chairs at the same table</h2>
<div class="doors">
<a class="door" href="#/buyers">
<svg width="44" height="34" viewBox="0 0 44 34" aria-hidden="true"><rect x="1.5" y="4" width="27" height="28" rx="6" fill="none" stroke="var(--muted)" stroke-width="1.6"/><line x1="8" y1="12" x2="23" y2="12" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><line x1="8" y1="18" x2="23" y2="18" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><line x1="8" y1="24" x2="17" y2="24" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><circle cx="33" cy="21" r="8" fill="none" stroke="var(--brand)" stroke-width="2.4"/><line x1="38.6" y1="26.6" x2="43" y2="31" stroke="var(--brand)" stroke-width="2.6" stroke-linecap="round"/></svg>
<h3>I&rsquo;m buying development</h3>
<p>Proposals on the desk differ by 2&times; and the contract reads smoothly. Audit before signature.</p>
<span class="go">Proposal audit &rarr;</span>
</a>
<a class="door" href="#/vendors">
<svg width="44" height="34" viewBox="0 0 44 34" aria-hidden="true"><rect x="1.5" y="4" width="27" height="28" rx="6" fill="none" stroke="var(--muted)" stroke-width="1.6"/><line x1="8" y1="12" x2="23" y2="12" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><line x1="8" y1="18" x2="23" y2="18" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><path d="M28 26 L40 8" stroke="var(--warn)" stroke-width="2.6" stroke-linecap="round"/><path d="M40 8 l1.8 5.4 M40 8 l-5.4 1.8" stroke="var(--warn)" stroke-width="2.2" stroke-linecap="round" fill="none"/></svg>
<h3>I&rsquo;m selling development</h3>
<p>Tenders keep coming and every proposal burns senior hours. We build the estimate and the document &mdash; you keep selling.</p>
<span class="go">Proposal engineering &rarr;</span>
</a>
<a class="door" href="#/inhouse">
<svg width="44" height="34" viewBox="0 0 44 34" aria-hidden="true"><rect x="1.5" y="4" width="18" height="28" rx="5" fill="none" stroke="var(--muted)" stroke-width="1.6"/><rect x="24.5" y="4" width="18" height="28" rx="5" fill="none" stroke="var(--brand)" stroke-width="2"/><line x1="6.5" y1="13" x2="14.5" y2="13" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><line x1="6.5" y1="19" x2="14.5" y2="19" stroke="var(--muted)" stroke-width="1.6" stroke-linecap="round"/><line x1="29.5" y1="13" x2="37.5" y2="13" stroke="var(--brand)" stroke-width="1.8" stroke-linecap="round"/><line x1="29.5" y1="19" x2="37.5" y2="19" stroke="var(--brand)" stroke-width="1.8" stroke-linecap="round"/></svg>
<h3>We build in-house</h3>
<p>The team says nine months; the board asks who checked. An independent estimate gives the internal number something to argue with.</p>
<span class="go">Independent estimate &rarr;</span>
</a>
</div>
<figure class="spread-fig">
<svg viewBox="0 0 720 150" width="100%" style="max-width:720px; height:auto; display:block;" role="img" aria-label="Three proposals for the same scope: 121, 164 and 243 thousand euros">
<line x1="120" y1="122" x2="700" y2="122" stroke="var(--line)" stroke-width="1.5"/>
<text x="10" y="43" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--muted)">Proposal A</text>
<rect x="120" y="30" width="196" height="20" rx="6" fill="var(--brand)" opacity="0.45"/>
<text x="324" y="45" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--ink)">&euro;121k</text>
<text x="10" y="78" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--muted)">Proposal B</text>
<rect x="120" y="65" width="266" height="20" rx="6" fill="var(--brand)" opacity="0.7"/>
<text x="394" y="80" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--ink)">&euro;164k</text>
<text x="10" y="113" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--muted)">Proposal C</text>
<rect x="120" y="100" width="394" height="20" rx="6" fill="var(--brand)"/>
<text x="522" y="115" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--ink)">&euro;243k</text>
<path d="M326 40 C 420 16, 495 55, 516 96" fill="none" stroke="var(--warn)" stroke-width="1.8" stroke-dasharray="5 4"/>
<text x="420" y="24" font-family="JetBrains Mono, monospace" font-size="13" fill="var(--warn)">2&times; &mdash; why?</text>
</svg>
<figcaption>The same scope, priced by three vendors. The spread is not noise &mdash; it is scope cuts, padded hours and parked risk.</figcaption>
</figure>
</div></section>
<section id="services"><div class="wrap">
<h2>Services</h2>
<div class="svc-grid" style="margin-top: 20px;">
<div class="svc"><h3>Proposal audit</h3><div class="price">express &euro;600&ndash;900 &middot; 48h &nbsp;|&nbsp; full &euro;2,500&ndash;4,000 &middot; 5 days</div><p>Up to three proposals brought to one base: findings with euros at risk, amendment language, a verdict. <a href="#/buyers">For buyers &rarr;</a></p></div>
<div class="svc"><h3>Proposal engineering</h3><div class="price">from &euro;1,900 per proposal &middot; 3&ndash;5 days</div><p>Your proposal: line-by-line estimate, two pricing passes, defence notes for the pitch. <a href="#/vendors">For vendors &rarr;</a></p></div>
<div class="svc"><h3>Independent estimate</h3><div class="price">&euro;2,000&ndash;3,500 &middot; 5 days</div><p>A second number for scope your team priced &mdash; built blind, then reconciled line by line. <a href="#/inhouse">For in-house teams &rarr;</a></p></div>
<div class="svc flag"><h3>Technical oversight</h3><div class="price">&euro;1,500&ndash;2,500 / month</div><p>After signature: demo attendance, delivery vs. paid scope, change-request control.</p></div>
</div>
</div></section>
<section class="alt"><div class="wrap">
<h2>One method behind every service</h2>
<div class="method" style="margin-top: 20px;">
<div class="method-card"><h3><span class="mono">A&nbsp;&middot;</span> Craft invariants</h3><p>Every estimate recomputed and tested against observed ranges: granularity, QA and management shares, rate grids.</p></div>
<div class="method-card"><h3><span class="mono">B&nbsp;&middot;</span> Unit benchmarks</h3><p>Hours per service, per integration, per app channel.</p></div>
<div class="method-card"><h3><span class="mono">C&nbsp;&middot;</span> Both sides of the table</h3><p>Eight years writing winning proposals; a benchmark built on 12+ proposals we&rsquo;ve written or audited.</p></div>
</div>
<div class="pledge" style="margin-top: 20px;">
<div class="mark">&#10003;</div>
<div>
<h3>The conflict rule</h3>
<p>We never work for both sides of the same deal, never audit a proposal we wrote, and take no referral fees.</p>
</div>
</div>
</div></section>
<section style="padding: 64px 0;"><div class="wrap">
<h2 class="display">Send us the proposal on your desk.</h2>
<div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=breazu">Write to us &mdash; reply within one business day</a>
</div>
</div></section>
</div>
<!-- ════════ BUYERS ════════ -->
<div id="page-buyers" hidden>
<header class="page-hero"><div class="wrap">
<div class="crumb"><a href="#/">breazu</a> / for buyers</div>
<h1 style="max-width: 18ch;">Know what you&rsquo;re signing.</h1>
<p class="sub" style="font-size: 18px;">You&rsquo;re about to commit &euro;50k&ndash;2m on documents written by the other side. We recompute every line, test the price against benchmarks, and read the contract the way it will be read in a dispute &mdash; then hand you the amendments.</p>
<div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Express%20check">Express check &mdash; from &euro;600 &middot; 48 hours</a>
<a class="btn btn-ghost" href="report.html">Read a sample report</a>
</div>
</div></header>
<section class="alt"><div class="wrap">
<h2>What the report answers</h2>
<div class="deliv" style="max-width: 780px;">
<div class="deliv-row"><span class="mono">01</span><span>Does the estimate add up &mdash; hours, rates, totals, blocks against the cover price?</span></div>
<div class="deliv-row"><span class="mono">02</span><span>Where does the attractive price come from &mdash; efficiency, or QA and management priced at zero?</span></div>
<div class="deliv-row"><span class="mono">03</span><span>Which exclusions will return as change requests, and at what probable cost?</span></div>
<div class="deliv-row"><span class="mono">04</span><span>Which promises have no delivering line in the estimate?</span></div>
<div class="deliv-row"><span class="mono">05</span><span>Does the contract protect you &mdash; acceptance, warranty, delays, IP &mdash; and if not, the exact amendment language?</span></div>
<div class="deliv-row"><span class="mono">06</span><span>What will it cost to own after go-live?</span></div>
</div>
</div></section>
<section><div class="wrap">
<h2>How it works</h2>
<div class="steps" style="margin-top: 18px;">
<div class="step"><h3>Send what you have</h3><p>Proposal, estimate, draft contract &mdash; any format. Vendor names can be redacted.</p></div>
<div class="step"><h3>We audit</h3><p>48 hours for one proposal express; five business days for a full audit of up to three, brought to one comparable base.</p></div>
<div class="step"><h3>You decide, armed</h3><p>Findings with money at risk, paste-ready amendments, and a 60-minute call before you reply to vendors.</p></div>
</div>
<p class="cta-note" style="margin-top:16px;">Full audit &euro;2,500&ndash;4,000. If the express check finds nothing worth going deeper, we say so.</p>
</div></section>
<section class="alt"><div class="wrap">
<h2>Questions buyers ask</h2>
<div class="faq" style="max-width: 720px; margin-top: 10px;">
<details><summary>Won&rsquo;t this sour the vendor relationship?</summary><p>Serious vendors accept most of the amendments &mdash; defined acceptance criteria protect them too.</p></details>
<details><summary>Our documents are confidential.</summary><p>NDA before documents, reports addressed to you alone, nothing you send is reused in any form.</p></details>
<details><summary>Can you just pick the vendor for us?</summary><p>The audit ends in a verdict per proposal: sign / sign with listed amendments / don&rsquo;t sign, with reasons.</p></details>
</div>
<div class="cta-row"><a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Proposal%20audit">Send your proposal</a></div>
</div></section>
</div>
<!-- ════════ VENDORS ════════ -->
<div id="page-vendors" hidden>
<header class="page-hero"><div class="wrap">
<div class="crumb"><a href="#/">breazu</a> / for vendors &amp; agencies</div>
<h1 style="max-width: 20ch;">Your proposal, built while your seniors keep building.</h1>
<p class="sub" style="font-size: 18px;">Every tender answer costs you 40&ndash;80 senior hours &mdash; architect, lead, PM &mdash; pulled off billable work, with no guarantee of winning. We produce the estimate and the proposal document, built by people who audit proposals for buyers.</p>
<div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Proposal%20engineering">Discuss your tender &mdash; reply in one business day</a>
</div>
</div></header>
<section class="alt"><div class="wrap">
<h2>What you receive</h2>
<div class="deliv" style="max-width: 780px;">
<div class="deliv-row"><span class="mono">01</span><span>Line-by-line estimate: hours per role, scope boundaries per line (&ldquo;included / explicitly not included&rdquo;), options separated from base scope.</span></div>
<div class="deliv-row"><span class="mono">02</span><span>Two pricing passes: an honest engineering estimate, then a competitive pass &mdash; staged delivery, reuse, production-model options &mdash; with every cut documented, never hidden in quality.</span></div>
<div class="deliv-row"><span class="mono">03</span><span>The proposal document itself: budget and timeline, team, phased plan, risks with mitigations, assumptions and client questions &mdash; presentation-grade.</span></div>
<div class="deliv-row"><span class="mono">04</span><span>Defence notes: the questions a sharp client (or their auditor) will ask, and the answers.</span></div>
</div>
<p class="cta-note" style="margin-top:14px;">From &euro;1,900 per proposal &middot; 3&ndash;5 business days. Volume pricing for agencies with steady tender flow.</p>
</div></section>
<section><div class="wrap">
<h2>The line we don&rsquo;t cross</h2>
<p class="sec-sub">We never sit on both sides of the same deal, and we never audit a proposal we wrote. If your client hires us to audit it, we disclose and step aside.</p>
<div class="faq" style="max-width: 720px;">
<details><summary>Will you work under our brand?</summary><p>Yes &mdash; the deliverable is yours, white-label.</p></details>
<details><summary>Our rates and margins are sensitive.</summary><p>NDA first, and your commercial data never enters our benchmark base.</p></details>
<details><summary>What do you need from us to start?</summary><p>The RFP/brief, your rate card and team model, and 60 minutes with whoever owns the deal. First draft of the estimate in 48 hours.</p></details>
</div>
<div class="cta-row"><a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Proposal%20engineering">Send the tender brief</a></div>
</div></section>
</div>
<!-- ════════ IN-HOUSE ════════ -->
<div id="page-inhouse" hidden>
<header class="page-hero"><div class="wrap">
<div class="crumb"><a href="#/">breazu</a> / for in-house teams</div>
<h1 style="max-width: 20ch;">A second number the board can trust.</h1>
<p class="sub" style="font-size: 18px;">When the only estimate is the team&rsquo;s own, the budget owner has nothing to test it against. We build an independent estimate of the same scope &mdash; blind &mdash; then reconcile the two numbers in one working session.</p>
<div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Independent%20estimate">Get a second number &mdash; &euro;2,000&ndash;3,500 &middot; 5 days</a>
</div>
<p class="cta-note">NDA before documents, as on every engagement.</p>
</div></header>
<section class="alt"><div class="wrap">
<h2>What you receive</h2>
<div class="deliv" style="max-width: 780px;">
<div class="deliv-row"><span class="mono">01</span><span>An independent estimate built from your scope documents: hours per role, granularity &le;100h per line, benchmarked against our proposal base.</span></div>
<div class="deliv-row"><span class="mono">02</span><span>Line-by-line reconciliation with the internal estimate: whose assumption drives each gap.</span></div>
<div class="deliv-row"><span class="mono">03</span><span>A one-page summary the budget owner can take to the board: the number, its range, and what would change it.</span></div>
</div>
</div></section>
<section><div class="wrap">
<h2>Both directions welcome</h2>
<p class="sec-sub">Commissioned by budget owners testing a number &mdash; and by teams defending one. The method is the same either way.</p>
<div class="faq" style="max-width: 720px;">
<details><summary>Won&rsquo;t the team see this as distrust?</summary><p>In practice the reconciliation session often ends with the team adopting the parts that make their own number defensible.</p></details>
<details><summary>We also got vendor quotes &mdash; can you compare all of it?</summary><p>Yes: internal estimate, vendor proposals and our independent number on one base &mdash; that&rsquo;s the full audit service.</p></details>
</div>
<div class="cta-row"><a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Independent%20estimate">Send your scope</a></div>
</div></section>
</div>
<footer><div class="wrap foot-in">
<a class="logo-link" href="#/" aria-label="breazu">
<img class="logo-light" src="assets/logo_with_name_transparentbg.svg" alt="breazu">
<img class="logo-dark" src="assets/logo_with_name_transparentbg_dark.svg" alt="breazu">
</a>
<span>Independent eyes on software estimates.</span>
<span class="mono">hello@breazu.com &middot; EU</span>
</div></footer>
<script>
(function () {
var pages = ['home', 'buyers', 'vendors', 'inhouse'];
function route() {
var h = location.hash.replace(/^#\/?/, '') || 'home';
if (pages.indexOf(h) === -1) return; /* обычные якоря (#who, #services) не трогаем */
pages.forEach(function (p) {
document.getElementById('page-' + p).hidden = (p !== h);
});
window.scrollTo(0, 0);
}
window.addEventListener('hashchange', route);
route();
})();
</script>
</body>
</html>
+355
View File
@@ -0,0 +1,355 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>breazu — Sample Audit</title>
<meta name="description" content="Sample independent audit of a synthetic fixed-price development proposal — 10 findings, 7 amendments, a verdict.">
<link rel="icon" href="assets/app_icon_light.svg" type="image/svg+xml">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Outfit:wght@500;600;700&family=Figtree:wght@400;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap">
<style>
:root {
--paper: #FFFFFF;
--surface: #F4F7FC;
--ink: #011B3E;
--muted: #4A5B75;
--line: #DCE4F0;
--brand: #0863FD;
--brand-ink: #0550D6;
--brand-soft: #E8F0FE;
--warn: #FE7228;
--warn-soft: #FFEFE4;
--crit: #DC3D43;
--crit-soft: #FCE9EA;
--panel: #FFFFFF;
--shadow: 0 10px 30px rgba(1, 27, 62, 0.07);
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--paper: #0A1428;
--surface: #101D36;
--ink: #EAF0FA;
--muted: #93A5C1;
--line: #26385C;
--brand: #4C8DFF;
--brand-ink: #7FAEFF;
--brand-soft: #14294D;
--warn: #FF8A47;
--warn-soft: #3A2210;
--crit: #F26A6F;
--crit-soft: #3B1A1D;
--panel: #101D36;
--shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}
}
:root[data-theme="dark"] {
--paper: #0A1428;
--surface: #101D36;
--ink: #EAF0FA;
--muted: #93A5C1;
--line: #26385C;
--brand: #4C8DFF;
--brand-ink: #7FAEFF;
--brand-soft: #14294D;
--warn: #FF8A47;
--warn-soft: #3A2210;
--crit: #F26A6F;
--crit-soft: #3B1A1D;
--panel: #101D36;
--shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}
* { box-sizing: border-box; margin: 0; }
body { background: var(--paper); color: var(--ink); font-family: 'Figtree', 'Segoe UI', sans-serif; font-size: 16.5px; line-height: 1.62; }
.mono { font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace; }
.page { max-width: 920px; margin: 0 auto; padding: 40px 28px 80px; }
a { color: var(--brand-ink); }
.logo-light { display: block; }
.logo-dark { display: none; }
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) .logo-light { display: none; }
:root:not([data-theme="light"]) .logo-dark { display: block; }
}
:root[data-theme="dark"] .logo-light { display: none; }
:root[data-theme="dark"] .logo-dark { display: block; }
/* letterhead */
.letterhead { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; border-bottom: 2px solid var(--ink); padding-bottom: 16px; }
.letterhead img { height: 42px; width: auto; display: block; }
.lh-right { font-family: 'JetBrains Mono', monospace; font-size: 11.5px; color: var(--muted); text-align: right; letter-spacing: 0.04em; }
.demo-band { margin-top: 16px; display: inline-flex; align-items: center; gap: 8px; font-family: 'JetBrains Mono', monospace; font-size: 11.5px; letter-spacing: 0.08em; color: var(--warn); background: var(--warn-soft); border: 1px solid color-mix(in srgb, var(--warn) 35%, transparent); padding: 5px 12px; border-radius: 999px; }
h1 { font-family: 'Outfit', sans-serif; font-size: clamp(26px, 4.5vw, 34px); line-height: 1.18; font-weight: 700; letter-spacing: -0.015em; margin: 26px 0 8px; text-wrap: balance; }
.subtitle { color: var(--muted); font-size: 16px; max-width: 64ch; }
/* object */
.object { margin: 28px 0 0; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--panel); }
.object-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.object-cell { padding: 13px 18px; border-right: 1px solid var(--line); }
.object-cell:last-child { border-right: none; }
.object-label { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: 0.09em; text-transform: uppercase; color: var(--muted); }
.object-value { font-size: 15.5px; font-weight: 600; margin-top: 3px; }
.object-note { border-top: 1px solid var(--line); padding: 11px 18px; font-size: 13.5px; color: var(--muted); background: var(--surface); }
/* verdict */
.verdict { margin: 26px 0 0; border: 1.5px solid var(--brand); border-radius: 14px; background: var(--panel); overflow: hidden; box-shadow: var(--shadow); }
.verdict-head { display: flex; align-items: center; gap: 14px; padding: 16px 22px; background: var(--brand-soft); flex-wrap: wrap; }
.stamp { font-family: 'JetBrains Mono', monospace; font-weight: 600; font-size: 13.5px; letter-spacing: 0.1em; color: var(--brand-ink); border: 2px solid var(--brand); padding: 6px 14px; border-radius: 999px; white-space: nowrap; }
.verdict-line { font-family: 'Outfit', sans-serif; font-size: 17px; font-weight: 600; }
.verdict-figures { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); }
.vf { padding: 14px 22px; border-right: 1px solid var(--line); }
.vf:last-child { border-right: none; }
.vf-num { font-family: 'JetBrains Mono', monospace; font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; }
.vf-num.red { color: var(--warn); }
.vf-num.green { color: var(--brand-ink); }
.vf-cap { font-size: 13px; color: var(--muted); margin-top: 2px; }
.verdict-body { padding: 14px 22px 16px; font-size: 15.5px; border-top: 1px solid var(--line); }
section { margin-top: 44px; }
.sec-head { display: flex; align-items: baseline; gap: 12px; border-bottom: 1px solid var(--line); padding-bottom: 8px; margin-bottom: 18px; }
.sec-num { font-family: 'JetBrains Mono', monospace; font-size: 13px; color: var(--brand); font-weight: 600; }
h2 { font-family: 'Outfit', sans-serif; font-size: 21px; font-weight: 700; letter-spacing: -0.01em; }
/* tables */
.tbl-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 14px; }
table { width: 100%; border-collapse: collapse; font-size: 14.5px; background: var(--panel); }
thead th { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); text-align: left; padding: 10px 14px; border-bottom: 1.5px solid var(--line); background: var(--surface); white-space: nowrap; }
tbody td { padding: 10px 14px; border-bottom: 1px solid var(--line); vertical-align: top; }
tbody tr:last-child td { border-bottom: none; }
td.fid { font-family: 'JetBrains Mono', monospace; color: var(--muted); font-size: 12.5px; white-space: nowrap; }
td.exposure { font-family: 'JetBrains Mono', monospace; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.sev { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: 0.07em; padding: 2px 10px; border-radius: 999px; white-space: nowrap; }
.sev-crit { color: var(--crit); background: var(--crit-soft); }
.sev-major { color: var(--warn); background: var(--warn-soft); }
.sev-check { color: var(--brand-ink); background: var(--brand-soft); }
/* finding cards */
.finding { border: 1px solid var(--line); border-radius: 14px; background: var(--panel); margin-bottom: 18px; overflow: hidden; }
.finding-head { display: flex; align-items: baseline; gap: 12px; padding: 13px 20px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.finding-head .fid { font-family: 'JetBrains Mono', monospace; color: var(--muted); font-size: 12.5px; }
.finding-title { font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 16.5px; flex: 1; min-width: 200px; }
.finding-body { padding: 14px 20px 16px; }
.finding-body p { margin-bottom: 10px; max-width: 74ch; }
.finding-body p:last-child { margin-bottom: 0; }
.evidence { font-size: 14px; border-left: 3px solid var(--warn); padding: 9px 16px; margin: 10px 0; color: var(--muted); font-style: italic; background: var(--surface); border-radius: 0 8px 8px 0; }
.evidence .mono { font-style: normal; font-size: 12.5px; }
.fix { display: flex; gap: 10px; margin-top: 12px; padding: 11px 16px; background: var(--brand-soft); border-radius: 10px; font-size: 14.5px; }
.fix strong { color: var(--brand-ink); font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.08em; padding-top: 3px; }
.strike { text-decoration: line-through; text-decoration-color: var(--warn); text-decoration-thickness: 1.5px; color: var(--muted); }
.corr { color: var(--warn); font-weight: 600; }
/* amendments */
ol.amendments { counter-reset: am; list-style: none; padding: 0; }
ol.amendments li { counter-increment: am; position: relative; padding: 13px 18px 13px 60px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); margin-bottom: 10px; font-size: 15px; }
ol.amendments li::before { content: "A" counter(am); position: absolute; left: 14px; top: 13px; font-family: 'JetBrains Mono', monospace; font-size: 12.5px; font-weight: 600; color: var(--brand-ink); border: 1px solid var(--brand); border-radius: 999px; padding: 1px 8px; }
.note { font-size: 13.5px; color: var(--muted); margin-top: 12px; max-width: 74ch; }
.method { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.method-card { border: 1px solid var(--line); border-radius: 14px; background: var(--panel); padding: 15px 18px; }
.method-card h3 { font-family: 'Outfit', sans-serif; font-size: 15px; font-weight: 600; margin-bottom: 6px; }
.method-card h3 .mono { color: var(--brand); font-size: 12px; }
.method-card p { font-size: 13.5px; color: var(--muted); }
.closing { margin-top: 44px; border-top: 2px solid var(--ink); padding-top: 18px; display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.closing .sig { font-size: 15px; }
.closing .sig .mono { font-size: 12px; color: var(--muted); }
.disclaimer { margin-top: 26px; font-size: 12.5px; color: var(--muted); border: 1px dashed var(--line); border-radius: 12px; padding: 12px 18px; }
.backlink { display: inline-block; margin-top: 20px; font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 14.5px; }
@media (max-width: 760px) {
.object-grid, .verdict-figures, .method { grid-template-columns: 1fr 1fr; }
.vf:nth-child(2) { border-right: none; }
.vf:last-child { border-top: 1px solid var(--line); border-right: 1px solid var(--line); }
}
@media (max-width: 520px) {
.object-grid, .verdict-figures, .method { grid-template-columns: 1fr; }
.object-cell, .vf { border-right: none; border-bottom: 1px solid var(--line); }
}
</style>
</head>
<body>
<div class="page">
<header class="letterhead">
<a href="index.html" aria-label="breazu — home" style="display:inline-flex;">
<img class="logo-light" src="assets/logo_with_name_transparentbg.svg" alt="breazu">
<img class="logo-dark" src="assets/logo_with_name_transparentbg_dark.svg" alt="breazu">
</a>
<div class="lh-right">INDEPENDENT PROPOSAL AUDIT<br>REF BZ-2026-DEMO</div>
</header>
<div class="demo-band">SAMPLE REPORT &middot; SYNTHETIC PROPOSAL &middot; NO REAL CLIENT DATA</div>
<h1>Audit of a fixed-price development proposal: mobile ecosystem for a fitness chain</h1>
<p class="subtitle">Prepared for the buyer&rsquo;s side before contract signature. The vendor is anonymised; the proposal was written the way real proposals are written.</p>
<div class="object">
<div class="object-grid">
<div class="object-cell"><div class="object-label">Client</div><div class="object-value">NordFit Group (24 clubs)</div></div>
<div class="object-cell"><div class="object-label">Vendor</div><div class="object-value">Vendor A (anonymised)</div></div>
<div class="object-cell"><div class="object-label">Contract value</div><div class="object-value mono">&euro;284,600</div></div>
<div class="object-cell"><div class="object-label">Timeline / items</div><div class="object-value mono">7 mo &middot; 96 lines</div></div>
</div>
<div class="object-note">Object: fixed-price proposal for two mobile apps, a member web portal and migration from the incumbent club-management system. Documents received: proposal (PDF, 31 pp.), estimate (XLSX, 96 line items), draft contract.</div>
</div>
<div class="verdict">
<div class="verdict-head">
<span class="stamp">SIGN WITH AMENDMENTS</span>
<span class="verdict-line">Signable deal &mdash; after 7 contract amendments and a corrected estimate.</span>
</div>
<div class="verdict-figures">
<div class="vf"><div class="vf-num red">&euro;84&ndash;112k</div><div class="vf-cap">probable exposure found: likely change requests, unpriced obligations, arithmetic</div></div>
<div class="vf"><div class="vf-num">10</div><div class="vf-cap">findings &middot; 3 critical, 5 major, 2 for vendor clarification</div></div>
<div class="vf"><div class="vf-num green">&euro;31,000/yr</div><div class="vf-cap">cost of ownership the proposal does not mention</div></div>
</div>
<div class="verdict-body">The price is within market range for the scope and the team is plausibly sized. Unamended, the contract allows the final cost to drift 30&ndash;40% above signature price through mechanisms already written into the text.</div>
</div>
<section>
<div class="sec-head"><span class="sec-num mono">01</span><h2>Findings index</h2></div>
<div class="tbl-wrap">
<table>
<thead><tr><th>ID</th><th>Finding</th><th>Severity</th><th style="text-align:right">Exposure</th></tr></thead>
<tbody>
<tr><td class="fid">F-01</td><td>Estimate arithmetic: 4 line totals exceed the sum of role hours</td><td><span class="sev sev-crit">CRITICAL</span></td><td class="exposure">&euro;3,328</td></tr>
<tr><td class="fid">F-02</td><td>&ldquo;Fixed&rdquo; price is not fixed: re-confirmation after discovery, no cap</td><td><span class="sev sev-crit">CRITICAL</span></td><td class="exposure">unbounded</td></tr>
<tr><td class="fid">F-03</td><td>Stated goal depends on a paid option: data migration priced outside base scope</td><td><span class="sev sev-crit">CRITICAL</span></td><td class="exposure">&euro;19,800</td></tr>
<tr><td class="fid">F-04</td><td>Warranty excluded from price (&ldquo;separate agreement&rdquo;)</td><td><span class="sev sev-major">MAJOR</span></td><td class="exposure">&euro;14&ndash;18k</td></tr>
<tr><td class="fid">F-05</td><td>Dependency clause without a ceiling: any client-side delay shifts timeline &ldquo;accordingly&rdquo;</td><td><span class="sev sev-major">MAJOR</span></td><td class="exposure">schedule</td></tr>
<tr><td class="fid">F-06</td><td>Acceptance undefined: no criteria, no review window, no dispute path</td><td><span class="sev sev-major">MAJOR</span></td><td class="exposure">disputes</td></tr>
<tr><td class="fid">F-07</td><td>Quality contour cut: QA 9% of hours, project management 3.9%</td><td><span class="sev sev-major">MAJOR</span></td><td class="exposure">delivery risk</td></tr>
<tr><td class="fid">F-08</td><td>11 scope exclusions likely to return as change requests</td><td><span class="sev sev-major">MAJOR</span></td><td class="exposure">&euro;47&ndash;71k</td></tr>
<tr><td class="fid">F-09</td><td>Total cost of ownership absent: hosting, licences, stores, support</td><td><span class="sev sev-check">CLARIFY</span></td><td class="exposure">&euro;31k/yr</td></tr>
<tr><td class="fid">F-10</td><td>&ldquo;Senior team&rdquo; at blended &euro;52/h &mdash; grades or margin, one of the two</td><td><span class="sev sev-check">CLARIFY</span></td><td class="exposure">question</td></tr>
</tbody>
</table>
</div>
</section>
<section>
<div class="sec-head"><span class="sec-num mono">02</span><h2>Findings in detail</h2></div>
<div class="finding">
<div class="finding-head"><span class="fid">F-01</span><span class="finding-title">The estimate does not add up &mdash; in the vendor&rsquo;s favour</span><span class="sev sev-crit">CRITICAL</span></div>
<div class="finding-body">
<p>We recompute every line: hours per role &times; rate, against the line total. Four lines carry totals larger than the sum of their own role hours &mdash; 64 phantom hours in total.</p>
<div class="evidence">Line 41 &ldquo;Project management, phase 1&rdquo;: role hours sum to <span class="mono">140 h</span>, line total states <span class="mono"><span class="strike">164 h</span></span> &mdash; <span class="mono corr">+24 h &middot; &euro;1,248</span> priced but not attributed to anyone&rsquo;s work.</div>
<p>At the proposal&rsquo;s blended rate the four lines add <strong>&euro;3,328</strong> of cost with no corresponding labour. In our practice this is rarely fraud &mdash; usually a spreadsheet edited late at night.</p>
<div class="fix"><strong>ACTION</strong><span>Vendor corrects the four lines or attributes the hours to named roles. A two-minute fix.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-02</span><span class="finding-title">A fixed price that reserves the right not to be</span><span class="sev sev-crit">CRITICAL</span></div>
<div class="finding-body">
<p>The cover says fixed price. Section 4.2 of the draft contract says otherwise:</p>
<div class="evidence">&ldquo;The final project cost shall be confirmed by the parties upon completion of the discovery phase.&rdquo;</div>
<p>No ceiling, no formula, no walk-away right. You would be signing a number that becomes negotiable after you have already paid for discovery and committed the calendar &mdash; the moment your negotiating position is weakest.</p>
<div class="fix"><strong>ACTION</strong><span>Amendment A1: post-discovery adjustment bounded to &plusmn;10% with itemised justification, and a no-cost exit if the vendor&rsquo;s revised price exceeds the cap.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-03</span><span class="finding-title">The promised outcome depends on an option you have not bought</span><span class="sev sev-crit">CRITICAL</span></div>
<div class="finding-body">
<p>Page 3 promises a &ldquo;seamless transition for all existing members&rdquo;. The mechanism for that promise &mdash; migration of member data, subscriptions and visit history &mdash; sits in the options table at <span class="mono">&euro;19,800</span>, outside the base price.</p>
<p>Every proposal we audit gets this test: <em>for each stated goal, where is the line that delivers it?</em> A goal without a mechanism is the single most reliable predictor of a mid-project dispute.</p>
<div class="fix"><strong>ACTION</strong><span>Amendment A5: migration moves into base scope at an agreed price, or the &ldquo;seamless transition&rdquo; language is removed and NordFit plans migration separately.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-04</span><span class="finding-title">Warranty is outside the price</span><span class="sev sev-major">MAJOR</span></div>
<div class="finding-body">
<div class="evidence">&ldquo;Warranty support shall be subject to a separate agreement.&rdquo;</div>
<p>Market practice for this scope is 3 months of defect-fixing included, with a named response time for critical incidents. Here, the day after acceptance every defect is billable. On comparable builds, first-quarter defect flow prices at <strong>&euro;14&ndash;18k</strong> &mdash; a hidden 5&ndash;6% on top of the contract.</p>
<div class="fix"><strong>ACTION</strong><span>Amendment A2: 3-month warranty in price; defects of production severity fixed at no charge; critical response &le; 4 business hours; &ldquo;defect vs. new requirement&rdquo; defined in the same clause.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-05</span><span class="finding-title">One late API and the calendar belongs to nobody</span><span class="sev sev-major">MAJOR</span></div>
<div class="finding-body">
<div class="evidence">&ldquo;Should client-side dependencies be delayed, the delivery timeline shifts accordingly.&rdquo;</div>
<p>&ldquo;Accordingly&rdquo; has no ceiling and no renegotiation trigger. A two-week delay on your side can legitimise an open-ended shift on theirs, with the burden of proof on you. Symmetry is absent: the contract prices no consequence for vendor-side slippage at all.</p>
<div class="fix"><strong>ACTION</strong><span>Amendment A3: shift equals documented delay, capped at 15 business days, then mandatory re-plan; vendor delay mirrored with a capped penalty (0.1%/day, max 10% of stage).</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-06</span><span class="finding-title">Acceptance is a signature, not a test</span><span class="sev sev-major">MAJOR</span></div>
<div class="finding-body">
<p>Acceptance is defined as &ldquo;signing of the acceptance act&rdquo;. Nothing says what is being verified, how long you have to review, what a rejection must contain, or what happens when you disagree. In practice this clause converts every quality dispute into a payment dispute.</p>
<div class="fix"><strong>ACTION</strong><span>Amendment A4: acceptance against demonstration scenarios fixed per stage; 10 business days to review; rejection only as a single itemised list; defect severity classes defined; silence = acceptance, in both directions.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-07</span><span class="finding-title">The savings live in the quality budget</span><span class="sev sev-major">MAJOR</span></div>
<div class="finding-body">
<p>Against our benchmark of comparable estimates: QA at <span class="mono">9%</span> of hours sits well under the observed <span class="mono">14&ndash;27%</span>; project management at <span class="mono">3.9%</span> under <span class="mono">8&ndash;18%</span>. This is where the attractive price comes from. Under-priced coordination and testing return as your staff doing the vendor&rsquo;s management, and as defects after go-live.</p>
<div class="fix"><strong>ACTION</strong><span>Ask the vendor to either restore QA/PM to defensible levels with a price adjustment, or contractually name the client-side effort they are assuming.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-08</span><span class="finding-title">Eleven exclusions, priced at zero, waiting to be change requests</span><span class="sev sev-major">MAJOR</span></div>
<div class="finding-body">
<p>We score every exclusion by the probability the project cannot ship without it. Of 19 exclusions, 11 are functions NordFit will almost certainly need in year one &mdash; among them payment retries on failed direct debits, staff access roles, and GDPR data-deletion flows. Priced at vendor rates, the likely change-request tail is <strong>&euro;47&ndash;71k</strong> (17&ndash;25% of the contract).</p>
<div class="fix"><strong>ACTION</strong><span>Amendment A6: pre-price the top 6 exclusions as fixed-price options at signature (vendors price generously once the contract is theirs); cap annual CR volume subject to re-tender.</span></div>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-09</span><span class="finding-title">What it costs to own, not just to build</span><span class="sev sev-check">CLARIFY</span></div>
<div class="finding-body">
<p>The proposal is silent on running costs. Reconstructed from its own architecture: cloud hosting ~&euro;9,600/yr, third-party licences ~&euro;4,400/yr, store accounts &euro;125/yr, and post-warranty support at the vendor&rsquo;s stated rate ~&euro;17,000/yr &mdash; roughly <strong>&euro;31,000 per year</strong>, or 33% of the build price over three years. It belongs in your budget before signature.</p>
</div>
</div>
<div class="finding">
<div class="finding-head"><span class="fid">F-10</span><span class="finding-title">&ldquo;Senior team&rdquo; at &euro;52/hour</span><span class="sev sev-check">CLARIFY</span></div>
<div class="finding-body">
<p>The blended rate is plausible for a strong mid-level team and low for the all-senior team the proposal describes. One of two things is true: the grades are optimistic (then F-07 is the mechanism), or the vendor is pricing to win. A direct question tends to produce an honest answer and a useful clause: named key people with substitution rights.</p>
</div>
</div>
</section>
<section>
<div class="sec-head"><span class="sec-num mono">03</span><h2>Required amendments before signature</h2></div>
<ol class="amendments">
<li>Post-discovery price adjustment bounded to &plusmn;10%, itemised, with a no-cost exit above the cap. <em>(F-02)</em></li>
<li>3-month warranty inside the price; critical response &le; 4 business hours; defect defined. <em>(F-04)</em></li>
<li>Delay symmetry: client-delay shift capped at 15 business days, vendor-delay penalty capped at 10% of stage. <em>(F-05)</em></li>
<li>Acceptance by demonstration scenarios, 10-day review window, itemised rejection, severity classes. <em>(F-06)</em></li>
<li>Member-data migration resolved at signature: in scope, or promise removed. <em>(F-03)</em></li>
<li>Top-6 exclusions pre-priced as options; corrected estimate lines (F-01) attached as the binding version. <em>(F-08, F-01)</em></li>
<li>IP and code escrow: repository access from day one, title passing per paid stage. <em>(standard)</em></li>
</ol>
<p class="note">Each amendment is drafted in the full report as ready-to-paste contract language. Vendors accept most of them in our experience &mdash; these are terms a serious vendor can live with.</p>
</section>
<section>
<div class="sec-head"><span class="sec-num mono">04</span><h2>Method: how we read a proposal</h2></div>
<div class="method">
<div class="method-card"><h3><span class="mono">A&nbsp;&middot;</span> Craft invariants</h3><p>Every estimate is recomputed line by line and tested against ranges observed across our proposal base: estimate granularity, QA and management shares, rate grids, options discipline.</p></div>
<div class="method-card"><h3><span class="mono">B&nbsp;&middot;</span> Unit benchmarks</h3><p>Scale is judged per unit &mdash; hours per domain service, per integration, per app channel &mdash; so a &euro;280k proposal and a &euro;2m programme are compared honestly.</p></div>
<div class="method-card"><h3><span class="mono">C&nbsp;&middot;</span> Both sides of the table</h3><p>We have written winning proposals for vendors for 8 years. We know where risk is parked &mdash; exclusions, acceptance clauses, options &mdash; because we have parked it there ourselves.</p></div>
</div>
</section>
<div class="closing">
<div class="sig">breazu &middot; Independent proposal audit<br><span class="mono">Full audit of this class: &euro;2,500 &middot; 5 business days &middot; report + amendment language + 60-min call</span></div>
<div class="sig" style="text-align:right"><span class="mono">Conflict rule: we never work for both sides<br>of the same deal, and take no referral fees.</span></div>
</div>
<div class="disclaimer">This is a demonstration report. The client, vendor and proposal are synthetic, constructed from defect patterns found across 12+ real proposals we have written or audited.</div>
<a class="backlink" href="index.html">&larr; breazu &mdash; services and pricing</a>
</div>
</body>
</html>